![]() |
Datenbank: egal • Version: 1 • Zugriff über: FireDac
TDataset im editmodus durchsuchen
Hallo,
ich wollte mal sehen ob es eine Möglichkeit gibt, das folgende einfach zu tun : Sagen wir ich habe ein Dataset mit einem Integerfeld (in Wahrheit sind es 3 Felder, tut aber nichts zur Sache, will nur vermeiden, dass Vorschläge wie "Nimm eine Generic list" kommen). Ich will vermeiden, dass eine Zahl doppelt reinkommt, arbeite mit CachedUpdates, kann also nicht durch SQL in der DB nachfragen. Kann man irgendwie beim "BeforePost" prüfen, ob der Wert schonmal eingegeben wurde ? Das Problem ist ja, dass ich im Editmode bin und nicht einfach den Cursor verschieben kann. Dazu müsste ich ein Post machen, dann bookmark nehmen, durchsuchen und dann wieder hinspringen und in den EditMode gehen. Geht das einfacher ? In einer Präsentation vor 1 oder 2 Jahren zu einem Preview einer neuen Delphi Version habe ich mal gesehen, dass man dataset in forin-Schleifen durchsuchen lassen kann (in der Zukunft damals) und kein TDataset.Next mehr ausrufen muss und das ging dann auch in einer Kopie automatisch, so dass die Cursorposition nicht geändert wird. Kam dazu mal was raus ? Oder geht das über Cloned Cursor (mit denen habe ich nie gearbeitet) Danke schonmal MRN |
AW: TDataset im editmodus durchsuchen
Hmmm, Locate kennst bestimmt ...
![]() Nain. Offiziell kommst nur durch Scrollen an andere Felder/Datensäte und dabei geht das Edit verloren, aber du kannst ja mal in den Protected-Property ala "Buffers" nachsehen (Typen TRecBuf, TValueBuffer, TRecordBuffer, ...), aber darfst dann auch die Werte selbst dort rauskopieren. (die vorhandenen TField-Instanzen greifen ja nur auf die aktuelle Zeile zu) Nja, man könnte zwar auf die internen Daten/Records zugreifen, aber dafür kenn ich jetzt es keine direkten API/Funktionen und praktisch kann/tut jeder Komponentenentwickler bei seinem Dataset die Daten anders speichern. Und das TDataSet selber hat noch garkeinen Speicher. Speichern, dann suchen und bei Fehler wieder zurück geht auch nicht so gut, weil dann beim Cancel wieder die neuen (falschen) Daten im Record stehen. Bzw. im BeforePost das Alte merken (Field.OldValue, wird quasi autormatisch im BeforEdit kopiert), dann speichern, suchen, bei Fehler das Neue/aktuelle merken, das Alte wieder rein und speichern, Edit wieder öffnen und die neue Kopie zurück ....... wenn du das jetzt verstanden hast, dann darfst es gern so machen. :stupid: |
AW: TDataset im editmodus durchsuchen
Warum läßt Du das nicht die DB machen?Die sollte das eigentlich können.
Gruß K-H |
AW: TDataset im editmodus durchsuchen
Hallo,
Unique Index drauf und mit einer 2. Query separat suchen |
AW: TDataset im editmodus durchsuchen
Moin...:P
Zitat:
|
AW: TDataset im editmodus durchsuchen
Zitat:
Zitat:
|
AW: TDataset im editmodus durchsuchen
Zitat:
also... +1 8-) |
AW: TDataset im editmodus durchsuchen
(Ganz weit im Hinterkopf)
Gab es nicht sowas wie (virtuelle) Dataset Kopien? Dort könnte man das vielleicht prüfen. |
AW: TDataset im editmodus durchsuchen
ClientDataset hat eine Clone-Methode, die für sowas gut ist.
Unique-Index auf das Feld (die Felder) + du bekommst beim Posten einen Fehler, wenn der Wert schon da ist. Du bekommst die Werte, die in der Query stehen ja von irgendwoher - hol sie dir 2x ab + du kannst in der 2ten Instanz beliebig suchen. Du bekommst die Werte, die in der Query stehen ja von irgendwoher - schau dort nach, ob es den Wert schon gibt. Bevor(!) du editierst, hol dir die daten, die dich interessieren in eine andere Struktur + validiere dort. Lass die Datenbank den Fehler entdecken. Benutze was anderes, das beim Post nicht gleich in die DB schreibt - zB wie die ClientDatasets. |
AW: TDataset im editmodus durchsuchen
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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