回答編集履歴

2

C# と VB\.NET のコードを併記

2016/10/03 02:15

投稿

退会済みユーザー
test CHANGED
@@ -98,15 +98,29 @@
98
98
 
99
99
 
100
100
 
101
- (4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。
101
+ (4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。(訂正:C# と VB.NET のコードを併記しました)
102
102
 
103
103
 
104
104
 
105
+ C#
106
+
105
107
  ```
106
108
 
107
- e.Command.Parameters["@point"].Value = point
109
+ e.Command.Parameters["@point"].Value = point;
108
110
 
109
- e.Command.Parameters["@date"].Value = dtToday
111
+ e.Command.Parameters["@date"].Value = dtToday;
112
+
113
+ ```
114
+
115
+
116
+
117
+ VB.NET
118
+
119
+ ```
120
+
121
+ e.Command.Parameters("@point").Value = point
122
+
123
+ e.Command.Parameters("@date").Value = dtToday
110
124
 
111
125
  ```
112
126
 

1

具体的方法の追記

2016/10/03 02:15

投稿

退会済みユーザー
test CHANGED
@@ -35,3 +35,95 @@
35
35
 
36
36
 
37
37
  そういうことをするのは全くの見当違いです。
38
+
39
+
40
+
41
+ 【2016/10/3 10:50 追記】
42
+
43
+
44
+
45
+ 先の私の 2016/10/02 18:42 のコメントで書いた件の具体的な方法を追記します。
46
+
47
+
48
+
49
+ コメントで、
50
+
51
+
52
+
53
+ > FormView.ItemUpdating イベントでも渡せないか考えてみます
54
+
55
+
56
+
57
+ と書きましたが、直感的でなく混乱しそうなので、SqlDataSource.Updating イベントのハンドラで point と date のパラメータを渡すやり方を説明します。(FormView1_ItemUpdating メソッドは一切使いません)
58
+
59
+
60
+
61
+ (1) SqlDataSource の UpdateCommand に設定した UPADTE クエリに [point]=@point, [date]=@date を追加。以下のような感じです。
62
+
63
+
64
+
65
+ ```
66
+
67
+ UpdateCommand="UPDATE [tbl_testRg] SET [result1] = @result1, [result2] = @result2,
68
+
69
+         [result3] = @result3, [result4] = @result4, [result5] = @result5,
70
+
71
+ [point]=@point, [date]=@date WHERE [ID] = @ID">
72
+
73
+ ```
74
+
75
+
76
+
77
+ (場所は分かりますよね? FormView1_ItemUpdating メソッドの中の strSQL ではありませんよ)
78
+
79
+
80
+
81
+ (2) SqlDataSource の UpdateParameters に以下 Parameter を追加。上記 (1) のようなクエリにしたとすると以下のようになるはずです。
82
+
83
+
84
+
85
+ ```
86
+
87
+ <asp:Parameter Name="point" Type="Int32" />
88
+
89
+ <asp:Parameter Name="date" Type="DateTime" />
90
+
91
+
92
+
93
+ ```
94
+
95
+
96
+
97
+ (3) SqlDataSource.Updating イベントのハンドラ(メソッド)を作成。その中で FormView1_ItemUpdating メソッドの修正版で行ったように、FindControl で DropDownList を取得し、SelectedValue を取得し、point を計算する。
98
+
99
+
100
+
101
+ (4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。
102
+
103
+
104
+
105
+ ```
106
+
107
+ e.Command.Parameters["@point"].Value = point
108
+
109
+ e.Command.Parameters["@date"].Value = dtToday
110
+
111
+ ```
112
+
113
+
114
+
115
+ (5) FormView1_ItemUpdating メソッドは不要なので削除(とりあえずコメントアウトしてください)。
116
+
117
+
118
+
119
+ 上記は頭の中で考えただけで、当方では検証してません(できません)。質問者さんの方でやってみて結果を連絡ください。
120
+
121
+
122
+
123
+ <追加情報>
124
+
125
+ 今回の問題とは直接関係ないことですが・・・
126
+
127
+ 最初の質問の画像を見ると ID フィールド以外は NULL 可になっているようです。実際にデータに NULL があると今のやり方では破綻するので注意してください。NULL にする必要がない限り NULL 不可にすることをお勧めします。
128
+
129
+