ソースプログラム
MySQLからワークシートに個人情報や会社情報を読み込みましたのでワークシート からMySQLのレコードを更新したり、ワークシートに追加したデータをMySQLに追加登録できれば便利だと誰でも考えます。
レコードを追加するには前回の例のようにダイアログから入力することもできますが、更新となると対象となるレコードを読出し、レコードのどのフィールドを対象とするかを特定しなければなりません。
更新するためのupdate文はUPDATE テーブル名 SET 更新内容 WHERE 条件;つまり、どのフィールドのデータを更新するかを指定しなければなりません。
あまり複雑な処理は講義の範疇ではありませんので、簡単な処理で実現することにしましょう。ワークシートにレコードが表示されていますので、ワークシート上でデータを書き換えたり追加したりします。
次にワークシートのレコードを一つずつ取り出してMySQLのテーブルに保存します。
この時にMySQLのinsert文で処理すると同じレコードが幾つも追加されてしまいますから、SQLを実行する前に対象とするテーブルのレコードを一度削除してしまいます。
そして、改めてinsert文で全レコードをテーブルに書き込みます。このようにすれば一つの処理で更新や変更、追加などをすることができます。
ただし、レコードが膨大になると探すのに苦労しますが、Excelのワークシートにはソートや検索機能も備わっておりますから、わざわざプログラムを作成するまでもないでしょう。個人情報シートの更新・登録ボタン
各シートの「会社コード」のセルの書式を文字列にしておきます。
個人情報シートにコントロールボタンとラベルを一つずつ貼り付け、 ボタンのオブジェクト名を「btn個人更新」、Captionを「テーブル更新・登録」とします。
個人情報に貼り付けたボタンをダブルクリックしてコードウィンドウを開き、次のプログラムコードを記述します。
01:Private Sub btn個人更新_Click() 02: Dim name, zip, address, tel, K_code As String 03: Dim statements As Integer 04: Dim sql_string As String 05: 06: statements = Database_open 07: If (statements <> 0) Then 08: Exit Sub 09: End If 10: sql_string = "DELETE FROM addresstb2;" 11: connect.Execute (sql_string) 12: 13: Range("B3").Select 14: name = ActiveCell.Value 15: 16: Do While name <> "" 'nameフィールドが空白でなければ 17: 18: ActiveCell.Offset(0, 1).Activate 19: zip = ActiveCell.Value 20: ActiveCell.Offset(0, 1).Activate 21: address = ActiveCell.Value 22: ActiveCell.Offset(0, 1).Activate 23: tel = ActiveCell.Value 24: ActiveCell.Offset(0, 1).Activate 25: K_code = ActiveCell.Value 26: sql_string = "INSERT INTO addresstb2 VALUES ( " 27: With Sheet2 28: sql_string = sql_string & "'" & name 29: sql_string = sql_string & "','" & zip 30: sql_string = sql_string & "','" & address 31: sql_string = sql_string & "','" & tel 32: sql_string = sql_string & "','" & K_code 33: sql_string = sql_string & "')" 34: End With 35: 36: connect.Execute (sql_string) 37: ActiveCell.Offset(1, -4).Activate 38: name = ActiveCell.Value 39: Loop 40: 41: statements = Database_close 42: 43: If (statements = 0) Then 44: Label1.ForeColor = &HFF& 45: Label1.Caption = "テーブルを更新しました。" 46: Else 47: Label1.ForeColor = &HFF& 48: Label1.Caption = "テーブルを更新出来ません。" 49: End If 50: 51:End Sub会社情報シートの更新・登録ボタン
同様に会社情報シートにコントロールボタンとラベルを一つずつ貼り付け、 ボタンのオブジェクト名を「btn会社更新」、Captionを「テーブル更新・登録」とします。
会社情報に貼り付けたボタンをダブルクリックしてコードウィンドウを開き、次のプログラムコードを記述します。
01:Private Sub btn会社更新_Click() 02: Dim K_code, name, zip, address, tel As String 03: Dim statements As Integer 04: Dim sql_string As String 05: 06: statements = Database_open 07: If (statements <> 0) Then 08: Exit Sub 09: End If 10: sql_string = "DELETE FROM k_addresstb;" 11: connect.Execute (sql_string) 12: 13: Range("B3").Select 14: K_code = ActiveCell.Value 15: 16: Do While K_code <> "" 'nameフィールドが空白でなければ 17: 18: ActiveCell.Offset(0, 1).Activate 19: name = ActiveCell.Value 20: ActiveCell.Offset(0, 1).Activate 21: zip = ActiveCell.Value 22: ActiveCell.Offset(0, 1).Activate 23: address = ActiveCell.Value 24: ActiveCell.Offset(0, 1).Activate 25: tel = ActiveCell.Value 26: 27: sql_string = "INSERT INTO k_addresstb VALUES ( " 28: With Sheet3 29: sql_string = sql_string & "'" & K_code 30: sql_string = sql_string & "','" & name 31: sql_string = sql_string & "','" & zip 32: sql_string = sql_string & "','" & address 33: sql_string = sql_string & "','" & tel 34: sql_string = sql_string & "')" 35: End With 36: 37: connect.Execute (sql_string) 38: ActiveCell.Offset(1, -4).Activate 39: K_code = ActiveCell.Value 40: 41: Loop 42: 43: statements = Database_close 44: If (statements = 0) Then 45: Label1.ForeColor = &HFF& 46: Label1.Caption = "テーブルを更新しました。" 47: Else 48: Label1.ForeColor = &HFF& 49: Label1.Caption = "テーブルを更新出来ません。" 50: End If 51:End Sub
![]()
![]()
![]()
© AstroHeart. All Rights Reserved.