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つのコンボボックスの
選択のみでもサーバへ保存させるにはどのようにすればよいでしょうか?
わかりにくい質問ですみませんが、
ご教示のほど、よろしくお願いいたします。
すみません、コーディングを間違えました。
また、それぞれの値は、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
たびたびすみません。よろしくお願いします。
> 3つのコンボボックスすべてに値を入れないと、エラーが返ってきます。
設計側の問題かもしれませんが、
MySQLサーバ側に、そのような登録方法を許されていますか?
エラーメッセージが提示されていないので、予測でしかありませんが。
>いな様
ご回答ありがとうございます。
エラーメッセージを書くのを忘れていました。
実行時エラー'-2147352571(800200005)'
"種類が一致しません"
と表示されます。
これはテーブル側の設定に問題があるからでしょうか?
NULLは許可しているんですが。。
> NULLは許可しているんですが。。
NULLを許可しているということであれば、
から文字列("")は
if cmb_2.Text <> vbNullstring then
rs!test2 = cmb_2.Text '「2」をセット
Else
rs!test2 = NULL
End if
と言うように、nullとは分けて考えないといけないと思いますよ?
ツイート | ![]() |