AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TDataset im editmodus durchsuchen

TDataset im editmodus durchsuchen

Ein Thema von MyRealName · begonnen am 17. Feb 2020 · letzter Beitrag vom 18. Feb 2020
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#1

TDataset im editmodus durchsuchen

  Alt 17. Feb 2020, 17:13
Datenbank: egal • Version: 1 • Zugriff über: FireDac
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

AW: TDataset im editmodus durchsuchen

  Alt 17. Feb 2020, 17:22
Hmmm, Locate kennst bestimmt ... Delphi-Referenz durchsuchenTDataSet.Lookup suchst zwar "ohne" Scrollen, aber ich glaub das scrollt dennoch, nur ohne eben die Events auszulösen.


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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Feb 2020 um 17:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: TDataset im editmodus durchsuchen

  Alt 17. Feb 2020, 22:44
Warum läßt Du das nicht die DB machen?Die sollte das eigentlich können.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 05:03
Hallo,
Unique Index drauf
und mit einer 2. Query separat suchen
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#5

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 05:23
Moin...
Zitat:
und mit einer 2. Query separat suchen
+1
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 07:06
Moin...
Zitat:
und mit einer 2. Query separat suchen
+1
Zitat:
arbeite mit CachedUpdates, kann also nicht durch SQL in der DB nachfragen.
-1 ?
Chris
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#7

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 07:09
Zitat:
arbeite mit CachedUpdates, kann also nicht durch SQL in der DB nachfragen.
...das gilt nur die aktuelle Query. Eine separate Query, vorzugsweise dynamisch erzeugt, holt sich die Menge für die Prüfung.

also... +1

Geändert von haentschman (18. Feb 2020 um 07:21 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 07:37
(Ganz weit im Hinterkopf)
Gab es nicht sowas wie (virtuelle) Dataset Kopien?
Dort könnte man das vielleicht prüfen.
Gruß, Jo
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 08:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.993 Beiträge
 
Delphi 12 Athens
 
#10

AW: TDataset im editmodus durchsuchen

  Alt 18. Feb 2020, 08:25
Oder geht das über Cloned Cursor (mit denen habe ich nie gearbeitet)
Das wäre auch mein Ansatz, aber probiert habe ich das auch noch nicht.

Zitat:
arbeite mit CachedUpdates, kann also nicht durch SQL in der DB nachfragen.
...das gilt nur die aktuelle Query. Eine separate Query, vorzugsweise dynamisch erzeugt, holt sich die Menge für die Prüfung.
Eine solche Query berücksichtigt aber nicht die noch im Cache liegenden neuen Records.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz