Excel2003からAccess2003のDBの値を取得するVBAを作成中なのですが、
ExcelのフォームにてTextBox1に入力した社員番号からネットワーク接続されたサーバーにあるmdbファイルから値を取得する内容で
以下のエラーが表示されます。
「実行時エラー '-2147217904 (80040e10)':
1つ以上の必要なパラメータの値が設定されていません。」
デバッグをすると、「rs1.Open sql1, con」の箇所と指摘されます。
以下にコードを貼り付けますので、間違っている点のご指摘をお願いいたします。
Private Sub CommandButton2_click()
Dim shainID As Long
Dim constr As String '接続文字列の定義
Dim con As ADODB.Connection
Dim rs1 As ADODB.Recordset
If TextBox1.Value = "" Then
MsgBox "社員番号を入力してください", vbOKOnly + vbCritical, "社員番号入力エラー"
TextBox1.SetFocus
Else
shainID = TextBox1.Value
Range("B13").Value = shainID
'Connectionの設定
Set con = CreateObject("ADODB.Connection")
constr = "provider = Microsoft.Jet.OLEDB.4.0;Data Source = \\192.168.1.100\ShainDB\shaindb.mdb"
'DB接続
con.Open constr
'RecordSetの作成
Set rs1 = CreateObject("ADODB.Recordset")
'SQL
sql1 = "select 社員漢字氏名,性別,生年月日,電話番号,住所 from 社員テーブル where 社員番号 = shainID"
If sql1 = "" Then
MsgBox "入力した社員番号の社員はいません。", vbOKOnly + vbCritical, "社員番号入力エラー"
TextBox1.SetFocus
Else
'SQLを実行して対象をRecordSetに入れる
rs1.Open sql1, con
Set rs1 = con.sql1
Range("B14").Value = 社員漢字氏名
Range("B15").Value = 性別
Range("B16").Value = 生年月日
Range("B17").Value = 電話番号
Range("B18").Value = 住所
Unload Me 'フォームを閉じる
End If
End If
End Sub
No.1ベストアンサー
- 回答日時:
>デバッグをすると、「rs1.Open sql1, con」の箇所と指摘されます。
それ以外のところの方がかなり怪しいですが。ちょっと見ですが、いくつか挙げてみると・・・
>Dim con As ADODB.Connection
と型宣言できているのに、わざわざ
Set con = CreateObject("ADODB.Connection")
としていること。素直にNewしましょう。
>Dim rs1 As ADODB.Recordset
についても同様。
>Set rs1 = con.sql1
これはコンパイルエラーになるはず。そもそも何がしたいのか不明。レコードの取得はその前の
>rs1.Open sql1, con
でできるはず。(エラーとのことですが)
>Range("B14").Value = 社員漢字氏名
これでは、データベースからのデータはセルに入れられない。「社員漢字氏名」は、なにも値が設定されていない変数。それをセルに代入しているだけなので。
Range("B14").Value = rs1!社員漢字氏名
とすべき。
全体的にVBAとADOに関する知識がかなりあやふやに思います。もう一度、本を読んで見直してください。
また、かならず「Option Explicit」を設定するようにしてください。ケアレスミスを減らせます。
No.2
- 回答日時:
たくさんありますが
sql1 = "select 社員漢字氏名,性別,生年月日,電話番号,住所 from 社員テーブル where 社員番号 = shainID"
shainIDが数値型の場合
sql1 = "select 社員漢字氏名,性別,生年月日,電話番号,住所 from 社員テーブル where 社員番号 =" & shainID & ";"
shainIDが文字列型の場合
sql1 = "select 社員漢字氏名,性別,生年月日,電話番号,住所 from 社員テーブル where 社員番号 ='" & shainID & "';"
Range("B14").Value = 社員漢字氏名
を
Range("B14").Value =rs1.field("社員漢字氏名")
以下同様
社員がいるかどうかはsqlを実行した後rs1がEOFかどうかで決める。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
平社員の場合の役職名は?
-
会社の互助会費について
-
社員への残業時間公開について
-
職場で空気のような存在になっ...
-
社員各位という言葉について
-
出戻り社員は一番下でしょ?? ...
-
若いイケメンには態度を変える...
-
月1くらいで休む派遣さんが、休...
-
先日、当社のある社員について...
-
会社の人に勝手にLINE追加され...
-
社員名簿で家族構成書くとこあ...
-
悪口を本人に聞かれてしまった
-
妻ですが男性と2人だけの出張が...
-
帰り際になって急に話しかけて...
-
マクドナルド社員になるのはか...
-
子会社の社内規程内で「親会社...
-
悪口を言いふらす男!
-
Access VBA DB(先頭の0値を...
-
出世とかしたくないって人は中...
-
社内での呼び方に困っています。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
平社員の場合の役職名は?
-
出戻り社員は一番下でしょ?? ...
-
会社の人に勝手にLINE追加され...
-
巨乳の同僚
-
社員名簿で家族構成書くとこあ...
-
社員各位という言葉について
-
職場で空気のような存在になっ...
-
社内盗撮
-
会社の互助会費について
-
社員への残業時間公開について
-
マクドナルド社員になるのはか...
-
帰り際になって急に話しかけて...
-
月1くらいで休む派遣さんが、休...
-
自分にだけタメ口対応をされま...
-
派遣社員に直接注意
-
悪口を本人に聞かれてしまった
-
皆さんの会社の親睦会費は社員...
-
若いイケメンには態度を変える...
-
妻ですが男性と2人だけの出張が...
-
社員がPCを壊した場合の対処方...
おすすめ情報