2012-04-13 12 views
1

Jeder einmal in eine Weile, in einer Weise, die mir unberechenbar erscheinen, die CodezeileWarum findet die Locate-Methode von ClientDataSet keinen vorhandenen Datensatz?

if not CDS.Locate('Name',aName,[]) then ... 

löst true (dh, kann nicht die Zeichenfolge aName im Feld ‚Name‘ finden), obwohl ich weiß, dass es ist ein Rekord. Ich kann die Anwendung schließen und erneut öffnen, lade die exakt gleiche Datei, führe den gleichen Befehl aus - wiederhole alle meine Aktionen, mit anderen Worten - und lasse alles wie erwartet das nächste Mal durch. Und die Zeit danach. Ich kann sogar die gleiche Datei wieder öffnen, und der Code wird wie erwartet ausgeführt ... Ich weiß nicht, was das Problem ist, und, offen gesagt, mit etwas Unterbrechungen wie diesem weiß ich nicht einmal, wo ich suchen soll!

Irgendwelche Gedanken darüber, wo ich anfangen soll? ...

+1

Das erste, was suchen, die in den Sinn kommt, ist ein Groß- und Kleinschreibung Problem. Die zweite - wenn der Name zumindest von der Benutzereingabe kommt - ist ein Tippfehler. Haben Sie beide Möglichkeiten berücksichtigt? –

+0

Gute Punkte. Der Name existiert bereits, er wird von woanders kopiert, und ich verstehe nicht, warum er scheinbar von einer Programmausführung in eine andere kopiert wird. Dennoch macht der Punkt viel Sinn; Ich werde Zeile für Zeile suchen, wenn ich etwas Dummes wie Trim (aName) an einer Stelle gemacht habe und nicht an einer anderen Stelle. ... Danke fürs antworten, ich schätze es (wie immer). –

+0

Ist es möglich, dass der Name eingefügt, aber nicht gepostet wurde? (Ie sitzt in einem Puffer und nicht gespeichert?) –

Antwort

1

In delphi XE7 gibt es ein ernstes Problem TClientDataSet.Locate und es funktioniert nicht mit einigen Feldern bei QualityCentral [127703]

Verwandte Themen