Forum: Datenbanken
Delphi
by himitsu,
29. Apr 2015
Das war ein Beispiel-Code.
LFieldName ist natürlich ein lokaler String. (Schleifenvariable)
LFieldNames ist z.B. ein Array oder eine StringListe mit den FeldNamen, der zu kopierenden Felder. (man könnte auch direkt über DataSet.Fields gehn)
Und wenn es schneller sein soll, dann holft man sich vor der Schleife (über alle DataRecords) die Instanzen aller nötigen TField, anstatt immer...
Forum: Datenbanken
Delphi
by himitsu,
28. Apr 2015
Wie gesagt, was dort passiert, hatte ich hier auch beschrieben. Kompilieren lässt es sich, aber es macht nicht das, was es soll.
Wurde auch schon vorgeschlagen.
z.B. SELECT * FROM table LIMIT 0 (limit 0, da vorhandene Datensätze hier ja egal sind) und dann mit DataSet.Insert/Post, sowie die Felder per Schleife übertragen.
Forum: Datenbanken
Delphi
by himitsu,
28. Apr 2015
Nein, tut es nicht, aber das hatte ich bereits genannt, inkl. Erklärung warum nicht.
Forum: Datenbanken
Delphi
by himitsu,
25. Apr 2015
Eigentlich müsste da sowas bei rauskommen. :gruebel:
Sicher, daß es so stimmt?
AsInteger = Null wird niemals True liefern, denn 0 <> NULL.
AsInteger gibt eine 0 zurück, wenn der Wert des Feldes NULL ist.
"Query_Quelle.FieldByName('xxxxx').AsInteger := 0" ist garantiert das falsche DataSet.
Forum: Datenbanken
Delphi
by himitsu,
25. Apr 2015
Und warum nur halb?
Query_Ziel.ParamByName('PATIENTNR').AsInteger := qryBildAlt.FieldByName('PATIENTNR').AsInteger;
EVariantInvalidArgError > VAR_INVALIDARG
Dieser Fehler taucht gern bei Variant-Arrays auf, aber eigentlich sollte das hier nicht vorkommen.
Tritt der Fehler wirklich in dieser Zeile auf, oder zeigt nur Delphi diese Zeile nach dem Fehler an?
Achte bei sowas auch immer auf...