Moin,
Thx für die Rückmeldung.
Vorweg: Ich habe das Problem inzwischen anderweitig gelöst, bin mit dieser Lösung allerdings nicht besonders zufrieden (beim Blättern wird eine neue Abfrage gestartet, die genau einen Datensatz liefert - der wird dann angezeigt). Da das ganze nicht sonderlich performant ist (und außerdem gerne Fehler wie offene Cursor hinterherschleppt), bin ich nach wie vor an einer "vernünftigen" Lösung interessiert.
@jasocul: Nein, es liegt eine 1:1-Beziehung vor. Und ich habe zwischen den Tabellen im DataSet schon Relationen angelegt, allerdigs klappt die Durchsetzung dieser Relationen beim Blättern nicht - da liegt das eigentliche Problem.
@feivel3333: Das ganze Programm werde ich nicht posten, das wäre ein bisschen viel
![:wink:](images/smiles/icon_wink.gif)
Das Fragment, das das Problem über Find lösen sollte, sah so aus (ich hoffe, der Code spricht für sich):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| idx := DSTeilnehmer.Tables['TEILNEHMER_ADR'].DefaultView.Find(TBIdent.Text); if idx = -1 then begin TACurrencyMgr.AddNew; (TACurrencyMgr.Current as DataRowView).Item['IDENT'] := TBIdent.Text; end else TACurrencyMgr.Position := idx; |
Der DefaultView war sortiert, ich habe auch verschiedene Sortierungen getestet und bin recht sicher, das kein "1-off" Problem vorliegt.
Der nächste Versuch war ein RowFilter ...
Delphi-Quelltext
1: 2: 3:
| curident := (TeCurrencyMgr.Current as DataRowView).Item['IDENT'].ToString; DSTeilnehmer.Tables['TEILNEHMER_ADR'].DefaultView.RowFilter := System.&String.Format('IDENT = ''{0}''', [curident]); |
... hat aber ebenfalls nicht funktioniert. Ich habe auch versucht, den RowFilter mit der Relation zu füttern, etwa so:
Ident = Relation.Parent(Ident)
Das lief ebenfalls nicht.
Ich habe verschiedene Bücher konsultiert (DoKo, Delphi 8 für .NET, Grundlagen / Kochbuch; Pacheco, Delpi for .NET Developer's Guide), aber keiner hatte etwas, was mir unmittelbar weitergeholfen hat.
Soweit, so unzufrieden & für jeden Tip dankbar,
Khananka
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.