![]() |
DBGrid in ein StrGrid, oder besser gleich nach Excel
Hallo an alle Delphianer!!
:gruebel: Wie bekomme ich die Daten von einem DBGrid in ein StrGrid, oder besser gleich nach Excel um sie weiter Auswerten zu können. Die Daten kommen von einem MS SQL 2000 Server, über ADO greife ich auf Gespeicherte Prozeduren vom Server zu dies gebe die Daten in ein DBGrid, und in mehreren Edit Felderen aus :roteyes: vielen dank Pumba |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
Du denkst da verkehrt rum. Vergesse das Grid, insbesondere das DBgrid und schreibe die Daten direkt in eine Datei. Die muß natürlich so aufgebaut sein, daß Excel was damit anfangen kann. Am besten mit festen Feldlängen.
|
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
Nee, noch anders ;-)
Anstatt die Daten in Dein DBGrid zu schreiben (ok, musst Du evtl. zur Anzeige beim User) schreibst Du Dir eine Routine, um die Daten direkt nach Excel zu schreiben. Du führst also Deine SQL-Abfrage aus und schreibst dann zeilenweise die Daten nach Excel. Schau Dir dazu mal die Office-Komponenten in Delphi an, das geht sehr gut und einfach damit. Gruß Igotcha |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
Oder direkt mit ADO und der Jet-Engine:
![]() |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
Kommt halt drauf an, Pumba, was du genau tun willst :roll:
Ich hab das auch mal gemacht, also von der Datenbank erst in ein DBGrid, dann in ein StringGrid und schließlich nach Excel, aber das musste ich so machen, weil ich mehrere Querys nacheinander habe laufen lassen und im STringGrid jeweils die neuen Daten im DBGrid mit den vorhandenen verglichen habe. Und als Möglichkeit für den User habe ich den Export nach Excel eingebaut... Wenn du sowas in die Richtung machen willst (und verstanden hast, was ich da geschrieben hab :mrgreen: ) hier ein paar Codes zum Nachgucken:
Delphi-Quellcode:
Und hier dann der Export nach Excel:
rowCount := 0;
//Übernehmen der Daten aus der DBGrid in ein StringGrid while not qryDatenbank.Eof do begin for k := 0 to DBGrid.Columns.Count - 1 do begin StringGrid.Cells[k, rowCount] := DBGrid.Fields[k].AsString; qryDatenbank.Next; end; rowCount := rowCount + 1; StringGrid.RowCount := rowCount; end;
Delphi-Quellcode:
hoffe, das hilft dir weiter :wink:
procedure ExcelSpeichern;
var RowC, ColC: integer; Str: string; StrList: TStringList; begin //zunächst wird hier eine csv-Datei erstellt: StrList := TStringList.Create(); for RowC := 0 to sgGarantie_Daten.RowCount - 1 do begin Str := ''; for ColC := 0 to sgGarantie_Daten.ColCount - 1 do Str := Str + sgGarantie_Daten.Cells[ColC, RowC] + ';'; Delete(Str, length(Str), 1); // löscht den überfluessigen String StrList.Add(Str); end; StrList.SaveToFile('tmpExcel.csv') //dann wird die Datei mit Excel geöffnet: ShellExecute(Application.Handle, 'OPEN', pchar(ExtractFilePath (Application.ExeName) + 'tmpExcel.csv'), NIL, NIL, SW_NORMAL); // und schließlich die csv-Datei wieder gelöscht DeleteFile(ExtractFilePath(Application.ExeName) + 'tmpExcel.csv'); end; |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
:dancer: Super danke an alle,
aber einen besonderen Dank :cheers: und ein dickes Bussi :oops: an Klarabella den das war genau das was ich gesucht habe, hab's auch schon ausprobiert und es funktioniert enwandfrei alles liebe Pumba :hello: |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
@klarabella
Ich hab das bei mir auch mal probiert aber das mit dem Excel öffnen haut bei mir nicht hin. Fehler: undefinierter Bezeichner ShellExecute! Was muss ich tun? Kann jemand helfen? MfG recordable |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
ShellApi in USES-Klausel einbinden, dann sollte es funktionieren.
Grüße Mikhal |
Re: DBGrid in ein StrGrid, oder besser gleich nach Excel
Danke für die fixe Antwort hatte ShellApi vergessen! :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 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 by Thomas Breitkreuz