Gemeinsam zu mehr Effizienz in der Anwendungserstellung
K (Die Seite wurde neu angelegt: „ {{Hierarchy header}} {{Info|text= Der unten angeführte Code zeigt nur ein Prinzip und stellt keine fertige Lösung dar. }} === Ausgangsbasis === === Eingesetz…“) |
K |
||
| Zeile 1: | Zeile 1: | ||
| - | |||
{{Hierarchy header}} | {{Hierarchy header}} | ||
{{Info|text= | {{Info|text= | ||
| Zeile 5: | Zeile 4: | ||
}} | }} | ||
=== Ausgangsbasis === | === Ausgangsbasis === | ||
| - | + | Eine insert- bzw. Update-Anweisung soll per VBA zusammengesetzt und mit Werten aus Variablen versorgt werden. | |
=== Eingesetzte Elemente === | === Eingesetzte Elemente === | ||
| - | + | * DAO-Bibliothek | |
| + | ** QueryDef | ||
=== Konzept === | === Konzept === | ||
| + | # QueryDef-Objekt erstellen | ||
| + | # Parameterwerte festlegen | ||
| + | # SQL-Anweisung ausführen | ||
| + | |||
| + | <source> | ||
| + | Public Function ExecuteParamSQL(ByVal SqlText As String, _ | ||
| + | ParamArray qdfParams() As Variant) As Long | ||
| + | |||
| + | Dim qdf As DAO.QueryDef | ||
| + | |||
| + | Set qdf = CurrentDb.CreateQueryDef("", SqlText) | ||
| + | |||
| + | Dim i As Long | ||
| + | For i = 0 To UBound(qdfParams) | ||
| + | qdf.Parameters(i) = qdfParams(i) | ||
| + | Next | ||
| + | qdf.Execute dbFailOnError | ||
| + | |||
| + | ExecuteParamSQL = qdf.RecordsAffected | ||
| + | |||
| + | End Function | ||
| + | </source> | ||
| + | ==== Verwendung ==== | ||
| + | <source> | ||
| + | anzahlDS = ExecuteParamSQL("Parameters P1 text, P2 int, P3 date;" & _ | ||
| + | " insert into Tabelle (T, Z, D) Values ([P1], [P2], [P3])", _ | ||
| + | "abc", 123, Now()) | ||
| + | </source> | ||
{{Hierarchy footer}} | {{Hierarchy footer}} | ||
| Programmier-Konzepte |
|
Der unten angeführte Code zeigt nur ein Prinzip und stellt keine fertige Lösung dar.
Inhaltsverzeichnis |
Eine insert- bzw. Update-Anweisung soll per VBA zusammengesetzt und mit Werten aus Variablen versorgt werden.
Public Function ExecuteParamSQL(ByVal SqlText As String, _ ParamArray qdfParams() As Variant) As Long Dim qdf As DAO.QueryDef Set qdf = CurrentDb.CreateQueryDef("", SqlText) Dim i As Long For i = 0 To UBound(qdfParams) qdf.Parameters(i) = qdfParams(i) Next qdf.Execute dbFailOnError ExecuteParamSQL = qdf.RecordsAffected End Function
anzahlDS = ExecuteParamSQL("Parameters P1 text, P2 int, P3 date;" & _ " insert into Tabelle (T, Z, D) Values ([P1], [P2], [P3])", _ "abc", 123, Now())