複数のコンボボックスを処理するには?


カス  2009-08-19 18:36:37  No: 101937

vb6.0初心者です。
いつも拝見しております。

ただいま、フォーム上には3つのコンボボックス「cmb_1」「cmb_2」「cmb_3」
1つのボタン「cmd_save」があるフォームを作成しており、
各コンボボックスで値を選択した後、保存ボタンをクリックすると
サーバへ保存されるシステムを作成中です。

今現在、コンボボックスで値を選択した後、保存ボタンを押すと
MySQLサーバへ値が保存されるところまではできたのですが、
3つのコンボボックスすべてに値を入れないと、エラーが返ってきます。
つまり、ひとつ、ふたつのコンボボックスのみの値の選択ができません。

コードは以下のとおりになります。

Private Sub cmd_save_Click()
  Dim cn As ADODB.Connection
  Dim rs As ADODB.Recordset
     
  Set cn = New ADODB.Connection
  Set rs = New ADODB.Recordset

  Dim strTBL As Variant
  
  strTBL = "test"  'テーブル名
  
   'Mysqlへ接続
cn.Open "Driver={MySQL ODBC 3.51 Driver};SERVER = testserv;DATABASE=testdb;UID=aaaa;PWD=1234;"

   'テーブルを開く
   rs.Open strTBL, cn, adOpenForwardOnly, adLockOptimistic, adCmdTable

  rs.AddNew                       '新規レコードを追加
  rs!job1 = cmb_job1.Text           '「ジョブ1」をセット
  rs!job2 = cmb_job2.Text           '「ジョブ2」をセット
  rs!job3 = cmb_job2.Text           '「ジョブ3」をセット  
  
  rs.Update                         '更新(保存)
  rs!job1 = cmb_job1.Text           '「ジョブ1」をセット
  rs!job2 = cmb_job2.Text           '「ジョブ2」をセット
  rs!job3 = cmb_job2.Text           '「ジョブ3」をセット
  
 cn.Close

   Set cn = Nothing
   Set rs = Nothing
   

    MsgBox "保存完了", vbOKOnly, "保存"

End Sub

なぜ注意されているのかは検討できましたが、なにぶん初心者なので
どのように追加コーディングをしていいのかわかりません。

3つのコンボボックス中、1つ、または2つのコンボボックスの
選択のみでもサーバへ保存させるにはどのようにすればよいでしょうか?

わかりにくい質問ですみませんが、
ご教示のほど、よろしくお願いいたします。


カス  2009-08-19 19:04:51  No: 101938

すみません、コーディングを間違えました。
また、それぞれの値は、test1,test2,test3に保存

Private Sub cmd_save_Click()
  Dim cn As ADODB.Connection
  Dim rs As ADODB.Recordset
     
  Set cn = New ADODB.Connection
  Set rs = New ADODB.Recordset

  Dim strTBL As Variant
  
  strTBL = "test"  'テーブル名
  
   'Mysqlへ接続
cn.Open "Driver={MySQL ODBC 3.51 Driver};SERVER = testserv;DATABASE=testdb;UID=aaaa;PWD=1234;"

   'テーブルを開く
   rs.Open strTBL, cn, adOpenForwardOnly, adLockOptimistic, adCmdTable

  rs.AddNew                       '新規レコードを追加
  rs!test1 = cmb_1.Text           '「1」をセット
  rs!test2 = cmb_2.Text           '「2」をセット
  rs!test3 = cmb_3.Text           '「3」をセット  
  
  rs.Update                         '更新(保存)
  rs!test1 = cmb_1.Text           '「1」をセット
  rs!test2 = cmb_2.Text           '「2」をセット
  rs!test3 = cmb_3.Text           '「3」をセット
  
 cn.Close

   Set cn = Nothing
   Set rs = Nothing
   

    MsgBox "保存完了", vbOKOnly, "保存"

End Sub

たびたびすみません。よろしくお願いします。


いな  2009-08-19 19:36:28  No: 101939

> 3つのコンボボックスすべてに値を入れないと、エラーが返ってきます。

設計側の問題かもしれませんが、
MySQLサーバ側に、そのような登録方法を許されていますか?
エラーメッセージが提示されていないので、予測でしかありませんが。


カス  2009-08-19 21:09:35  No: 101940

>いな様

ご回答ありがとうございます。

エラーメッセージを書くのを忘れていました。
実行時エラー'-2147352571(800200005)'
"種類が一致しません"
と表示されます。

これはテーブル側の設定に問題があるからでしょうか?
NULLは許可しているんですが。。


いな  2009-08-20 02:18:03  No: 101941

> NULLは許可しているんですが。。

NULLを許可しているということであれば、
から文字列("")は
if cmb_2.Text <> vbNullstring then
    rs!test2 = cmb_2.Text           '「2」をセット
Else
    rs!test2 = NULL
End if

と言うように、nullとは分けて考えないといけないと思いますよ?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加