
アクセスで下記コードを実行すると「実行時エラー3131 FROM 句の構文エラーです」と出てしまいます。
どうすればよいでしょうか?
Private Sub コマンド210_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim vsql As String
Dim i As Variant
Set db = CurrentDb()
i = 見積ID
vsql = "select * from T-見積書 where 見積ID = i"
Set rs = db.OpenRecordset(vsql, dbOpenDynaset)
If MsgBox("削除しますか?", vbYesNo) = vbYes Then
rs.Delete
End If
DoCmd.GoToRecord , , acPrevious
rs.Close
db.Close
End Sub

No.6
- 回答日時:
>>データ型は短いテキストです
そっか、テキストボックスといってたから、抽出条件は文字型(文字列)なんですね。
文字列の場合には=の後の指定値は'で囲まないとなりません。
ほぼ全てのデータベースで同じです。
T-見積書の-は使え無いから、テーブル名はT見積書だとして
vsql = "select * from T見積書 where 見積ID = i"
↓
vsql = "select * from T見積書 where 見積ID ='" & i & "'"
(iの中身を'で囲う。ABCなら'ABC')

No.4
- 回答日時:
>>iにはフォーム上に表示されているテキストボックスの見積IDの値を代入しています
ではデータの型が違うのでは?
列名の見積IDが数値型や日付/時刻型とか、全角/半角の違いとか。
手動のクエリで確認出来ませんか
Dim i As Variantを、自分の思っている型宣言にして見るとか・・・。
データ型は短いテキストです
全角半角もスペース含め確認しました
dim i as stringで試してみても変わらず…
手動のクエリの確認方法が分からないのですがどう確認するのでしょうか?

No.3
- 回答日時:
データベス列名の見積IDの型が文字なのにクエリで数値を指定してるとか、その逆とかです。
>>i = 見積ID
これは、VBAとしてはどちらも変数です。
見積IDと言う変数の中身をiと言う変数に代入しています。
列名の見積IDでは無いですよ、pg内の変数として扱われます。
このプログラムを見ると、見積IDと言う変数に何もセットしていなくて、イキナリiに中身を代入しています。
言葉足らずでした!
iにはフォーム上に表示されているテキストボックスの見積IDの値を代入しています
i = 見積ID
msgbox i
と実行するとテキストボックスに入力されているデータが呼び出し出来るので代入は出来てるかと思います

No.2
- 回答日時:
何か変なんですが・・・・・。
vsqlの中には、SQLが文字列として解決してる値、つまり、変数なんか使え無いのですが・・・・・。
>>vsql = "select * from T-見積書 where 見積ID = i"
そもそも、ここが変では有りませんか?
where句が "見積ID = i" と言う文字列。
=の後ろは"値"のはず・・、これだと値がiですよ。
vsql = "select * from T-見積書 where 見積ID =" & i
としないと変。
そうなんですか!見積ID=iで該当するデータが無いということなんですね
こちらも修正しました!
ただ、またエラーが出てきてしまいました
抽出条件でデータ型が一致しません。と出てしまいます。
デバッグすると下のコードが黄色く表示されます
Set rs = db.OpenRecordset(vsql, dbOpenDynaset)
見積IDのデータ型が短いテキストだと別の書き方があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
FROM句の構文エラー ACCESS SQL
その他(データベース)
-
-
4
Access2010 「演算子がありません」エラー
その他(データベース)
-
5
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
6
「RunSQL」と「Execute」の違い
Access(アクセス)
-
7
アクセスVBAのMe!と[ ]
Access(アクセス)
-
8
Access Error3061 パラメータが少なすぎます。4を指定してください。
Access(アクセス)
-
9
パラメータが少なすぎます。1を指定して下さい。""
Excel(エクセル)
-
10
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
11
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
12
ODBCの接続に失敗しました(3146)について
その他(Microsoft Office)
-
13
access テキストボックスの値取得
Access(アクセス)
-
14
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
15
Access 2010で実行時エラー3061
その他(Microsoft Office)
-
16
AccessのSQLで、FROM句の構文エラー
その他(データベース)
-
17
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
18
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
19
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
20
テキストボックスにクエリ結果を表示させたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
ACCESS VBA でのエラー解決の根...
-
Access Error3061 パラメータが...
-
「テキストデータで送ってくだ...
-
access2021 強制終了してしまう
-
access vbaでフォームを開くと...
-
アクセス IDが空白の時、メッセ...
-
Vba Userformを前面に出すについて
-
Access VBA を利用して、フォル...
-
CSVファイルの「0落ち」にVBA
-
Accessのクエリで、replace関数...
-
access2021 VBA メソッドまたは...
-
Accessのフォーム上のテキスト...
-
accessでlaccdbファイルが削除...
-
Microsoft365にAccessってあり...
-
access2019 チェックボックスと...
-
Accessフォームの配色テーマを...
-
Accessのクエリの印刷設定
-
AccessのクエリをSQL文に変換す...
-
access2021 コンパイルエラーの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
PHPのIF文で条件の記述の仕方に...
-
テキストボックスに入れた内容...
-
Accessのテーブルへ複数の主キ...
-
エラー3011
-
VBAをつかってクエリの情報を抽...
-
SQL文が実行できません
-
SELECT文を発行して、ACCESSよ...
-
PEAR でprepareメソッドがエラーに
-
ADOを使いDBへ読み書きしたい
-
in 'where clause'のエラーの理由
-
LocalのNotesメールDBをVBAで参...
-
codeigniter 複数モデルでトラ...
-
例外処理
-
時刻型にNULLでセットしたい
-
SQL文の実行に失敗しました???
-
PHP内でUPDATE構文を使用してい...
-
array_mapを使ったエスケープ処理
-
抽出されたデータをソートした...
-
こんにちは、PHP初心者です。
おすすめ情報