webentwicklung-frage-antwort-db.com.de

Einfügen von Werten in die Datenbanktabelle mit VBA bei MS-Zugriff

Ich habe vor kurzem mit dem Zugriff begonnen. Ich versuche, ein paar Zeilen in die Datenbank einzufügen. Ich bin jedoch festgefahren, da es einen Fehler auslöst: 

Zu wenige Parameter.

Ich habe einen Tabellentest mit nur einer Spalte namens start_date. Ich möchte alle Datumsangaben zwischen zwei Datumsangaben einfügen. Zum Beispiel, wenn ich den 07.01.2014 bis 07.03.2014 in Betracht ziehe, benötige ich Datumsangaben als 07.01.2014,2/7/2014,3/7/2014 in meiner Tabelle, aber ich habe Probleme beim Einfügen des von mir verwendeten Codes ist wie folgt 

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

Mein Code wirft einen Fehler in der Zeile Db.Execuite StrSQL .__ als zu wenige Parameter . Hoffe, jemand könnte mir bei diesem Problem helfen . Vielen Dank Im Voraus

5
shravya

da Sie bereits erwähnt haben, dass Sie noch relativ neu sind, musste ich Sie einladen, zuerst die Fehler im Code (die unvollständige for-Schleife und die SQL-Anweisung) zu entfernen. Ansonsten benötigen Sie sicherlich die for-Schleife, um Datumsangaben in einem bestimmten Bereich einzufügen.

Verwenden Sie nun den folgenden Code, um die Datumswerte in Ihre Tabelle einzufügen. Ich habe den Code getestet und er funktioniert. Sie können es auch versuchen. Fügen Sie danach Ihre for-Schleife hinzu, um sie an Ihr Szenario anzupassen

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
10
user3267567

Sie können nicht zwei SQL-Anweisungen so ausführen, wie Sie es tun.

Sie können eine Auswahlabfrage nicht "ausführen".

db ist ein Objekt und Sie haben noch nichts festgelegt: (z. B. set db = currentdb)

In VBA können Integer-Typen maximal 32767 aufnehmen - ich würde versucht sein, Long zu verwenden.

Vielleicht möchten Sie etwas genauer zu dem Datum, das Sie einfügen, ein wenig genauer sein:

INSERT INTO Test (Start_Date) VALUES ('#" & format(InDate, "mm/dd/yyyy") & "#' );"
1
Lord Peter
  1. Entfernen Sie diese Codezeile: Für i = 1 To DatDiff. Eine For-Schleife muss das Wort NEXT haben
  2. Entfernen Sie auch diese Codezeile: StrSQL = StrSQL & "SELECT 'Test'", da Access dazu dient, Ihre endgültige SQL-Anweisung wie folgt zu betrachten; INSERT INTO Test (Start_Date) VALUES ('"& InDate &"'); SELECT 'Test' Beachten Sie das Semikolon in der Mitte der SQL-Anweisung (sollte immer am Ende sein. Es ist übrigens nicht erforderlich kann es auch weglassen). Außerdem gibt es kein Leerzeichen zwischen dem Semikolon und dem Schlüsselwort SELECT

zusammenfassend: Entfernen Sie die beiden obigen Codezeilen, und Ihre Einfügeanweisung funktioniert einwandfrei. Sie können den Code später an Ihre speziellen Anforderungen anpassen. Übrigens, manchmal müssen Sie Datumsangaben in Pfund-Zeichen wie # einfügen.

0
user3267567