質問編集履歴

3

文を書き足した

2021/07/05 06:47

投稿

Chloe____
Chloe____

スコア3

test CHANGED
@@ -1 +1 @@
1
- 存在すればアプデト、存在しないなら追加す
1
+ **cn** が Nothing というエラーメジが出
test CHANGED
@@ -1,10 +1,24 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 個人情報テーブルからNO00001を取得してもしデータが存在すればアップデートして、存在しない場合は追加する
3
+ 個人情報テーブルからNO 00001を取得して
4
+
5
+ もしデータが存在すればアップデート
6
+
7
+ 存在しない場合は追加する
4
8
 
5
9
 
6
10
 
11
+ ### 発生している問題・エラーメッセージ
7
12
 
13
+
14
+
15
+ ```
16
+
17
+ **cn** が Nothing でした。
18
+
19
+
20
+
21
+ ```
8
22
 
9
23
 
10
24
 
@@ -12,39 +26,87 @@
12
26
 
13
27
 
14
28
 
15
- VB.NET
29
+ ```VB.NET
16
30
 
31
+ '入力チェック
32
+
33
+ If (Label1.Text.Length = 0) Then
34
+
35
+ MsgBox("データ異常")
36
+
37
+ Exit Sub
38
+
39
+ End If
40
+
41
+ 'インスタンス化
42
+
43
+ Dim cn As New clsSQL
44
+
17
- cn._Select("select * from 個人情報 where NO ='00001' order by no")
45
+ 'label1.textに表示されている文字列からstringreaderというインスタンスを作成
46
+
47
+ Dim rs As New System.IO.StringReader(Label1.Text)
48
+
49
+
50
+
51
+ Dim stresult As String = String.Empty
52
+
53
+ '端末まで繰り返す
54
+
55
+ While rs.Peek() > -1
56
+
57
+ 'rs.ReadLine()
58
+
59
+
60
+
61
+ Dim x As String = rs.ReadLine
18
62
 
19
63
 
20
64
 
21
65
 
22
66
 
67
+ Dim 分解() As String = x.Split(","c)
23
68
 
24
69
 
25
70
 
71
+ 'データベースに接続する設定をプロパティにセット
72
+
73
+ cn.ConnectionString = "Data Source=PALNET-D07\SQL2017;Initial Catalog=TestDB;User ID=sa;Password=''"
74
+
75
+
76
+
77
+ 'トランザクション開始
78
+
79
+ cn.BeginTrans()
80
+
81
+
82
+
83
+ '個人情報テーブルからデータ取得
84
+
85
+
86
+
87
+ cn._Select("select * from 個人情報 where NO ='00001' order by no")
26
88
 
27
89
  'もしデータが存在すればUPDATEする
28
90
 
29
91
  If cn.EOF = True Then
30
92
 
93
+ Dim update1 As String = "UPDATE 個人情報テーブル SET no 00001 = no 00001"
31
94
 
32
-
33
- Update() "個人情報" set
95
+ cn._Execute(update1)
34
96
 
35
97
 
36
98
 
99
+ Else
100
+
101
+ '存在しないなら追加する
102
+
103
+ Dim insert1 As String = "insert into 個人情報(NO) values (NO 00001)"
104
+
37
- cn._Execute(Update)
105
+ cn._Execute(insert1)
38
106
 
39
107
 
40
108
 
41
109
  End If
42
-
43
-
44
-
45
-
46
-
47
-
48
110
 
49
111
  '書き込み開始
50
112
 
@@ -80,17 +142,11 @@
80
142
 
81
143
  Console.WriteLine(分解.Length)
82
144
 
145
+ ```
83
146
 
84
147
 
85
148
 
86
149
 
87
- ### 試したこと
88
-
89
- updateでテーブル名を書くとステートメンとの終わりを指定してくださいと出る
90
-
91
- SETを使おうとするとサポートされなくなったと出る
92
-
93
- この文じゃアップデートできないのでしょうか
94
150
 
95
151
 
96
152
 
@@ -98,4 +154,4 @@
98
154
 
99
155
 
100
156
 
101
- ビジュアルスタジオ2019です
157
+ ビジュアルスタジオ2019

2

文を書き足した

2021/07/05 06:47

投稿

Chloe____
Chloe____

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,20 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- データベースに接続して、個人情報テーブルからNO00001というデータを取得してNO00001が存在すればアップデート、ないなら追加したいをレコードがなくなまで繰り返す
3
+ 個人情報テーブルからNO00001を取得してもしデータが存在すればアップデートして存在しない場合は追加
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+ ### 該当のソースコード
12
+
13
+
14
+
15
+ VB.NET
16
+
17
+ cn._Select("select * from 個人情報 where NO ='00001' order by no")
4
18
 
5
19
 
6
20
 
@@ -10,65 +24,17 @@
10
24
 
11
25
 
12
26
 
13
- ### 該当のソスコード
27
+ 'もしデタが存在すればUPDATEする
14
28
 
