![]() |
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
|
Re: DBGrid speichert nicht die Daten ab
In Deinem DBGrid sind aber Daten zu sehen?
|
Re: DBGrid speichert nicht die Daten ab
ja da sind Daten zu sehen, aber es wird nirgendswo eine csv datei erstellt
|
Re: DBGrid speichert nicht die Daten ab
Zeig mal Deinen Aufruf.
|
Re: DBGrid speichert nicht die Daten ab
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;
Delphi-Quellcode:
procedure Tpmform.BitBtn1Click(Sender: TObject);
begin SaveDatasetAsCSV(DBGridPW.DataSource.Dataset, 'passwörter'); end; |
Re: DBGrid speichert nicht die Daten ab
Die csv sollte also in einer Datei namens "passwörter" gespeichert sein, wo immer die auch liegen mag. Gib lieber mal eine absoluten Pfad und die richtige Dateiendung an.
|
Re: DBGrid speichert nicht die Daten ab
geht danke geht des aber auch net mit saveDialog weil bei mir wirds net erkannt komischerweiße.
|
Re: DBGrid speichert nicht die Daten ab
Natürlich geht das auch mit SaveDialog.
|
Re: DBGrid speichert nicht die Daten ab
Delphi-Quellcode:
was mach ich da falsch?
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 SaveDatasetAsCSV(DBGridPW.DataSource.Dataset, 'passwörter'); |
Re: DBGrid speichert nicht die Daten ab
Zitat:
|
Re: DBGrid speichert nicht die Daten ab
Hallo,
ich würde es so versuchen.
Delphi-Quellcode:
Grüße
if saveDialog.Execute then
begin SaveDatasetAsCSV(DBGridPW.DataSource.Dataset, saveDialog.FileName); Klaus |
Re: DBGrid speichert nicht die Daten ab
Danke funzt :D vielen vielen Dank
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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