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
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.