Zitat:
Nur, was soll das ganze denn eigentlich machen ? Vor allem, welche Zugriffskomponenten werden verwendet, IBX oder was ? Desweiteren wäre zu überlegen, welche Komponenten, Dataset,
Query ???
??? Das habe ich doch in der Frage alles geschrieben, oder??
Also, wie der Name schon sagt, benutze ich die Interbase Komponenten.
In der SelectSQL Eigenschaft des IBDataset Objektes steht in etwa
folgende Anweisung:
SELECT
t1.id,t1.name,t1.plz,t2.id,t2.ort
FROM
adresse t1
LEFT OUTER JOIN
ort t2 on t1.plz = t2.id
Dieses liefert mir eine nicht aktualisierbare Datenmenge.
Um diese Datenmenge aktualisierbar zu machen, gibt es (und aus
anderen Gründen) ein IBUpdateSQL Objekt, dass über die
UpdateObject Eigenschaft von IBDataSet verbunden ist.
Dieses Objekt kann nun bei einem Edit die Änderungen
in eigene
SQL Statements kapseln, so dass ein Edit oder
Insert auf IBDataSet erlaubt ist.
Hierzu kann zum Beispiel zur Laufzeit die ModifySQL EIgenschaft
des IBUpdateSQL Objektes innerhalb des OnUpdateRecordEvents des
IBDataSet Objektes angepasst werden.
z.B:
Delphi-Quellcode:
if UpdateKind = ukModify then begin
with IBUpdateSQL1.ModifySQl do begin
clear;
add(' UPDATE adresse');
add(' SET NAME = :NAME');
add(' WHERE ID = :ID');
end;
Apply(updateKind)
with IBUpdateSQL1.ModifySQl do begin
clear;
add(' UPDATE ort');
add(' SET ORT = :ORT');
add(' WHERE ID = :ID1');
end;
Apply(updateKind)
end;
Dies bewirkt, das beide beim join beteiligten Tabellen upgedatet
werden können.
Ich hoffe, es ist jetzt etwas klarer geworden.
Also bitte, gebt mir ein paar Infos.
Oder wie realisiert Ihr die dargestellte Problematik?
Gruß