- ベストアンサー
テキストボックスに入れた内容をAccessのテーブルに登録する方法を教えてください。
はじめまして。 VBでフォームに作ったテキストボックス(text1、text2、text3)に値を入れてコマンドボタンを押したらAccessのテーブルに値を登録できるようにしたいのですが上手くいきません。自分で調べながらコーディングしたのですが上手く動かずどうすれば動くのかVBのコーディングを教えていただきたいです。よろしくお願いします。 [Accessのファイル名] db1.mdb [db1.mdbのテーブル名] ListName [ListNameの各項目] 名前、住所、生年月日 [VBのフォーム] text1.textbox、text2.textbox、text3.textbox Add.command [コーディングの内容] Microsoft DAO 3.6 Object Library参照設定 Private Sub Add_Click() Dim strSQL As String Dim dbName As String Dim dbs As DAO.Database Dim myset As DAO.Recordset Dim ws As DAO.Workspace Set ws = DBEngine.Workspaces(0) Set dbs = ws.OpenDatabase("C:\db1.mdb") If Dir("C:\db1.mdb") <> "" Then strSQL = "INSERT INTO Listname (名前,生年月日, _ 住所) values(text1.text, text2.text, text3.text)" Me.AutoRedraw = True Set myset = dbs.OpenRecordset(strSQL) End If End Sub ※無効な処理です。というエラーが出ます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
strQuerySQL = "INSERT INTO テーブル1 (ID, 姓) VALUES (" & Text1 & ", '" & Text2 & "')" ちくっと訂正!
その他の回答 (3)
[エラー箇所] Set rstListname = dbs.OpenRecordset("Listname", dbOpenTable) バグ dbsCurrent.・・・・ Private Sub Command1_Click() Dim dbsCurrent As DAO.Database Dim strQuerySQL AS String strQuerySQL = "INSERT INTO テーブル1 (ID, 姓) VALUES (Text1, '" & Text2 & "')" Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase("C:\Temp\db1.mdb") dbsCurrent.Execute strQuerySQL dbsCurrent.Close End Sub 数字は TextBoxName 文字は "'" & TextBoxName & "'" 日付は "#" & TextBoxName & "#"
Private Sub Add_Click() Dim strSQL As String Dim dbName As String Dim dbsCurrent As DAO.Database Dim rstListname As DAO.Recordset If Dir("C:\db1.mdb") <> "" Then Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase("C:\db1.mdb") Set rstListname = dbs.OpenRecordset("Listname", dbOpenTable) With rstMyset .AddNew .Fields("名前")= Text1 .Fields("生年月日")= CDate(Text2) .Fields("住所")= Text3 .Update End With rstListName.Close dbsCurrent.Close End If End Sub .Fields("生年月日")= CDate(Text1) <-- "#" & Text1 & "#" かちと怪しい! Insert文を使う場合は、 Private Sub Command1_Click() Dim dbsCurrent As DAO.Database Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase("C:\Temp\db1.mdb") dbsCurrent.Execute "INSERT INTO テーブル1 (ID, 姓) VALUES (4, '金子')" dbsCurrent.Close End Sub
補足
お世話になっております。 迅速な回答ありがとうございます。 教えていただいたとおりに組んでみたら以下のエラーになりました。 [エラー箇所] Set rstListname = dbs.OpenRecordset("Listname", dbOpenTable) [エラー内容] オブジェクトが必要です。 申し訳ありませんが回答お願い致します。 またInsert文を使う方法ですとソース上にアクセスに 登録する項目値をベタ書きすれば上手く動きましたが テキストボックスに入っている値をInsertしようとすると上手く動きません。VALUESの中にはオブジェクトを入れて動かしたりしてみたのですが上手く動きません。 申し訳ありませんがこちらの方も回答できればよろしくお願い致します。
- gori8063
- ベストアンサー率36% (116/319)
レコードセット作ってaddnewするのが一般的かと思いますが。 Set db = CurrentDb() Set rs = db.OpenRecordset("ListName") (空白などの条件づけして適切な内容かを取捨選択) rs.AddNew rs!名前 = text1.text rs!住所 = text2.text rs!生年月日 = text3.text rs.Update rs.close db.close
補足
お世話になっています。 迅速な回答ありがとうございます。 教えていただいた内容とURLを見させていただいて 組んでみたのですが以下のエラーが出て登録できません。 [エラー箇所] Set rs = db.OpenRecordset("ListName") [エラー内容] オブジェクト変数またはWithブロック変数が設定されていません。 なにがおかしいのでしょうか? 申し訳ありませんが回答お願い致します。
お礼
お世話になっています。 アドバイス通りにすればテキストボックスに入力した値をAccessに登録することができました。 本当にありがとうございます。