teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

修正

2016/08/04 00:29

投稿

yyy
yyy

スコア49

title CHANGED
@@ -1,1 +1,1 @@
1
- NULLの置換処理
1
+ NULLの処理
body CHANGED
File without changes

4

追記

2016/08/04 00:29

投稿

yyy
yyy

スコア49

title CHANGED
File without changes
body CHANGED
@@ -17,6 +17,69 @@
17
17
 
18
18
  ###追記
19
19
  ```
20
+ Imports Microsoft.VisualBasic.ControlChars
21
+ Imports System.Data.OleDb
22
+
23
+
24
+ Public Class Form1
25
+
26
+ Private Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\コピー.mdb")
27
+
28
+ Private SQLCm As OleDbCommand = Cn.CreateCommand
29
+ Private Adapter As New OleDbDataAdapter(SQLCm)
30
+ Private Table As New DataTable
31
+
32
+ 'Loadイベント
33
+ Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
34
+ '自分で定義した列しかバインドしない
35
+ DataGridView1.AutoGenerateColumns = False
36
+ SQLCm.CommandText = "SELECT a, b, c, d, e, f, g, h, IDNo FROM tblL WHERE DELFLG <> TRUE"
37
+
38
+ Dim cb As New System.Data.OleDb.OleDbCommandBuilder()
39
+ Adapter.Fill(Table)
40
+
41
+ '▼値の表示
42
+ DataGridView1.DataSource = Table
43
+
44
+
45
+ End Sub
46
+
47
+ '削除
48
+ Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
49
+
50
+ MessageBox.Show("選択したデータを削除してもよろしいですか", "加工ラベル印刷", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
51
+ Dim i As Integer
52
+
53
+ If Windows.Forms.DialogResult.Yes Then
54
+ For i = DataGridView1.Rows.Count - 1 To 0 Step -1
55
+ If DataGridView1("a", i).Value = True Then
56
+ DataGridView1.Rows.RemoveAt(i)
57
+ End If
58
+ Next
59
+
60
+ End If
61
+
62
+ End Sub
63
+
64
+ '全選択
65
+ Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
66
+ Dim i As Integer
67
+
68
+ For i = 0 To DataGridView1.Rows.Count - 1
69
+ DataGridView1("a", i).Value = True
70
+ Next
71
+
72
+ End Sub
73
+
74
+ '全解除
75
+ Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
76
+ Dim i As Integer
77
+
78
+ For i = 0 To DataGridView1.Rows.Count - 1
79
+ DataGridView1("a", i).Value = False
80
+ Next
81
+
82
+ End Sub
20
83
  '閉じる
21
84
  Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
22
85
  Close()

3

訂正

2016/08/03 04:13

投稿

yyy
yyy

スコア49

title CHANGED
File without changes
body CHANGED
@@ -3,8 +3,8 @@
3
3
  上記の内容が通るコードを書けるようになったのですが、今度はNULLの置換処理が必要なようで、困っています。
4
4
 
5
5
  NULLに対して以下のような変換をしたい。
6
- 数値型→NULL(0文字列?)
6
+ 数値型→NULL
7
- 文字型→String.Empty
7
+ 文字型→String.Empty(0文字列)
8
8
  チェックボックス→FALSE
9
9
 
10
10
  また、置換の書き方もよくわかっていないので教えていただけると嬉しいです。
@@ -107,4 +107,5 @@
107
107
  文字列がNULLの場合→ブランク
108
108
  チェックボックスがNULLの場合→FALSE
109
109
  というようにしたいと考えています。
110
+
110
111
  これが自分のやりたいことを詳しく説明できているかはちょっとわからないのですが、動作としては上記のようにしたいです。

2

追記

2016/08/03 02:32

投稿

yyy
yyy

スコア49

title CHANGED
File without changes
body CHANGED
@@ -100,4 +100,11 @@
100
100
  Form1のLoadイベントでMDBファイルの取込、展開をしています。
101
101
  Buttonイベントなどももっと上に書いてあるのですが、最終的にClosedイベントが発生したらデータ反映がされるように想定しています。
102
102
 
103
- その際に、今後何か変更があってもすぐに対応ができるようにVB.NET上でNULLの置換処理をしたいと考えています。
103
+ その際に、今後何か変更があってもすぐに対応ができるようにVB.NET上でNULLの置換処理をしたいと考えています。
104
+
105
+ 見え方としては
106
+ 数値がNULLの場合→ブランク
107
+ 文字列がNULLの場合→ブランク
108
+ チェックボックスがNULLの場合→FALSE
109
+ というようにしたいと考えています。
110
+ これが自分のやりたいことを詳しく説明できているかはちょっとわからないのですが、動作としては上記のようにしたいです。

1

追記

2016/08/03 01:34

投稿

yyy
yyy

スコア49

title CHANGED
File without changes
body CHANGED
@@ -13,4 +13,91 @@
13
13
  列の型を調べて、置換の際に型指定が必要なようなのですが、そちらもやり方が出来ていません。
14
14
  なんとなくでも言いたいことがわかる、という方がいらっしゃいましたら教えてください。
15
15
 
16
- よろしく願いします。
16
+ よろしく願いします。
17
+
18
+ ###追記
19
+ ```
20
+ '閉じる
21
+ Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
22
+ Close()
23
+ End Sub
24
+
25
+ Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
26
+
27
+ Dim SQLCm As OleDbCommand = Cn.CreateCommand
28
+ Dim Table As DataTable = DirectCast(DataGridView1.DataSource, DataTable)
29
+
30
+ For Each Row As DataRow In Table.Rows
31
+
32
+ Dim SQL As String = ""
33
+
34
+
35
+ '●SQL文の生成
36
+ Select Case Row.RowState
37
+
38
+ Case DataRowState.Added
39
+ '▼追加されたレコード
40
+ SQL = "INSERT INTO tblL ( "
41
+ SQL &= "a" & ", "
42
+ SQL &= "b" & ", "
43
+ SQL &= "c" & ", "
44
+ SQL &= "d" & ", "
45
+ SQL &= "e" & ", "
46
+ SQL &= "f" & ", "
47
+ SQL &= "g" & ", "
48
+ SQL &= "h" & ") "
49
+ SQL &= "VALUES" & " ("
50
+ SQL &= Row("a") & ","
51
+ SQL &= "'" & Row("b") & "', "
52
+ SQL &= "'" & Row("c") & "', "
53
+ SQL &= "'" & Row("d") & "', "
54
+ SQL &= "'" & Row("e") & "', "
55
+ SQL &= "'" & Row("f") & "', "
56
+ SQL &= "'" & Row("g") & "', "
57
+ SQL &= Row("h")
58
+ SQL &= ")"
59
+
60
+ '▼削除されたレコード
61
+ Case DataRowState.Deleted
62
+ SQL = "DELETE FROM tblL WHERE "
63
+ SQL &= " IDNo = " & Row("IDNo", DataRowVersion.Original)
64
+
65
+ '▼更新されたレコード
66
+ Case DataRowState.Modified
67
+ SQL = "UPDATE tblL SET"
68
+ SQL &= " a = " & Row("a") & ", "
69
+ SQL &= "b = '" & Row("b") & "', "
70
+ SQL &= "c = '" & Row("c") & "', "
71
+ SQL &= "d = '" & Row("d") & "', "
72
+ SQL &= "e = '" & Row("e") & "', "
73
+ SQL &= "f = '" & Row("f") & "', "
74
+ SQL &= "g = '" & Row("g") & "', "
75
+ SQL &= "h = " & Row("h")
76
+ SQL &= " WHERE "
77
+ SQL &= "IDNo = " & Row("IDNo", DataRowVersion.Original)
78
+
79
+ Case Else
80
+ Continue For
81
+
82
+ End Select
83
+
84
+ '●更新実行
85
+
86
+ SQLCm.CommandText = SQL
87
+ Cn.Open()
88
+ SQLCm.ExecuteNonQuery()
89
+ Cn.Close()
90
+
91
+ Next
92
+
93
+ '▼後処理
94
+ Table.Dispose()
95
+ Adapter.Dispose()
96
+ SQLCm.Dispose()
97
+ Cn.Dispose()
98
+ ```
99
+ 上記が作成コードです。
100
+ Form1のLoadイベントでMDBファイルの取込、展開をしています。
101
+ Buttonイベントなどももっと上に書いてあるのですが、最終的にClosedイベントが発生したらデータ反映がされるように想定しています。
102
+
103
+ その際に、今後何か変更があってもすぐに対応ができるようにVB.NET上でNULLの置換処理をしたいと考えています。