最近アクセスを使用し始めました。データベースにいくつかの行を挿入しようとしています。ただし、エラーがスローされているため、スタックしています。
パラメーターが少なすぎます。
Start_dateという名前の列が1つだけのテーブルテストがあります。たとえば、2014年1月7日から2014年3月7日までを考慮する場合、2つの日付の間にすべての日付を挿入します。/7/2014、3/7/2014の表では、使用したコードの挿入に問題があります。次のとおりです。
Private Sub createRec_Click()
Dim StrSQL As String
Dim InDate As Date
Dim DatDiff As Integer
Dim db As database
InDate=Me.FromDateTxt
'here I have used a code to find out the difference between two dates that i've not written
For i = 1 To DatDiff
StrSQL = "INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );"
StrSQL = StrSQL & "SELECT 'Test'"
db.Execute StrSQL
db.close
i=i+1
next i
End Sub
コードのパラメーターが少なすぎるため、Db.Execuite StrSQLの行にエラーがスローされます。誰かがこの問題で私を助けてくれることを願っています。前もって感謝します
あなたがアクセスするのは非常に新しいと述べたので、最初にコード内のエラー(不完全なforループとSQLステートメント)を削除するように勧めなければなりませんでした。それ以外の場合は、特定の範囲の日付を挿入するためのforループが必ず必要です。
次に、以下のコードを使用して、テーブルに日付値を挿入してください。コードをテストしましたが、動作します。あなたも試してみてください。その後、シナリオに合わせてforループを追加します
Dim StrSQL As String
Dim InDate As Date
Dim DatDiff As Integer
InDate = Me.FromDateTxt
StrSQL = "INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
実行中のように2つのSQLステートメントを1つに実行することはできません。
選択クエリを「実行」することはできません。
dbはオブジェクトであり、何も設定していません:(たとえば、set db = currentdb)
VBAでは、整数型は最大32767を保持できます-Longを使用したくなるでしょう。
挿入する日付についてもう少し具体的にしたい場合があります。
INSERT INTO Test (Start_Date) VALUES ('#" & format(InDate, "mm/dd/yyyy") & "#' );"
要約すると、上記の2行のコードを削除すると、挿入ステートメントが正常に機能します。後で特定のニーズに合わせてコードを変更できます。ちなみに、時々、#のようなポンド記号で日付を囲む必要があります