はじめまして。よろしくお願いします
select文のwhere条件にidを指定したいのですがうまくいきません。
べつに変数を使用しなくてもよいのですが良い方法がありましたらご教授下さい
Private Sub コマンド8_Click()
Dim adoCON As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim no As interger
no=me.id
Set adoCON = Application.CurrentProject.Connection
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id=no")strName = adoRS!varcodeno
adoRS.Close
adoCON.Close
Set adoRS = Nothing
Set adoCON = Nothing
Me.jancode.Value = strName
End Sub
No.1ベストアンサー
- 回答日時:
>Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id=no")
idのタイプが数値だと
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id=" & no)
文字列だと
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id='" & no & "'")
にしたらOK。
No.4
- 回答日時:
SQL文は文字列です。
実行する直前までに、正しく文字列が編集されておればよい。不変の文字列の部分と「可変になる場合が多い条件の文字列」を&でくっつけます。その際条件部分が文字列か数値か注意する。MsgboxでSQL文を作った変数を表示してみれば、期待通りになっているか判ります。
No.3
- 回答日時:
私ならば、次のような書き方をします。
×"id=Me.id"
○"id=" & Me.id
は、単なる初歩的なミスですので二度としないと思いますよ!
Private Sub コマンド8_Click()
Me.jancode.Value = DBLookup("varcodeno", "varcode_tbl", "id=" & Me.id)
End Sub
Public Function DBLookup(ByVal strField As String, _
ByVal strTable As String, _
Optional ByVal strWhere As String = "", _
Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
Dim DataValue
Dim strQuerySQL As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
strQuerySQL = "SELECT " & strField & " FROM " & strTable
If Len(strWhere) > 0 Then
strQuerySQL = strQuerySQL & " WHERE " & strWhere
End If
With rst
.Open strQuerySQL, _
CurrentProject.Connection, _
adOpenStatic, _
adLockReadOnly
If Not .BOF Then
.MoveFirst
DataValue = .Fields(0)
End If
End With
Exit_DBLookup:
On Error Resume Next
rst.Close
Set rst = Nothing
DBLookup = Nz(DataValue, ReturnValue)
Exit Function
Err_DBLookup:
MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_DBLookup
End Function
No.2
- 回答日時:
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id = " & no)
とか、
変数id を使わなくとも
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id = " & me!id)
では?
あと、no は Access の予約語なので変更したほうが宜しいかと。
http://support.microsoft.com/default.aspx?scid=k …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
更新クエリで変数は使えない?
その他(データベース)
-
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
-
4
アクセスのレポートに、フォームで算出した数字を表示させたい
Access(アクセス)
-
5
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
6
Access VBA Me.Requery レコードは削除されています エラー
その他(データベース)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
9
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
10
レポート中の文字を自動縮小したい (ACCESS 2003)
Access(アクセス)
-
11
ACCESSのサブフォームからメインフォームへの移動
Access(アクセス)
-
12
AccessVBA 実行時エラー'2766'について質問です。
その他(データベース)
-
13
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
14
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
15
サブフォームの新規レコードに移動したい アクセス
Access(アクセス)
-
16
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
MySQLのDATE型カラム値がNULLの...
-
VIEWの元のテーブルのindexって...
-
sqlで、600行あるテーブルを100...
-
VMware Player でCD-ROMドライ...
-
[MySQL] UNIQUE制約の値を更新...
-
「Duplicate entry '1' for key...
-
MySQLのint型で001と表示する方...
-
insertを高速化させたい
-
JOIN後同一名カラムから値がと...
-
ある条件の最大値+1を初番する...
-
エクセルの関数について教えて...
-
PL/SQLの変数について
-
入力値と外部キーをINSERTするには
-
時給毎の勤務時間を求めるSQL
-
MySQLでvarcharに先頭ゼロをセ...
-
ローカルルーターモードとは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
SQL Left Join で重複を排除す...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
PL/SQLの変数について
-
マイクラPC版のコマンドで効率...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
sqlで、600行あるテーブルを100...
-
Access パラメータクエリをcsv...
-
Unionした最後にGROUP BYを追加...
-
inner joinをすると数がおかし...
-
複数テーブルのGROUP BY の使い...
-
ある条件の最大値+1を初番する...
-
MySQLのint型で001と表示する方...
-
クエリ表示と、ADOで抽出したレ...
-
[MySQL] UNIQUE制約の値を更新...
-
テーブル名を省略して「h.id」...
おすすめ情報