はじめまして。
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
※無効な処理です。というエラーが出ます。
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 & "#"
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
この回答への補足
お世話になっております。
迅速な回答ありがとうございます。
教えていただいたとおりに組んでみたら以下のエラーになりました。
[エラー箇所]
Set rstListname = dbs.OpenRecordset("Listname", dbOpenTable)
[エラー内容]
オブジェクトが必要です。
申し訳ありませんが回答お願い致します。
またInsert文を使う方法ですとソース上にアクセスに
登録する項目値をベタ書きすれば上手く動きましたが
テキストボックスに入っている値をInsertしようとすると上手く動きません。VALUESの中にはオブジェクトを入れて動かしたりしてみたのですが上手く動きません。
申し訳ありませんがこちらの方も回答できればよろしくお願い致します。
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
この回答への補足
お世話になっています。
迅速な回答ありがとうございます。
教えていただいた内容とURLを見させていただいて
組んでみたのですが以下のエラーが出て登録できません。
[エラー箇所]
Set rs = db.OpenRecordset("ListName")
[エラー内容]
オブジェクト変数またはWithブロック変数が設定されていません。
なにがおかしいのでしょうか?
申し訳ありませんが回答お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
テキストボックスの値をテーブルに追加
その他(データベース)
-
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
-
4
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
5
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
8
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
9
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
10
ACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです
Access(アクセス)
-
11
テキストボックス(アクセス)内のテキストの保存
その他(データベース)
-
12
access テキストボックスの値取得
Access(アクセス)
-
13
VBでSQL文のUPDATE構文を使った時のエラーについて
Visual Basic(VBA)
-
14
このオブジェクトに値を代入することはできません
その他(データベース)
-
15
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
16
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
17
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
18
新規レコード行を非表示にしたい
Access(アクセス)
-
19
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
20
アクセスVBAのMe!と[ ]
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAをつかってクエリの情報を抽...
-
エラー3011
-
テキストボックスに入れた内容...
-
SQL文が実行できません
-
実行時エラー3131 FROM 句の構...
-
ExcelVBAでAccessのデータを検...
-
codeigniter 複数モデルでトラ...
-
LocalのNotesメールDBをVBAで参...
-
MySQLでデータベースにデータin...
-
insert1つの処理でもトランザ...
-
ResultSetインターフェイスでの...
-
phpのエラーについてです
-
BLOBでの画像表示について
-
<VB.NET>INSERT文でDBにデータ...
-
PHPで[]の使い方について
-
sqlから多次元配列に要素を格納...
-
CakePHPとMySqlを使用していま...
-
sortable ギブアップです…助け...
-
php テーブルを作れない
-
テーブルに入っているデータと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
SQL文が実行できません
-
SQL文の実行に失敗しました???
-
in 'where clause'のエラーの理由
-
Accessのテーブルへ複数の主キ...
-
SELECT COUNTで取得した結果の表示
-
LocalのNotesメールDBをVBAで参...
-
SELECT文を発行して、ACCESSよ...
-
phpのPEARのMDB2を使って出たエ...
-
エラー3011
-
ASPでRecordCountが使用でき...
-
データフォームウィザードで追...
-
codeigniter 複数モデルでトラ...
-
Call to undefined method MDB2...
-
PHP(PDO)でDBの情報を完全一...
-
PEAR でprepareメソッドがエラーに
-
時刻型にNULLでセットしたい
-
ADOを使いDBへ読み書きしたい
おすすめ情報