Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: hawebe am August 31, 2014, 15:08:19

Titel: CurrentDb.Execute statt SQL - Parameter erwartet
Beitrag von: hawebe am August 31, 2014, 15:08:19
Hallo,

ich versuche zur Zeit die Codezeilen in meiner Anwendung zu minimieren. Dazu will ich ich SQL durch CurrentDb.Execute ersetzen.
Dabei habe ich so meine Probleme, denn was unter SQL läuft, erfordert bei Execute zusätzliche Parameter.


Hier der SQL String als Beispiel, der unter Execute Parameter erfordert:

cSQL = "DELETE tbl_PROVISION.*, tbl_PROVISION.VENr FROM tbl_PROVISION WHERE (((tbl_PROVISION.VENr)=[Forms]![Prov_Hfrm].[Form]![KuNr]));"

Vermutlich liegt die Ursache in den Kriterien (Formularbezug). Aber auch bei Verwendung von Eval ändert sich nichts.

Könnt Ihr mir bitte auf die Sprünge helfen?
Titel: Re: CurrentDb.Execute statt SQL - Parameter erwartet
Beitrag von: bahasu am August 31, 2014, 15:17:27
Hi,

was passiert bei:
cSQL = "DELETE tbl_PROVISION.*, tbl_PROVISION.VENr FROM tbl_PROVISION WHERE tbl_PROVISION.VENr=" & [Forms]![Prov_Hfrm].[Form]![KuNr] & ";"
Unter der Voraussetzung, dass KuNr vom Typ Zahl ist.
Titel: Re: CurrentDb.Execute statt SQL - Parameter erwartet
Beitrag von: DF6GL am August 31, 2014, 15:24:52
Hallo Ha-Wo,

der Formularbezug muss ausgelagert werden (und die FeldListe ist eh überflüssig):

Dim cSQL as String

'VENr besitzt hier den Datentyp Zahl,Long
cSQL = "DELETE FROM tbl_PROVISION WHERE (((tbl_PROVISION.VENr)=" & [Forms]![Prov_Hfrm]![KuNr] & "));"

Currentdb.Execute cSQL, dbfailOnError


Wenn Tabellenfelld "VENr" den DatenTyp TEXT aufweist, muss es zudem so lauten (Hochkommata und etwas verkürzt):

cSQL = "DELETE FROM tbl_PROVISION WHERE VENr='" & [Forms]![Prov_Hfrm]![KuNr] & "'"


Wenn der Code im selben Form abläuft, in dem sich das Formularfeld befindet, reicht zudem:

cSQL = "DELETE FROM tbl_PROVISION WHERE VENr='" & Me![KuNr] & "'"
Titel: Re: CurrentDb.Execute statt SQL - Parameter erwartet
Beitrag von: hawebe am August 31, 2014, 17:29:08
Hallo Franz,
die Kurzfassung war in diesem Fall optimal. Danke auch für die ausführliche Hilfe. Sie ermöglicht mir ähnlich gelagerten Fälle zu prüfen und zu ändern.

Also wie immer herzlichen Dank und damit auch ein Lebenszeichen von mir, denn ich hatte mich ja mehrere Monate nicht mehr gemeldet.