AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Auf einen Datensatz in einem Resultset positionieren (Locate)

Auf einen Datensatz in einem Resultset positionieren (Locate)

Ein Thema von MPirnstill · begonnen am 1. Aug 2019 · letzter Beitrag vom 2. Aug 2019
Antwort Antwort
Seite 2 von 2     12
jobo

Registriert seit: 29. Nov 2010
2.599 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 10:23
Ich denke der Hinweis von mkinzler ist genau richtig, wenn auch knapp.

Und ich verstehe nicht, warum ein Locate verboten sein soll. Der Anwendungsfall, bei dem in einem Dateset auf einen bestimmten Datensatz gesprungen wird (werden soll) ist doch hier niemand bekannt.

Wieso wird sowas immer gleich so niedergemacht. Filter ist etwas anderes als Locate, Query mit Where Clause sowieso.

Wieso kann man nicht fragen, was gewollt und bekannt ist, statt zu behaupten, das sei alles falsch.

Und wenn ein Locate nicht funktionieren sollte, der Anwendungsfall aber diese Funktion benötigt, würde man wohl darüber schreiben müssen, wie man es nachbaut.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
196 Beiträge
 
Delphi XE8 Enterprise
 
#12

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 10:36
Also ursprünglich war das mal eine TTable und man konnte mit dem DBNavigator in der Datenmenge vor- und zurückblättern, editieren, usw.
Dafür brauche ich doch die kompletten Datensätze, oder nicht?

Aber da es natürlich durch einfach blättern von Datensatz zu Datensatz zu mühselig/langwierig für die Anwender ist zu einem bestimmten Datensatz zu gelangen, mache ich auf Knopfdruck ein Suchfenster auf, wo der Anwender seine Suchparameter eingeben kann, wobei ich schon bei der Eingabe eine Ergebnismenge im Suchfenster anzeige. Klickt der Anwender dann auf eine Datensatz in der Ergebnismenge nehme ich mir den PI und will damit auf den DS im Adressdialog zu positionieren. Früher als noch TTable war per FindKey, später als es auf TQuery umgestellt war mit Locate.

Und das ging auch recht gut bis jetzt aufgefallen ist, das ...

- bei der Datenmenge, die für die Anwender nach Namenfeld sortiert ist, der PI 749 in der Datenmenge vor 74 liegt.
z.B.
PI Name
749 Hugo
..
..
74 Klaus

der Locate sieht so aus ...
Code:
      Locate('Adress_ID', StrToInt(aID), [loPartialKey]);
Da das Eingabefeld für den Suchbegriff ein alphanumerisches Feld ist, wandele ich es hier mit StrToInt um, aber das scheint locate nicht zu interessieren und positioniert deshalb auf "749 Hugo".

Ich hoffe, ich konnte hiermit verständlicher machen, in welcher Weise ich hier vorgehe. Mir wurde immer gesagt, viele Wege führen nach Rom.
Wenn der Ansatz falsch ist, wäre dankbar für eine kurze Beschreibung der richtigen Herangehensweise.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.389 Beiträge
 
Delphi 7 Personal
 
#13

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 10:38
"Verboten" hab ich nirgendwo gesehen. Aber es ist schon die Frage was eigentlich erreicht werden soll.
Wenn z.B. alle Kunden in Mannheim zur Auswahl stehen sollen, würde ich es so lösen, daß ich zuerst die Kundennamen+ID hole und dann, nach der Auswahl, an hand der ID die vollständigen DatenSätze für das Edit.
Wenn es sich aber um eine Hand voll Datensätze handelt die man vollständig mit sich schleppen kann, dürfte der Weg über Locate oder ähnliches wohl effizienter sein.

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

Registriert seit: 19. Jul 2004
Ort: Burgdorf
196 Beiträge
 
Delphi XE8 Enterprise
 
#14

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 10:38
das hört sich eher nach der Option loPartialKey an.
Meinst du damit, das ich loPartialKey hier weglassen soll?

