はじめまして。
今回の質問なのですが、ViewStateに更新日時を保持し、後で、排他処理のため、ストアドプロシージャーで排他処理をしたいと思っています。
とりあえず、Page_Load時に、「ViewState["haita"] = (DateTime)dtTemp.Rows[0]["更新日時"]」という風にdatatableから更新日時を取得します。そして、更新ボタンクリックで
「SqlParameter p11 = cmd.Parameters.Add("@haita",System.Data.SqlDbType.DateTime);
p11.Value = ViewState["haita"];」
としてストアドプロシージャーの中で排他処理を行いたいのですが、どうもViewStateでデータの比較ができてないみたいです。
ちなみにストアドの中身は、
CREATE PROCEDURE AA_Table
@haita datetime
AS
SELECT * FROM M_科目マスタ
WHERE コースコード=@couse
AND 科目コード=@k_kode
AND 年度=@nendo AND 年次=@nenji
AND 更新日時=@haita
IF @@ROWCOUNT<1
BEGIN
RETURN(-1)
END
ELSE
BEGIN
UPDATE M_科目マスタ
SET
科目名 = @k_name,
科目名略称 = @k_ryaku,
科目責任者 = @k_Person,
単位 = @tani,
更新日時 = @up,
更新ユーザー名 = @koushinsya
WHERE
コースコード = @couse AND 年度 = @nendo AND 年次 = @nenji AND 科目コード = @k_kode
RETURN(0)
END
GO
です。
どうやってもRETURN(-1)が返ってきてしまいます。
どなたか、参考になる意見お願いします!
No.2ベストアンサー
- 回答日時:
ポイントですが、C#の問題というより、
SQL ServerのSQLの問題のような気がしてきました。
# 特に使用データベース製品名が記載されておりませんが、
C#の使用している名前空間とストアドのSQLを見ている限り、
SQL Serverとほぼ断定させて頂きましたが。
また、C#側でストアドの引数@haitaを渡すところは特に問題
なさそうなので、
まず、ストアドを下記のようにしてみてください。
(質問の分類がC#ではなく、SQL Serverの回答となってしまって申し訳ないのですが)
CREATE PROCEDURE AA_Table
@haita datetime
AS
declare @cnt int
SELECT @cnt = count(*) FROM M_科目マスタ
WHERE コースコード=@couse
AND 科目コード=@k_kode
AND 年度=@nendo AND 年次=@nenji
AND 更新日時=@haita
IF @cnt < 1
BEGIN
RETURN(-1)
END
ELSE
BEGIN
UPDATE M_科目マスタ
SET
科目名 = @k_name,
科目名略称 = @k_ryaku,
科目責任者 = @k_Person,
単位 = @tani,
更新日時 = @up,
更新ユーザー名 = @koushinsya
WHERE
コースコード = @couse AND 年度 = @nendo AND 年次 = @nenji AND 科目コード = @k_kode
RETURN(0)
END
GO
それでもダメなら、他の問題が考えられるため、別途、ご相談下さい。
No.1
- 回答日時:
単純に、
p11.Value = ViewState["haita"];
が、
p11.Value = Convert.ToDateTime(ViewState["haita"]);
または、
p11.Value = (DateTime)ViewState["haita"];
または、
p11.Value = ViewState["haita"] as DateTime;
がすべき話ではないのでしょうか?
また、ViewState["haita"]の内容がNULLでないことをデバッグ
等で確認してみて下さい。
もし、NULLが入っているんであれば、
if ( ViewState["haita"] == null ) で事前チェックが必要な
気がします.....
この回答への補足
やはり駄目でした。
データベースに更新日時を登録する時、というのがおかしいのでしょうか?
SqlParameter p9 = cmd.Parameters.Add("@up",System.Data.SqlDbType.DateTime);
p9.Value = DateTime.Now;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) Excel VBA マクロ ホルダー内にある複数のファイルを規則に従い格納をしたいです 4 2022/11/19 10:58
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- その他(メンタルヘルス) 私は精神障害で精神科に通院して障害年金2級を貰っています。最後の更新から2年目で今まで通院してしてい 7 2023/02/15 17:22
- Visual Basic(VBA) エクセル VBA 難しいです 1 2023/02/21 15:39
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Excel(エクセル) ネットワーク上のエクセルとリンクしている時にデータ更新をvbaで、refresh Allで行う場合の 2 2023/04/10 05:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
VBAでファイルオープン後にコー...
-
ExcelのVBAコードについて教え...
-
Exel VBA 別ブックから該当デ...
-
sinカーブの表示のさせ方
-
Excel VBA 空白をセルを探して...
-
VB2005 TextBoxの入力制...
-
パイソン。スクレイピング。Chr...
-
vc++6.0でのエラー
-
CheckBoxのコントロール配列に...
-
エクセルに見えない文字(JISX0...
-
コンボボックス3つを連動させたい
-
ACCESSでの得意先情報・納品書...
-
COBOLについて
-
UWSCでMOUSEORG関数が上手く処...
-
COBOLの文法
-
VBAのフィルター操作
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
エクセルVBAコードで教えて下さ...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
access2021 VBA メソッドまたは...
-
PreviewKeyDownイベントが2回...
-
JANコードとPOSコードは同じ?
-
過剰なオブジェクト指向脳から...
-
特定行の背景色を変えたいのですが
-
ACCESSユニオンクエリでORDER B...
-
変数名「cur」について
-
Nullの使い方が不正です。
-
◾️Excel VBA 統合について Cons...
-
欠番の抽出について
-
VBA リストボックス(複数条件...
-
ACCESSで、履歴事項を管理する...
おすすめ情報