![]() |
Datenbank: Paradox • Zugriff über: Datasource
DBGrid speichert nicht die Daten ab
Sers Delphi-Programmierer,
folgendes Problem: nämlich programmier ich ein Passwort Manager mit einem dbgrid, datasource, ttbale und den dazugehörigen dbedits. Dabei möchte ich die DBGrid Tabelle als .txt Datei und .csv abspeichern. Was auch bisher klappt, blos in der Datei selbst werden folgende Dinge reingeschrieben: TPF0TColumnsWrapperColumnsDropDownRowsExpanded FieldNameBenutzerReadOnly WidthïVisible DropDownRowsExpanded FieldNamePasswortReadOnly WidthöVisible aber die Daten die in den einzelnen Zeilen und Spalten werden nicht in die .txt bzw. .csv reingeschrieben. Quellcode zum abspeichern als .csv:
Delphi-Quellcode:
procedure TForm1.BitBtnprintexcelClick(Sender: TObject); //Als Excel Datei speichern
var saveDialog: TSaveDialog; begin saveDialog := TSaveDialog.Create(self); saveDialog.FileName := 'passwort'; saveDialog.Filter := 'CSV-Dateien|*.csv'; //Datei-Filter saveDialog.DefaultExt := 'csv'; saveDialog.Options := [ofOverwritePrompt]; if saveDialog.Execute then begin DBGridPW.Columns.SaveToFile('passwort.csv'); end; end; Wie bekomm ich die einzelnen Daten aus der DBGrid raus? Mit freundlichen Grüßen kumar89 |
Re: DBGrid speichert nicht die Daten ab
Zitat:
Folgende Zeile speichert NICHT den Inhalt des DBGrid
Delphi-Quellcode:
sondern nur die Einstellungen der Spalten (=Columns).
DBGridPW.Columns.SaveToFile('passwort.csv');
So wird nur die Reihenfolge und die Breite jede Spalte gespeichert. Um deine Daten zu Speichern musst du dich völlig vom DBGrid lösen und nur mit TDataset arbeiten. TDataset ist der Vater von TTable. Hier mal eine Quick & Dirty Variante, wie man die Daten als CSV speichern kann:
Delphi-Quellcode:
Der Code ist ungetestet, sollte aber das Grundprinzip zeigen.
procedure SaveDatasetAsCSV(ds:TDataset; const fn:string);
var list : TStringList; s : string; i : integer; begin list := TStringList.Create; ds.First; while not ds.Eof do // über alle Datensätze begin s := ''; for i := 0 to ds.Fields.Count-1 do // über alle Datenfelder begin s := s + ds.Fields[i].AsString+ ','; end; list.Add(s); ds.Next; end; list.Save(fn); list.Free; end; Das Einlesen einer CSV-Datei ist übrigens etwas schwieriger als das Speichern. |
Re: DBGrid speichert nicht die Daten ab
klappt net so wirklich :S gibts keine andere Möglichkeit?
|
Re: DBGrid speichert nicht die Daten ab
Hallo,
Zitat:
Zitat:
Heiko |
Re: DBGrid speichert nicht die Daten ab
Zitat:
![]() Du brauchst nur die Komponenten anschauen, die mit grünem FWS markiert sind. Ein Startpunkt wäre Pg CSV v.1.31 - hab ich selber schon verwendet. Auch wenn manche Komponenten nur bis Delphi 5 angegeben sind, sind sie in aller Regel auch unter höheren Delphi Versionen funktionsfähig. (aber nicht D2009) |
Re: DBGrid speichert nicht die Daten ab
Komponenten möchte ich nicht verwenden, würde es gern lieber programmieren.
Könntest mir vielleicht bissel erklären wie ich vorgehen sollte. :-D Danke |
Re: DBGrid speichert nicht die Daten ab
Was klappt denn nicht?
Beachte, dass folgender Sourcecode gegenüber Beitrag oben leicht verbessert wurde.
Delphi-Quellcode:
procedure SaveDatasetAsCSV(ds:TDataset; const filename:string);
var list : TStringList; s : string; i : integer; f : TField; begin list := TStringList.Create; ds.First; while not ds.Eof do // über alle Datensätze begin // erstelle kommagetrennten String über alle Felder s := ''; for i := 0 to ds.Fields.Count-1 do // über alle Datenfelder begin f := ds.Fields[i]; if f.DataType in ftNonTextTypes then // diese Datentypen können nicht exportiert werden else s := s + f.AsString+ ','; end; list.Add(s); ds.Next; end; list.SaveToFile(filename); list.Free; end; |
Re: DBGrid speichert nicht die Daten ab
der klappt blos wie ruf ich den auf? :D
|
Re: DBGrid speichert nicht die Daten ab
Wie wäre es denn mit
Delphi-Quellcode:
:?:
SaveDatasetAsCSV(DeinDBGrid.Datasource.Dataset, Dateiname);
|
Re: DBGrid speichert nicht die Daten ab
leider erscheint nix :-( kommt auch keine fehlermeldung
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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