Ich werde das mal ausprobieren. Muss ich aber aufpassen, da ich den Suchdialog auch für andere Dialoge verwende.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!

Geändert von MPirnstill ( 2. Aug 2019 um 10:41 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.434 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#15

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 11:00
Zitat:
Meinst du damit, das ich loPartialKey hier weglassen soll?
Ja. Bewirkt, dass teilweise Übereinstimmungen erkannt werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
196 Beiträge
 
Delphi XE8 Enterprise
 
#16

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 11:16
Zitat:
Meinst du damit, das ich loPartialKey hier weglassen soll?
Ja. Bewirkt, dass teilweise Übereinstimmungen erkannt werden.
Hab's ausprobiert. Ohne den Parameter findet und positioniert "locate" auf den richtigen Datensatz.
Vielen Dank an alle.


P.S.:
Noch kurz zur Herangehensweise.
Als ich da Programm 1994 geschrieben hab, wo Delphi noch BDE hat und so, hat man doch mit TTable und DBNavigator gearbeitet.
Ist ja auch nur ein kleiner Dialog innerhalb einer größeren Anwendung.
Als ich dann auf TQuery umgestellt hab, hatte ich die im Prinzip nur ausgetauscht und anstelle FindKey dafür Locate verwendet.
Ich das, in dieser Weise wirklich so falsch?
Ich mein unter der Oberfläche könnte ich Anpassungen vornehmen, aber ich weiß nicht, ob ihr das kennt, der Anwender ist ein Gewohnheitstier
und wenn ich die Oberfläche verändere, kommen bestimmt wieder Proteste.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.227 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 11:28
Zitat:
Und ich verstehe nicht, warum ein Locate verboten sein soll...
Wieso wird sowas immer gleich so niedergemacht.
...weil es eben nicht immer funktioniert.

ca. 700.000 Einträge. Die ersten sagen schon alles. ADO hat damit sowieso seine Probleme.
https://www.google.de/search?source=...4dUDCAc&uact=5
Miniaturansicht angehängter Grafiken
locate.png  
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.599 Beiträge
 
Delphi 2010 Enterprise
 
#18

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 12:39
Können mehr als 700T google Treffer irren?

meine Suchbegriffe zur Gegenprobe: c# dataset locate probleme

Gemäß der Ergebnisanzahl von 5,4 Mio empfehle ich dann konsequent am besten gleich gar kein C#
einzusetzen.
Es scheint ungefähr 8 Mal so problematisch zu sein.
Gruß, Jo
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.599 Beiträge
 
Delphi 2010 Enterprise
 
#19

AW: Auf einen Datensatz in einem Resultset positionieren (Locate)

  Alt 2. Aug 2019, 12:46
Noch kurz zur Herangehensweise.
Als ich da Programm 1994 geschrieben hab, wo Delphi noch BDE hat und so, hat man doch mit TTable und DBNavigator gearbeitet.
..
Als ich dann auf TQuery umgestellt hab, hatte ich die im Prinzip nur ausgetauscht und anstelle FindKey dafür Locate verwendet.
Ich das, in dieser Weise wirklich so falsch?
..
Falsch ist m.E. nicht der richtige Ansatz.
Es gibt Probleme, die idR priorisiert werden und es gibt Aufwände, diese Probleme zu beheben.
Wenn die Lösung von mkinzler für Dein Problem funktioniert, scheint es mir einfach sehr effizient zu sein.

Und ich möchte nicht wissen, wie viele alte BDE Programme so umgestellt wurden wie Du es grob beschrieben hast. Es ist nicht unbedingt ideal, aber wer würde sich beschweren, wenn es funktioniert.

Und klar, wenn man etwas nicht ganz besonders richtig macht, fällt es einem irgendwann auf die Füße und tut weh. Mit dem Risiko muss man eben leben.

Jenachdem wen Du fragst, wirst Du eine andere Antwort erhalten.
Gruß, Jo
  Mit Zitat antworten Zitat
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 10:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf