アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。

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

※無効な処理です。というエラーが出ます。

A 回答 (4件)

strQuerySQL = "INSERT INTO テーブル1 (ID, 姓) VALUES (" & Text1 & ", '" & Text2 & "')"



ちくっと訂正!
    • good
    • 2
この回答へのお礼

お世話になっています。

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

お礼日時:2006/08/27 01:15

[エラー箇所]



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 & "#"
    • good
    • 0

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の中にはオブジェクトを入れて動かしたりしてみたのですが上手く動きません。

申し訳ありませんがこちらの方も回答できればよろしくお願い致します。

補足日時:2006/08/26 00:24
    • good
    • 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

この回答への補足

お世話になっています。
迅速な回答ありがとうございます。

教えていただいた内容とURLを見させていただいて
組んでみたのですが以下のエラーが出て登録できません。

[エラー箇所]
Set rs = db.OpenRecordset("ListName")

[エラー内容]
オブジェクト変数またはWithブロック変数が設定されていません。

なにがおかしいのでしょうか?
申し訳ありませんが回答お願い致します。

補足日時:2006/08/26 00:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A