質問編集履歴

5

修正

2016/08/04 00:29

投稿

yyy
yyy

スコア49

test CHANGED
@@ -1 +1 @@
1
- NULLの置換処理
1
+ NULLの処理
test CHANGED
File without changes

4

追記

2016/08/04 00:29

投稿

yyy
yyy

スコア49

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,132 @@
36
36
 
37
37
  ```
38
38
 
39
+ Imports Microsoft.VisualBasic.ControlChars
40
+
41
+ Imports System.Data.OleDb
42
+
43
+
44
+
45
+
46
+
47
+ Public Class Form1
48
+
49
+
50
+
51
+ Private Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\コピー.mdb")
52
+
53
+
54
+
55
+ Private SQLCm As OleDbCommand = Cn.CreateCommand
56
+
57
+ Private Adapter As New OleDbDataAdapter(SQLCm)
58
+
59
+ Private Table As New DataTable
60
+
61
+
62
+
63
+ 'Loadイベント
64
+
65
+ Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
66
+
67
+ '自分で定義した列しかバインドしない
68
+
69
+ DataGridView1.AutoGenerateColumns = False
70
+
71
+ SQLCm.CommandText = "SELECT a, b, c, d, e, f, g, h, IDNo FROM tblL WHERE DELFLG <> TRUE"
72
+
73
+
74
+
75
+ Dim cb As New System.Data.OleDb.OleDbCommandBuilder()
76
+
77
+ Adapter.Fill(Table)
78
+
79
+
80
+
81
+ '▼値の表示
82
+
83
+ DataGridView1.DataSource = Table
84
+
85
+
86
+
87
+
88
+
89
+ End Sub
90
+
91
+
92
+
93
+ '削除
94
+
95
+ Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
96
+
97
+
98
+
99
+ MessageBox.Show("選択したデータを削除してもよろしいですか", "加工ラベル印刷", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
100
+
101
+ Dim i As Integer
102
+
103
+
104
+
105
+ If Windows.Forms.DialogResult.Yes Then
106
+
107
+ For i = DataGridView1.Rows.Count - 1 To 0 Step -1
108
+
109
+ If DataGridView1("a", i).Value = True Then
110
+
111
+ DataGridView1.Rows.RemoveAt(i)
112
+
113
+ End If
114
+
115
+ Next
116
+
117
+
118
+
119
+ End If
120
+
121
+
122
+
123
+ End Sub
124
+
125
+
126
+
127
+ '全選択
128
+
129
+ Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
130
+
131
+ Dim i As Integer
132
+
133
+
134
+
135
+ For i = 0 To DataGridView1.Rows.Count - 1
136
+
137
+ DataGridView1("a", i).Value = True
138
+
139
+ Next
140
+
141
+
142
+
143
+ End Sub
144
+
145
+
146
+
147
+ '全解除
148
+
149
+ Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
150
+
151
+ Dim i As Integer
152
+
153
+
154
+
155
+ For i = 0 To DataGridView1.Rows.Count - 1
156
+
157
+ DataGridView1("a", i).Value = False
158
+
159
+ Next
160
+
161
+
162
+
163
+ End Sub
164
+
39
165
  '閉じる
40
166
 
41
167
  Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

3

訂正

2016/08/03 04:13

投稿

yyy
yyy

スコア49

test CHANGED
File without changes
test CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  NULLに対して以下のような変換をしたい。
10
10
 
11
- 数値型→NULL(0文字列?)
11
+ 数値型→NULL
12
-
12
+
13
- 文字型→String.Empty
13
+ 文字型→String.Empty(0文字列)
14
14
 
15
15
  チェックボックス→FALSE
16
16
 
@@ -216,4 +216,6 @@
216
216
 
217
217
  というようにしたいと考えています。
218
218
 
219
+
220
+
219
221
  これが自分のやりたいことを詳しく説明できているかはちょっとわからないのですが、動作としては上記のようにしたいです。

2

追記

2016/08/03 02:32

投稿

yyy
yyy

スコア49

test CHANGED
File without changes
test CHANGED
@@ -203,3 +203,17 @@
203
203
 
204
204
 
205
205
  その際に、今後何か変更があってもすぐに対応ができるようにVB.NET上でNULLの置換処理をしたいと考えています。
206
+
207
+
208
+
209
+ 見え方としては
210
+
211
+ 数値がNULLの場合→ブランク
212
+
213
+ 文字列がNULLの場合→ブランク
214
+
215
+ チェックボックスがNULLの場合→FALSE
216
+
217
+ というようにしたいと考えています。
218
+
219
+ これが自分のやりたいことを詳しく説明できているかはちょっとわからないのですが、動作としては上記のようにしたいです。

1

追記

2016/08/03 01:34

投稿

yyy
yyy

スコア49

test CHANGED
File without changes
test CHANGED
@@ -29,3 +29,177 @@
29
29
 
30
30
 
31
31
  よろしく願いします。
32
+
33
+
34
+
35
+ ###追記
36
+
37
+ ```
38
+
39
+ '閉じる
40
+
41
+ Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
42
+
43
+ Close()
44
+
45
+ End Sub
46
+
47
+
48
+
49
+ Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
50
+
51
+
52
+
53
+ Dim SQLCm As OleDbCommand = Cn.CreateCommand
54
+
55
+ Dim Table As DataTable = DirectCast(DataGridView1.DataSource, DataTable)
56
+
57
+
58
+
59
+ For Each Row As DataRow In Table.Rows
60
+
61
+
62
+
63
+ Dim SQL As String = ""
64
+
65
+
66
+
67
+
68
+
69
+ '●SQL文の生成
70
+
71
+ Select Case Row.RowState
72
+
73
+
74
+
75
+ Case DataRowState.Added
76
+
77
+ '▼追加されたレコード
78
+
79
+ SQL = "INSERT INTO tblL ( "
80
+
81
+ SQL &= "a" & ", "
82
+
83
+ SQL &= "b" & ", "
84
+
85
+ SQL &= "c" & ", "
86
+
87
+ SQL &= "d" & ", "
88
+
89
+ SQL &= "e" & ", "
90
+
91
+ SQL &= "f" & ", "
92
+
93
+ SQL &= "g" & ", "
94
+
95
+ SQL &= "h" & ") "
96
+
97
+ SQL &= "VALUES" & " ("
98
+
99
+ SQL &= Row("a") & ","
100
+
101
+ SQL &= "'" & Row("b") & "', "
102
+
103
+ SQL &= "'" & Row("c") & "', "
104
+
105
+ SQL &= "'" & Row("d") & "', "
106
+
107
+ SQL &= "'" & Row("e") & "', "
108
+
109
+ SQL &= "'" & Row("f") & "', "
110
+
111
+ SQL &= "'" & Row("g") & "', "
112
+
113
+ SQL &= Row("h")
114
+
115
+ SQL &= ")"
116
+
117
+
118
+
119
+ '▼削除されたレコード
120
+
121
+ Case DataRowState.Deleted
122
+
123
+ SQL = "DELETE FROM tblL WHERE "
124
+
125
+ SQL &= " IDNo = " & Row("IDNo", DataRowVersion.Original)
126
+
127
+
128
+
129
+ '▼更新されたレコード
130
+
131
+ Case DataRowState.Modified
132
+
133
+ SQL = "UPDATE tblL SET"
134
+
135
+ SQL &= " a = " & Row("a") & ", "
136
+
137
+ SQL &= "b = '" & Row("b") & "', "
138
+
139
+ SQL &= "c = '" & Row("c") & "', "
140
+
141
+ SQL &= "d = '" & Row("d") & "', "
142
+
143
+ SQL &= "e = '" & Row("e") & "', "
144
+
145
+ SQL &= "f = '" & Row("f") & "', "
146
+
147
+ SQL &= "g = '" & Row("g") & "', "
148
+
149
+ SQL &= "h = " & Row("h")
150
+
151
+ SQL &= " WHERE "
152
+
153
+ SQL &= "IDNo = " & Row("IDNo", DataRowVersion.Original)
154
+
155
+
156
+
157
+ Case Else
158
+
159
+ Continue For
160
+
161
+
162
+
163
+ End Select
164
+
165
+
166
+
167
+ '●更新実行
168
+
169
+
170
+
171
+ SQLCm.CommandText = SQL
172
+
173
+ Cn.Open()
174
+
175
+ SQLCm.ExecuteNonQuery()
176
+
177
+ Cn.Close()
178
+
179
+
180
+
181
+ Next
182
+
183
+
184
+
185
+ '▼後処理
186
+
187
+ Table.Dispose()
188
+
189
+ Adapter.Dispose()
190
+
191
+ SQLCm.Dispose()
192
+
193
+ Cn.Dispose()
194
+
195
+ ```
196
+
197
+ 上記が作成コードです。
198
+
199
+ Form1のLoadイベントでMDBファイルの取込、展開をしています。
200
+
201
+ Buttonイベントなどももっと上に書いてあるのですが、最終的にClosedイベントが発生したらデータ反映がされるように想定しています。
202
+
203
+
204
+
205
+ その際に、今後何か変更があってもすぐに対応ができるようにVB.NET上でNULLの置換処理をしたいと考えています。