Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Neueste Beiträge

#1
Formular / Re: zwei Unterformulare im Hau...
Letzter Beitrag von 1200er - Heute um 20:02:23
Hallo zusammen, ich habe mein Problem dank eurer Hilfe und den Tipp von Klaus "ein anderes Formular" zu gestalten gelöst. Vielen Dank für die Hilfe. Jetzt werde ich die DB, in gemeinsamer Arbeit mit meinem Sohn, weiter entwickeln. Mal schauen was dabei rauskommt. Sollte ich Probleme bekommen, weis ich ja an wen ich mich wenden kann. ;)
Schönen Abend
#2
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Bitsqueezer - Heute um 15:26:56
Hallo,

...übrigens nach so vielen Jahren VBA: Like gibt es auch in VBA und ist auch da oft sehr viel einfacher als Instr... ;)

Gruß

Christian
#3
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Beaker s.a. - Heute um 15:03:05
ZitatDann gibt es also (mindestens) 2 Lösungsansätze!
Ich kenne noch einen dritten, - öffentliche Property/Function statt TempVar.
#4
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Hpseel - November 10, 2025, 21:02:46
Prima Knobbi!
Habe es ausprobiert und es funktioniert.

Dann gibt es also (mindestens) 2 Lösungsansätze!

VG HPS
#5
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Knobbi38 - November 10, 2025, 19:45:54
Hier mal ein Lösungsvorschlag mit einer Parameterquery:

SQL für die Parameterquery "qryAppend":
PARAMETERS pPattern Text ( 255 );
INSERT INTO tblDataNeu ( Vorname, Nachname )
SELECT Vorname, Nachname
FROM tblData
WHERE Nachname Like [pPattern];

und dann der VBA Code zum aufrufen:
Sub AppendRecords()
  Dim qdf As QueryDef
 
  Set qdf = DBEngine(0)(0).QueryDefs("qryAppend")
  qdf.Parameters("pPattern") = "A*"
  qdf.Execute dbFailOnError
 
  Debug.Print qdf.RecordsAffected & " Datensätze angefügt."
 
  qdf.Close : Set qdf = Nothing
End Sub

Knobbi38
#6
Formular / Re: zwei Unterformulare im Hau...
Letzter Beitrag von 1200er - November 10, 2025, 17:22:04
Hallo Klaus, sorry, das mit dem Code habe ich nicht gewusst. Wird beim nächsten Mal als Text eingefügt. Deine Korrektur im im Cade habe ich bereits umgesetzt und funktioniert. Vielen Dank
#7
Formular / Re: zwei Unterformulare im Hau...
Letzter Beitrag von MzKlMu - November 10, 2025, 17:03:32
Hallo,
oder als Einzeiler (Siehe Bild).

Bitte VBA Code immer als Text einfügen (mit den Codetags) niemals als Bild.
Code in Bildern kann man nicht kopieren.

Es ist überaus sinnvoll, ID's niemals nur ID nennen, sondern immer mit Bezug zur Tabelle benennen, z.B. FahrzeugID, Du weist sonst nicht, welche ID zu welcher Tabelle gehört. Und im Abfragen mit mehr Tabellen muss bei gleichen Namen immer der Tabellenname vorangestellt werden.
#8
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Hpseel - November 10, 2025, 16:53:38
Hallo Knobbi,
du hast sicher recht, LIKE entspricht mehr dem SQL Gedanken.
Ich bin wohl nach mehr als 30 Jahren Excel VBA Programmierung noch recht mit der "instr" Funktion verwachsen ...;-) Vermutlich habe ich sie einige tausend mal verwendet...

Einen kleinen Unterschied gibt es wohl: Bei LIKE muss noch der * hinten drangesetzt werden, bei instr genügt es, einfach die Buchstaben zu nehmen, die ab Position 1 erscheinen sollen, oder die bei instr(...) <> 0 irgendwo im Prüfstring vorkommen.

Meine ursprüngliche Frage "VBA Variablen im SQL String" ist glaube ich mit dem TempVar Ansatz zufriedenstellend gelöst. Du hast recht, wenn die Prozedur mehrfach durchlaufen wird, sollte man am Sub-Ende die TempVariable wieder löschen.
VG HPS
#9
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Knobbi38 - November 10, 2025, 15:29:35
@Hpseel

Deiner Argumentation mit Like kann ich nicht folgen. Instr() liefert doch exakt die gleiche Anzahl DS - dann doch besser Like().

"TempVars.Add "Ort", my_Var     ' also Zuweisung meiner Variablen an eine TempVar"
Damit wird der Tempvars Auflistung eine neues Tempvar-Objekt zugewiesen. Bei einer wiederholten Zuweisung wird zwar kein Fehler gemeldet, aber eigentlich wird für eine Zuweisung die Value Eigenschaft verwendet. Das wäre dann konsequent und besser lesbar.

Unabhängig davon sollten Eingaben nicht direkt ungeprüft verwendet werden. Besser ist es, dafür eine Parameterabfrage mit Like zu nutzen.

Knobbi38
#10
Access Programmierung / Re: Vba Variablen in SQL-Abfra...
Letzter Beitrag von Hpseel - November 10, 2025, 13:39:38
Hallo. vielen Dank für die Tipps!

>> "Like" liefert mir zu viele Ergebnisse, wenn nur wenige Buchstaben als Suchstring eingegeben werden.

Die anderen Vorschläge haben bei mir (Access 2016) nicht funktioniert.

Es wird wohl schon so sein, dass das VBA Programm den SQL-String an den Parser der Jet-Engine übergibt und dieser den Variablenbezug nicht auflösen kann ...

Ich habe mich gefragt, was er denn auflösen kann und bin auf eine Lösung mit TempVars gekommen:

Im Code:
  TempVars.Add "Ort", my_Var     ' also Zuweisung meiner Variablen an eine TempVar

  ...

  SQLStr = " Insert ......where instr(KOST.Ort, TempVars![Ort] = 1;"

Dieser "Umweg" über TempVars funktioniert und müsste auch bei anderen eingebauten Funktionen gehen.

Vielen Dank nochmal für die Tipps und weiter frohes Schaffen ! (Programmieren !)

HPS