Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi table auf stringgrid abbilden (https://www.delphipraxis.net/67247-table-auf-stringgrid-abbilden.html)

boserPascal 11. Apr 2006 20:38

Datenbank: MS SQL Server • Version: 2005 • Zugriff über: ODBC Alias

table auf stringgrid abbilden
 
Guten Abend,

worin besteht hier der Fehler? Das Programm soll aus einer beliebigen Datenbank von MS SQL Server Daten abholen und im Stringgrid darstellen (also eine Tabelle daraus). Alle Versuche sind bis jetzt gescheitert etwas anzuzeigen. Die Tabelle in der Datenbank soll 1:1 im Stringgrid abgebildet werden.

Der Ansatz ist aus einer ähnlich lautenden Diskussion, die aber auf DBGrid verwies, was mir in meinen Augen nichts bringt.

Delphi-Quellcode:
query1.sql.Add('SELECT * FROM tabelle');      
query1.Open;
while not (table1.Eof) do
begin
     for x:=0 to Table1.FieldCount-1 do
         stringgrid1.Cells[x,Table1.RecNo]:=Table1.Fields[x].asString;
     table1.next;
end;
Vielen Dank im vorraus!

mkinzler 11. Apr 2006 20:44

Re: table auf stringgrid abbilden
 
Zitat:

Der Ansatz ist aus einer ähnlich lautenden Diskussion, die aber auf DBGrid verwies, was mir in meinen Augen nichts bringt.
Und warum nicht? Deshalb gibt es ja das DBGrid.
Und außerdem solltest du dich entscheiden ob Table oder Query. RecNo als Index ist auch nicht so gut, nimm lieber eine andere laufvariable.
Delphi-Quellcode:
query1.sql.text := 'SELECT * FROM tabelle';      
query1.Open;
Query1.First;
y := 0;
while not query1.Eof do
begin
     for x:=0 to Query11.FieldCount-1 do
         stringgrid1.Cells[x,y]:=Query1.Fields[x].asString;
     Query11.next;
     inc(y);
end;

boserPascal 11. Apr 2006 21:20

Re: table auf stringgrid abbilden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die schnelle Antwort. Das Problem ist nur ,dass der Code von dir eine Schutzverletzung verursacht, seltsamerweise.
Das unten Query11 und oben Query1 steht ist sicherlich ein Tippfehler. Das mit dem Zusammenspiel der Komponenten wußte ich nicht diese Datenbank-Geschichte ist absolutes Neuland für mich.

Der Fehler ist im Anhang, er tritt nicht auf wenn ich Query1.FieldCount-1 durch 1 ersetz ab 2 kommt er wieder.

Der FieldCount hat einen Wert von 44, und der Fehler tritt au wenn der Index von Query1.Fields[x].asString größer 1 wird.


Zu der Frage warum nicht DBGrid, ich will die Daten in einer Tabelle speichern und auswerten ob das nun auch mit einem DBGrid geht, lass ich mich gerne eines besseren belehren (Ich programmier normalerweise kein Delphi). Auf jeden Fall hab ich alle Prozeduren bis jetzt mit Stringgrid realisiert und hatte keine Probleme. Hab vorher mySQL genommen, dass war bei weiten einfacher. Muß aber die Daten leider auf einen MS SQL Server legen.

Mackhack 11. Apr 2006 21:30

Re: table auf stringgrid abbilden
 
Hi,

du brauchst mit einem DBGrid noch net mal ne Query. Das Grid an die DataSource binden, oeffnen, DataSource Active auf True und dir wird die gesamte Tabelle angezeigt!

mkinzler 11. Apr 2006 21:37

Re: table auf stringgrid abbilden
 
Möglicherweise mußt du die Größe des Grids noch mit .ColCount und .RowCount anpassen.

boserPascal 11. Apr 2006 21:41

Re: table auf stringgrid abbilden
 
Zu dem Fehler noch mal, kann das am Datentyp liegen? Weil ich hab noch keine Tabelle auf dem Server und hab einfach eine von MS genommen aus der MASTER Datenbank.
Und wenn ich mir die Funktion Query1.Fields[x].asString genauer anseh bietet sie verschiedene Datentypen, wie mach ich dann aber ein Typcasting auf String bspw von Float?

Ich hab die Größe auf 50x50 da sollte eine 44x5 Tabelle reinpassen, aber Danke für den Hinweis.

mkinzler 11. Apr 2006 21:47

Re: table auf stringgrid abbilden
 
Zitat:

wie mach ich dann aber ein Typcasting auf String bspw von Float?
das macht das .asString

boserPascal 11. Apr 2006 21:54

Re: table auf stringgrid abbilden
 
Zitat:

Zitat von mkinzler
Zitat:

wie mach ich dann aber ein Typcasting auf String bspw von Float?
das macht das .asString

Dann ist es aber seltsam das er die ersten beiden Spalten liest (0 und 1), denn Kopf liest er auch ohne Probleme.
Zu dem Vorschlag mit dem DBGrid kann ich da zellenweise was einlesen, den Wert schreibt eine procedure die von einem Event-handle ausgelöst wird? Weil .cells[] fehlt ja dort.

Noch zu der Query-Komponente kann ich die Verbindungs-Parameter im Programm übergeben, so dass der Verbindungsdialog nicht jedesmal erscheint?

mkinzler 11. Apr 2006 22:08

Re: table auf stringgrid abbilden
 
Zitat:

Noch zu der Query-Komponente kann ich die Verbindungs-Parameter im Programm übergeben, so dass der Verbindungsdialog nicht jedesmal erscheint?
In der ADOConnection .LoginPrompt auf false, und die Verbindungsparameter setzen.

Zitat:

Zu dem Vorschlag mit dem DBGrid kann ich da zellenweise was einlesen, den Wert schreibt eine procedure die von einem Event-handle ausgelöst wird? Weil .cells[] fehlt ja dort.
Ein DBGrid verbibdest du mit dem Query ( über DataSource) und das Grid wird automatisch mit den daten der Abfrage/Tabelle gefüllt.

boserPascal 12. Apr 2006 12:50

Re: table auf stringgrid abbilden
 
Zitat:

Zitat von mkinzler
In der ADOConnection .LoginPrompt auf false, und die Verbindungsparameter setzen.

Ein DBGrid verbibdest du mit dem Query ( über DataSource) und das Grid wird automatisch mit den daten der Abfrage/Tabelle gefüllt.

ADOConnection finde ich bei mir nicht. Ich hab aber erfolgreich einen Weg über Database gefunden.

Die Frage ist eher ob ich das DBGrid zur Laufzeit manipulieren kann? Sprich bearbeiten.

Ich hab jetzt mal selbst eine Tabelle und Datenbank über Query erzeugt und siehe da es geht. Alle Daten (alle TEXT) werden eingelesen.
Jetzt ist nur noch das Problem wie stelle ich fest das die Tabelle/Datenbank schon vorhanden ist bzw so den Fehler auswerte, dass ich die SQL-Anweisung verwerfe?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.
Seite 1 von 2  1 2      

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