• ベストアンサー

テキストボックスに入れた内容を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 ※無効な処理です。というエラーが出ます。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.4

strQuerySQL = "INSERT INTO テーブル1 (ID, 姓) VALUES (" & Text1 & ", '" & Text2 & "')" ちくっと訂正!

eiki0520
質問者

お礼

お世話になっています。 アドバイス通りにすればテキストボックスに入力した値をAccessに登録することができました。 本当にありがとうございます。

その他の回答 (3)

noname#22222
noname#22222
回答No.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 & "#"

noname#22222
noname#22222
回答No.2

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

eiki0520
質問者

補足

お世話になっております。 迅速な回答ありがとうございます。 教えていただいたとおりに組んでみたら以下のエラーになりました。 [エラー箇所] Set rstListname = dbs.OpenRecordset("Listname", dbOpenTable) [エラー内容] オブジェクトが必要です。 申し訳ありませんが回答お願い致します。 またInsert文を使う方法ですとソース上にアクセスに 登録する項目値をベタ書きすれば上手く動きましたが テキストボックスに入っている値をInsertしようとすると上手く動きません。VALUESの中にはオブジェクトを入れて動かしたりしてみたのですが上手く動きません。 申し訳ありませんがこちらの方も回答できればよろしくお願い致します。

  • gori8063
  • ベストアンサー率36% (116/319)
回答No.1

レコードセット作って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:
http://www.accessclub.jp/dao/12.html
eiki0520
質問者

補足

お世話になっています。 迅速な回答ありがとうございます。 教えていただいた内容とURLを見させていただいて 組んでみたのですが以下のエラーが出て登録できません。 [エラー箇所] Set rs = db.OpenRecordset("ListName") [エラー内容] オブジェクト変数またはWithブロック変数が設定されていません。 なにがおかしいのでしょうか? 申し訳ありませんが回答お願い致します。