AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid Zeile selektieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid Zeile selektieren

Ein Thema von Smiley · begonnen am 11. Jul 2005 · letzter Beitrag vom 12. Jul 2005
Antwort Antwort
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

DBGrid Zeile selektieren

  Alt 11. Jul 2005, 18:26
Datenbank: ADO Access • Zugriff über: ADO-Query
Ich verwende eine Datenbank mit ADO und einer SQL-Query zum Filtern der Daten. Die daten werden in einem DBGrid und der aktuelle Datensatz in einer Liste von Edit-Feldern dargestellt. In den Edit-Feldern wird die Dateneditierung vorgenommen. Das DBGrid ist nur zur Auswahl des Datensatzes vorgesehen. Auf diese Weise kann ich die Dateneingabe genau prüfen und Eingabefehler abfangen.

Ich möchte in einem DBGrid den aktuellen Datensatz markiert anzeigen, wie bekomme ich das hin ?
Der Grund ist, ich will einen Datensatz der mit dem DBGrid ausgewählt wurde, in Editfeldern, bearbeiten und dann nach dem speichern der Daten auf den nächsten Datensatz springen. Dieser soll in dem DBGrid dann in der Mitte des Grid ausgewählt sein, sodass man gleich beim nächsten Datensatz wieder weitermachen kann.

Ist es möglich mit einem SQL-Query einen Datensatz anzuwählen und trotzdem alle Datensätze im Grid anzuzeigen.
Oder geht das nur mit einer Table-Componente und dem Locate oder Seek-Befehl, oder sollte ich lieber mit dem ADO-Dataset arbeiten.

Kann es sein, dass diese beiden Befehle mir bei der Lösung meines Problemes helfen ?

Grid.DataSource.DataSet.GotoBookmark(pointer(Grid. SelectedRows.Items[i]));
DataSet.GotoBookmark(pointer(Grid.SelectedRows.Ite ms[i])

wie setze ich das für mein Problem richtig ein.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: DBGrid Zeile selektieren

  Alt 11. Jul 2005, 18:41
Hallo Smiley,

die Markierung des aktuellen Datensatzes im DBGrid wird von der Komponente schon selbst erledigt. Du kannst ein wenig an der Optik feilen, indem du in den Options deines DBGrid dgAllwaysShowSelection und dgRowSelect hinzufügst.

Die ständige Positionierung des aktuellen Datensatzes in der Mitte des Grids halte ich nicht für notwendig, da dass bei n sichtbaren Zeilen genau für n Zeilen gar nicht möglich sein wird - n/2 jeweils am Beginn der Query und an deren Ende. Außerdem fällt mir auf die Schnelle auch nicht ein, wie ich das elegant lösen könnte.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: DBGrid Zeile selektieren

  Alt 11. Jul 2005, 19:47
Danke marabu,
die optionen hatte ich schon gesetzt, das klappt auch.
Ich muss nur leider nach dem speichern der Daten noch eine Summe aus der Datenbank berechnen und danach muss ich die Liste wieder mit der alten Position anzeigen.
Das mit der Markierung in der Mitte ist nicht so wichtig.
Jetzt die Frage, soll ich die Summenberechnung über eine andere Datasource machen oder nach der Berechnung neu positionieren.
Wie mache ich das mit den Bookmark-Befehlen, muss ich da über das Dataset gehen oder das Grid oder das Query.
(Bitte ein Beispiel für get.bookmark und gotobookmark).
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: DBGrid Zeile selektieren

  Alt 11. Jul 2005, 20:02
Wenn du die Daten mit dem vorhandenen Dataset schon im Zugriff hast, dann nimm ein Bookmark:

Delphi-Quellcode:
var
  bm: TBookmark;
begin
  bm := Query.GetBookmark;
  ...
  Query.GotoBookmark(bm);
  Query.FreeBookmark(bm);
end;
marabu
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: DBGrid Zeile selektieren

  Alt 11. Jul 2005, 20:45
Hat prima geklappt, jetzt funktioniert das alles.

Nur noch zu der anderen Frage mit dem suchen im Query.
Ich möchte nach einem Datensatz in der Datenbank suchen aber alle Datensätze anzeigen.
Nur der gefundene soll aktiv sein.
Lösung 1: Mit SQL-Befehl suchen und Datensatz mit Bookmark merken, dann Select ohne Filter und Bookmark setzen.
Lösung 2: Über zusätzliche Table-Komponente oder ADO-Dataset suchen wärend die Query bestehen bleibt. Wie kann ich dann den gefundenen Satz aktuell machen oder wirkt sich das auch auf die Query aus ?
Die zweite Lösung wäre gut, wenn ich in den gesuchten Daten nur etwas auslesen und verarbeiten will, die Anzeige aber bestehen bleiben soll.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: DBGrid Zeile selektieren

  Alt 11. Jul 2005, 21:29
Wenn der von dir gesuchte Datensatz bereits in der offenen Query enthalten ist, dann würde sich Lösung 3 anbieten:

Query.Locate('Nachname;Vorname', VarArrayOf(['Schmidt', 'G']), [loCaseInsensitive, loPartialKey]); Der gefundene Datensatz wird zum aktuellen Datensatz - ohne dein Zutun.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: DBGrid Zeile selektieren

  Alt 11. Jul 2005, 21:53
Waaaaaaaass ich kann im Query den locate befehl benutzen ?????? dann mach ich mir ja ganz umsonst soviele Gedanken.

Wie kann ich herausfinden, was ich z.B. mit dem Query Befehl alles machen kann, ich befinde mich mit der Delphi-Hilfe nämlich im Kriegszustand. Sie sagt mir nie das was ich suche und wenn ja, dann so unverständlich, dass ich es nicht ganz verstehe.
Möglicherweise habe ich einfach die Bedienung der Hilfe nicht richtig verstanden. (Wären da mehr Beispiele drin, hätte ich schon viel mehr verstanden).

Kannst Du mir anhand des Query Befehles sagen, wie ich vorgehe um alle Möglichkeiten erklärt zu bekommen.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: DBGrid Zeile selektieren

  Alt 12. Jul 2005, 06:09
Zitat von Smiley:
... Kannst Du mir anhand des Query Befehles sagen, wie ich vorgehe um alle Möglichkeiten erklärt zu bekommen. ...
Hai Smiley,

selektiere auf deiner Form die TQuery-Komponente und drücke F1. Jetzt siehst Du die allgemeine Hilfe zu deinem TQuery. Wenn Du jetzt auf Methoden klickst sollte ein zusätzliches Fenster mit allen Methoden die bei einem TQuery zur verfügungstehen aufgehen und Du kannst dir die Erklärungen ansehen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: DBGrid Zeile selektieren

  Alt 12. Jul 2005, 20:02
Auf die Idee auf dem Form etwas anzuklicken und dann F1 zu drücken bin ich gar nicht gekommen.
Habe es immer nur aus dem Edito probiert.

Es sind zwar viele Dinge in der Hilfe nicht ausführlich genug erklärt, aber das Grundprinzip wird beschrieben.

Danke für Eure Geduld
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: DBGrid Zeile selektieren

  Alt 12. Jul 2005, 20:07
Der Objekt-Inspektor ist auch F1-sensitiv - also nach der Auswahl einer Komponente (in Palette oder auf Form) einfach eine Eigenschaft oder ein Ereignis markieren und F1 drücken...

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:34 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