15
- ```VB.NET
16
-
17
- コード
18
-
19
- ``` 'データベースに接続する設定をプロパティにセット
29
+ If cn.EOF = True Then
20
-
21
- cn.ConnectionString = "Data Source=PALNET-D07\SQL2017;Initial Catalog=TestDB;User ID=sa;Password=''"
22
30
 
23
31
 
24
32
 
25
- 'トランザクション開始
33
+ Update() "個人情報" set
26
-
27
- cn.BeginTrans()
28
34
 
29
35
 
30
36
 
31
- '個人情報テーブルからデータ取得
32
-
33
-
34
-
35
- cn._Select("select * from 個人情報 where NO 00001 order by no")
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
- 'でーたちぇっく
44
-
45
- Dim select1 As String
37
+ cn._Execute(Update)
46
-
47
- select1 = ""
48
-
49
- select1 = select1 & "* "
50
-
51
- select1 = select1 & "FROM 個人情報 "
52
-
53
- select1 = select1 & "WHERE NO 00001 "
54
-
55
-
56
-
57
- 'もしデータが存在すればUPDATEする
58
-
59
- If select1 = True Then
60
-
61
-
62
-
63
- Dim update1 As String
64
-
65
- update1 = ""
66
-
67
- update1 = update1 & "update 個人情報テーブル"
68
-
69
- update1 = update1 & "SET "
70
-
71
- update1 = update1 & "NO = NO 00001"
72
38
 
73
39
 
74
40
 
@@ -77,54 +43,6 @@
77
43
 
78
44
 
79
45
 
80
-
81
- 'レコードが無くなるまで繰り返す
82
-
83
- Do Until cn.EOF
84
-
85
-
86
-
87
-
88
-
89
- 'NOの取得
90
-
91
- cn.Value("NO") = 分解(0)
92
-
93
-
94
-
95
- '氏名の取得
96
-
97
- cn.Value("氏名") = 分解(1)
98
-
99
-
100
-
101
- 'カナの取得
102
-
103
- cn.Value("カナ") = 分解(2)
104
-
105
-
106
-
107
- '生年月日の取得
108
-
109
- cn.Value("生年月日") = 分解(3)
110
-
111
-
112
-
113
- '性別
114
-
115
- cn.Value("性別") = 分解(4)
116
-
117
-
118
-
119
-
120
-
121
- '次のレコードへ移動
122
-
123
- cn.MoveNext()
124
-
125
-
126
-
127
- Loop
128
46
 
129
47
 
130
48
 
@@ -166,4 +84,18 @@
166
84
 
167
85
 
168
86
 
87
+ ### 試したこと
88
+
169
- UPSERTを使うのか条件分岐を使うのか、わからずとりあえず個人情報テーブルのNO00001いうデチェック行いも存在すれば更新するというコードを書きました、まずこのコードで本当にデータがすでに存在しいた場合更新れているのか、そしてここからどのように存在しない場合は追加するというコードを書けばいいのでしょうか教えてもらいたいです
89
+ updateでテーブル名を書くステトメンと終わり指定してくださいと出
90
+
91
+ SETを使おうとするとサポートされなくなったと出る
92
+
93
+ この文じゃアップデートできないのでしょうか
94
+
95
+
96
+
97
+ ### 補足情報(FW/ツールのバージョンなど)
98
+
99
+
100
+
101
+ ビジュアルスタジオ2019です

1

文を書き足した

2021/07/05 05:38

投稿

Chloe____
Chloe____

スコア3

test CHANGED
File without changes
test CHANGED
@@ -33,6 +33,48 @@
33
33
 
34
34
 
35
35
  cn._Select("select * from 個人情報 where NO 00001 order by no")
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ 'でーたちぇっく
44
+
45
+ Dim select1 As String
46
+
47
+ select1 = ""
48
+
49
+ select1 = select1 & "* "
50
+
51
+ select1 = select1 & "FROM 個人情報 "
52
+
53
+ select1 = select1 & "WHERE NO 00001 "
54
+
55
+
56
+
57
+ 'もしデータが存在すればUPDATEする
58
+
59
+ If select1 = True Then
60
+
61
+
62
+
63
+ Dim update1 As String
64
+
65
+ update1 = ""
66
+
67
+ update1 = update1 & "update 個人情報テーブル"
68
+
69
+ update1 = update1 & "SET "
70
+
71
+ update1 = update1 & "NO = NO 00001"
72
+
73
+
74
+
75
+ End If
76
+
77
+
36
78
 
37
79
 
38
80
 
@@ -124,4 +166,4 @@
124
166
 
125
167
 
126
168
 
127
- UPSERTを使うのか条件分岐を使うのか、どんなコードを書のかよくわからないのでご享受いただきたいです
169
+ UPSERTを使うのか条件分岐を使うのか、わからずとりあえず個人情報テーブルのNO00001というデータのチェックを行いもし存在すれば更新するというコードを書きました、まずこコードで本当にデータがすでに存在していた場合更新されているの、そしてここからどのように存在しない場合は追加するというコードを書けばいいのでしょうか教えてもらいたいです