Entwickler-Ecke
Datenbanken - DBGrid
opfer.der.genauigkeit - Di 28.01.03 15:59
Titel: DBGrid
Ich hab ne Datenbankabfrage auf ein DBGrid um dort Datenbankfelder anzuzeigen.
Ich möchte nun in diesem DBGrid direkt auf die vorhandenen Felder des GRIDS gehen und diese lesen.
Ich habe schon ein paar Varianten probiert...
Also über die Query in die Datenbank...
Aber das Ergebnis ist nicht zu gebrauchen, da ich die Felder mit einem Pointer an einen Record übergebe und dann über Pointer von dort aus in ein anderes Formular übergebe.
Und da ich bei diesen Vorgang nur bestimmte Werte brauche, die nur im Grid vorkommen, und nicht alle Werte aus der Query, suche ich nun bei euch Antwort.
Die Funktion FieldCount-1 vom Grid geht bei mir nicht...
Vielleicht kann mir auch da jemand weiterhelfen.
Warum ich keine DBFelder benutze und die dann dem anderen Formular nur die ID übergebe... gute Frage... ich brauch ne Herausforderung. :wink:
opfer.der.genauigkeit - Di 28.01.03 16:44
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| anker := nil; for i := 0 to tsDBGrid1.FieldCount-1 do begin //funzt net {for i := 0 to OEQuery1.FieldCount-1 do begin} //funzt new(p1); p1^.txt := tsDBGrid1.Field[i].Asstring; //funzt net {p1^.txt := OEQuery1.Fields[i].AsString;} //funzt p1^.next := nil; if anker = nil then anker := p1 else begin p2 := anker; while (p2^.next <> nil) do p2 := p2^.next; p2^.next := p1; end; |
Jetzt stellt euch noch n Grid und nen Record dazu vor.
Das soll die Routine sein, mit der ich aus dem Grid lese...
Der alte Code funktioniert... nützt mir aber nix.
smiegel - Di 28.01.03 16:54
Hallo,
@opfer.der.genauigkeit
Anscheinend begehst Du einen Denkfehler. Das Grid ist nur der Anzeigecontainer für eine Table oder eine Query.
Wenn Du auf die darunterliegenden Daten zugreifen willst, musst die Eigenschaft
Datasource.Dataset bemühen.
Folgend ein Beispiel, aus der Delphi-Hilfe:
| Zitat: |
Das folgende Beispiel kopiert markierte Zeilen eines DB-Gitters in ein Listenfeld.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Button1Click(Sender: TObject); var i, j: Integer; s: string; begin if DBGrid1.SelectedRows.Count>0 then with DBGrid1.DataSource.DataSet do for i:=0 to DBGrid1.SelectedRows.Count-1 do begin GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); for j := 0 to FieldCount-1 do begin if (j>0) then s:=s+', ';
s:=s+Fields[j].AsString; end; Listbox1.Items.Add(s); s:= ''; end; end; |
|
opfer.der.genauigkeit - Di 28.01.03 17:10
| smiegel hat folgendes geschrieben: |
Wenn Du auf die darunterliegenden Daten zugreifen willst, musst die Eigenschaft Datasource.Dataset bemühen. |
Diese Antwort hatte ich befürchtet *g*, ist der gleiche Zugriff als würde ich über die Query gehen bzw. es ist eigentlich genau das, der Code greift auch direkt auf die Query zurück.
Bringt mir also auch nix. Trotzdem danke. :)
Die Daten müßen sich ja irgendwo in der Schwebe im Grid befinden... genau diese Daten möchte ich haben.
P.S.: Den Code in der Hilfe hab ich auch schon durchgelesen. *GGG*
opfer.der.genauigkeit - Di 28.01.03 17:41
Ok Leude hat sich erledigt.
Wenn ich es über die Query mache und die SQL- Abfrage umstelle funktioniert das auch was ich will. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!