![]() |
AW: ParamByName geht und geht mal nicht
Auch wenn man einige besonderen Regeln hat wie die mit der Kontonummer würde ich trotzdem mit der Schleife arbeiten. Die Sonderfälle kann man dann immer noch extra behandeln.
Die Zeile if Query_Quelle.FieldByName('KONTONUMMER').AsInteger = Null scheint wohl zu funktionieren, gefällt mir aber irgendwie nicht. Ich prüfe bei soetwas entweder auf isnull oder asinteger=0 Abfragen usw über mehrere Datenbanken sind mit Firebird möglich; z.B. in Executeblock-Statements. |
AW: ParamByName geht und geht mal nicht
Zitat:
|
AW: ParamByName geht und geht mal nicht
Es lässt sich kompilieren und ausführen, was ich eigentlich bezweifelt hatte. Ob es wirklich funktioniert, habe ich auf die Schnelle nicht geprüft.
Ich habe IBO noch nie eingesetzt; verwende eigentlich immer IBDAC und früher die IB-Komonententen. Bei beiden kann man die Insert und Update - Statments automatisch generieren lassen, geht das bei IBO nicht? Sieht mühsam aus, das alles selber zu schreiben. |
AW: ParamByName geht und geht mal nicht
Wie gesagt, was dort passiert, hatte ich hier auch beschrieben. Kompilieren lässt es sich, aber es macht nicht das, was es soll.
Zitat:
z.B.
SQL-Code:
(limit 0, da vorhandene Datensätze hier ja egal sind) und dann mit DataSet.Insert/Post, sowie die Felder per Schleife übertragen.
SELECT * FROM table LIMIT 0
|
AW: ParamByName geht und geht mal nicht
Zitat:
Dann halt mit Stored Procedure, Execute Statement .. on external datasource.. . Das wäre nativ, schnell, typsicher und flexibel. (Und etwas weniger Schreibkram) Außer ein Experte hier weiß, dass es mit alten Versionen nicht geht oder remote DB. |
AW: ParamByName geht und geht mal nicht
Hallo Sir Rufo,
was sind for LFieldName in LFieldNames do für Variablen. |
AW: ParamByName geht und geht mal nicht
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 wieder neu per FieldByName suchen zu lassen. |
AW: ParamByName geht und geht mal nicht
Das ist eine Enumeration.
Ich vermute das LFieldNames eine StringListe ist, dann müsste LFieldName ein String sein. |
AW: ParamByName geht und geht mal nicht
Da
Delphi-Quellcode:
und
ParamByName
Delphi-Quellcode:
einen
FieldByName
Delphi-Quellcode:
erwarten, muss
string
Delphi-Quellcode:
irgendein Typ sein, der automatisch in einen
LFieldName
Delphi-Quellcode:
gecastet werden kann. Straight forward wäre da der Typ
string
Delphi-Quellcode:
.
string
Delphi-Quellcode:
muss ein Typ sein, der einen Enumerator bereitstellt, der zum Typ von
LFieldNames
Delphi-Quellcode:
passt. Straight forward wäre hier
LFieldName
Delphi-Quellcode:
oder
TArray<string>
Delphi-Quellcode:
oder ...
TStringList
|
AW: ParamByName geht und geht mal nicht
Ich weiß nicht, ob es in XE2 schon geht
Delphi-Quellcode:
var ...
fieldname: string; ... for fieldname in Query_Quelle.GetFieldNames do |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz