Accessフォームから編集可能なデータベーステーブルに書き込もうとしていますが、構文エラーが発生し続けます。
表には、約30の列がありますが、私はそれらの8から記録の充填をしたいです:( 、Job #
、Job Name
、Date
、Superintendent
、Hauling Vendor
、Material
、)。LTC
Loads
フォームは、次の名前の8つのフィールドで構成されています。
ReportingCOM_Job
ReportingBox_JobName
ReportingBox_Date
ReportingCom_SI
ReportingCom_Vendor
ReportingCom_Mat
ReportingCom_LoadType
ReportingBox_Loads
これらは、クエリからのドロップダウンリスト、テキスト入力、およびハードコードされた値の組み合わせであるため、単純な[フォームを開く]> [新しいレコード]はここでは機能しません。またはそう私は信じていません。
これも可能ですか?
次の行を使用していますが、このエラーをクリアできません。
CurrentDb.Execute "INSERT INTO MATLog(Job #, Job Name, Date, Superintendent, Hauling Vendor, Material, LTC, Loads) " & _
" VALUES(" & Me.ReportingCOM_Job & "," & Me.ReportingCom_JobName & ",#" & Me.ReportingBox_Date & "#," & _
Me.ReportingCom_SI & "," & Me.ReportingCom_Mat & "," & Me.ReportingCom_Vendor & "," & Me.ReportingCom_LoadType & ",#" & Me.ReportingBox_Loads & "#)"
このフォームでは、これらの8つのフィールドを使用して新しいレコードを作成し、残りを空白のままにする必要があります。
フィールド名(など)にスペースまたはその他の予約済みの名前または記号が含まれるフィールドはDate
、角かっこで囲む必要があります。例:
INSERT INTO MATLog([Job #], [Job Name] ... )
また、VALUES
リスト内のテキストフィールドの値を一重引用符または二重引用符で囲む必要があります。例:
",'" & Me.ReportingCom_JobName & "',
ただし、上記でクエリを正常に実行できるはずですが、ユーザーが入力した未検証のフォーム値を使用してSQLステートメントを作成する現在のアプローチは、SQLインジェクションに対して脆弱であり、SQL文字列を含むテキスト値を挿入するときにも問題が発生します。区切り文字(一重引用符/二重引用符)。
代わりに、クエリをパラメータ化することをお勧めします。
この可能性のある例の1つは、次のとおりです。
With CurrentDb.CreateQueryDef("", _
"insert into matlog ([Job #], [Job Name], [Date], Superintendent, [Hauling Vendor], Material, LTC, Loads) " & _
"values (p1,p2,p3,p4,p5,p6,p7,p8)")
.Parameters!p1 = Me.ReportingCOM_Job
.Parameters!p2 = Me.ReportingBox_JobName
.Parameters!p3 = Me.ReportingBox_Date
.Parameters!p4 = Me.ReportingCom_SI
.Parameters!p5 = Me.ReportingCom_Vendor
.Parameters!p6 = Me.ReportingCom_Mat
.Parameters!p7 = Me.ReportingCom_LoadType
.Parameters!p8 = Me.ReportingBox_Loads
.Execute
End With
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加