Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Abfragen des aktuellen Wertes einer Tabelle (https://www.delphipraxis.net/163883-abfragen-des-aktuellen-wertes-einer-tabelle.html)

Flash68 20. Okt 2011 09:39

Datenbank: MSSQL • Version: 2008R2 Express • Zugriff über: Delphi/Ado

Abfragen des aktuellen Wertes einer Tabelle
 
Hallo zusammen,

ich möchte gern einmal den Inhalt des aktuellen selektierten Datensatzes abfragen. Zum einen möchte ich schauen ob eine Spalte Null ist und aber auch die Werte der anderen Spalten auslesen und dann weiterverwenden.

Gruß

Flash

DeddyH 20. Okt 2011 09:40

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Prima :thumb:

P.S.: Hast Du auch eine Frage dazu?

Flash68 20. Okt 2011 09:48

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ja wie ich an die Werte des aktuell dargestellten Datensatz/spalte des dbgrids bzw. der DBEdit komme, oder ob ich das anders angehen muß.

DeddyH 20. Okt 2011 09:51

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Das datensensitive Control hängt normalerweise an einer Datasource, welcher wiederum an einem Dataset hängt. Letzteres gilt es abzufragen (Fields, FieldValues, FieldByName sind Kandidaten dafür).
Delphi-Quellcode:
if DBGrid.Datasource.Dataset.FieldByName('Wuppdi').IsNull then
  ShowMessage('Steht nix drin');

Flash68 20. Okt 2011 10:14

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ist das dann auch der aktuelle wert und kann ich das benutzen wenn ich in die nächste Zeile wechsel?

mkinzler 20. Okt 2011 10:22

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Dort steht immer den Wert der selektierten Zeile/Datensatz drinnen.
Du kannst auf den Wechsel der Zeile reagieren (z.B. Event AfterScroll), dann steht der neue Wert in den Feldern.

DeddyH 20. Okt 2011 10:23

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Das ist der Wert des aktuellen Datensatzes.

Flash68 20. Okt 2011 10:29

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ich hab mir folgendes erstellt:

Delphi-Quellcode:
Procedure TFRM_NeuerAutor.NullCheck;
begin
  if dbg_autor.datasource.DataSet.FieldByName('Webseite').isnull then But_GoogleSuche.Enabled := true
    else But_GoogleSuche.Enabled := false
end;
was ich dann in die Formcreate Ereignis eingefügt habe und zusätzlich in das Ereignis ColEnter um auf den wechsel der zeile zureagieren

aber obwohl die nächste Zeile einen Wert in dem Feld hat ist der Button trotzdem enabled.

DeddyH 20. Okt 2011 10:31

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Erstens geht das auch kürzer:
Delphi-Quellcode:
But_GoogleSuche.Enabled := dbg_autor.datasource.DataSet.FieldByName('Webseite').isnull;
und zweitens ist der Code im OnAfterScroll des zugrundeliegenden Datasets wohl besser aufgehoben, wie Markus schon sagte.

[edit] Anders ausgedrückt: wenn Du immer dieselbe Datenbasis (also dieselben Felder) verwendest, dann kannst Du den Code direkt im OI im OnAfterScroll-Event des Datasets (TTable, TQuery, etc.) einfügen. IIRC wird beim Open automatisch ein First aufgerufen, was dieses Event auslösen müsste (ohne Gewähr). Sobald Du zur Laufzeit den aktiven Datensatz wechselst wird es aber immer ausgelöst. [/edit]

Flash68 20. Okt 2011 11:37

AW: Abfragen des aktuellen Wertes einer Tabelle
 
das funktioniert soweit, nur leider gibt es dann beim starten/compilieren des Programms einen Zugriffsfehler:00000394

und wie kann ich jetzt einen Inhalt eines Feldes auslesen?

himitsu 20. Okt 2011 11:39

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Zitat:

Zugriffsfehler:00000xxx
Tja, da ist irgendein Zeiger NIL (ein Objekt existiert nicht) ... also mußt du mal schauen was da fehlt, rausfinden warum es fehlt und schauen wie man dieses behebt.
PS: Genau dafür wurde der Debugger erfunden ... nun muß man ihn nur noch benutzen.

Wir können da nichts machen, da wir deinen Code ja nicht kennen.

mkinzler 20. Okt 2011 11:54

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Zitat:

und wie kann ich jetzt einen Inhalt eines Feldes auslesen?
Delphi-Quellcode:
dbg_autor.datasource.DataSet.FieldByName('<Feldname>').Value
als varianter Datentyp oder als Cast auf einen konkreten Typ:
Delphi-Quellcode:
dbg_autor.datasource.DataSet.FieldByName('<Feldname>').asInteger

DeddyH 20. Okt 2011 12:10

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Wenn man weiß, welches Dataset es ist, kann man sich den Umweg über das DBGrid doch sparen, das sollte ja nur ein Beispiel meinerseits sein. Wenn man nämlich dieser Kette nachgeht und Datasource oder Dataset sind nicht zugewiesen, dann muss es ja knallen, sobald man auf die Felder zugreift.

JoBoCAD 20. Okt 2011 14:14

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Hallo Zusammen,

kann ich bei einem DBGrid ähnlich wie bei einem Stringgrid
die einzelnen Zellen abfragen.

/* Beispiel Stringgridabfrage
wert:=stringgrid1.cells(x,y);

Wie lautet ein vergleichbarer Befehl für das DGBrid


Gruß
Joachim

Flash68 20. Okt 2011 14:26

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ich habe eine tabelle die aus Autoren besteht und in der ich auch deren Webseite eintragen möchte und wollte nur wenn keine eingetragen ist nach der suchen mit dem Button, aber ich habe festgestellt das so ein Googlesuche darin ganz praktisch ist und lasse den Button jetzt immer enabled.

Danke nochmal für die Hilfe.

mkinzler 20. Okt 2011 14:27

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ein datensensitives Control ist über eine Datenquelle mit einem DataSet verknüpft. Ich würde immer über dieses gehen ich käme/rasiere ja auch mich und nicht mein Bild im Spiegel ( :wink: )

DeddyH 20. Okt 2011 14:30

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ach was :mrgreen:

JoBoCAD 20. Okt 2011 15:02

AW: Abfragen des aktuellen Wertes einer Tabelle
 
wie sieht das Beispiel vom Stringgrid für ein DBGrid in Programmcode aus ?

Gruß
Joachim

mkinzler 20. Okt 2011 15:08

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Ich glaube du hast das Prinzip nicht verstanden, das GRID ist nur die Anzeige.

JoBoCAD 20. Okt 2011 15:16

AW: Abfragen des aktuellen Wertes einer Tabelle
 
ich arbeite mich Stück für Stück ran :-)

Meine Absicht bestand darin eine CSV-Datei in ein DBGrid zu lesen.
Für meine Zwecke ist das Arbeiten mit Stringgrids wohl besser.

Gruß
Joachim

mkinzler 20. Okt 2011 15:21

AW: Abfragen des aktuellen Wertes einer Tabelle
 
Nein, warum? Lese die CSV-Datei doch gleich in ein DataSet ein (z.B. ein CSVDataSet; ist Teil der JVCL)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 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