Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid -> CSV (https://www.delphipraxis.net/147480-dbgrid-csv.html)

Sir Rufo 10. Feb 2010 17:13

Re: DBGrid -> CSV
 
Das sollte eigentlich das machen was du wünschst:

Delphi-Quellcode:
procedure DataSetExportToCSV( const DataSet : TDataSet; const FileName : string; const Header : boolean = False; const Delim : string = ';'; const Quote : string = '"' );
var
  bm : TBytes;
  idx : integer;
  row, val : string;
  csv : Text;
begin
  if DataSet.Active then
    begin

      bm := DataSet.GetBookmark;
      DataSet.DisableControls;
      AssignFile( csv, FileName );
      try

        AssignFile( csv, FileName );
        ReWrite( csv );
        try

          if Header then
            begin
              row := '';
              for idx := 0 to DataSet.FieldCount - 1 do
                begin
                  val := DataSet.Fields.Fields[ idx ].FieldName;
                  val := Quote + StringReplace( val, Quote, Quote+Quote, [ rfReplaceAll ] ) + Quote;
                  if idx > 0 then
                    row := row + Delim;
                  row := row + val;
                end;
              WriteLn( csv, row );
            end;

          DataSet.First;
          while not DataSet.Eof do
            begin
              row := '';
              for idx := 0 to DataSet.FieldCount - 1 do
                begin
                  val := DataSet.Fields.Fields[ idx ].AsString;
                  if Pos( Delim, val ) + Pos( Quote, val ) > 0 then
                    val := Quote + StringReplace( val, Quote, Quote+Quote, [ rfReplaceAll ] ) + Quote;
                  if idx > 0 then
                    row := row + Delim;
                  row := row + val;
                end;
              WriteLn( csv, row );
              DataSet.Next;
            end;

        finally
          CloseFile( csv );
        end;

      finally
        DataSet.EnableControls;
      end;

      if DataSet.BookmarkValid( bm ) then
        DataSet.GotoBookmark( bm );

    end;
end;

Delphi3 10. Feb 2010 17:17

Re: DBGrid -> CSV
 
Liste der Anhänge anzeigen (Anzahl: 1)
hmm ok

fieldcount

ok

hmm nun bin ich beim fehler den ich auch nicht kenne

Sir Rufo 10. Feb 2010 17:21

Re: DBGrid -> CSV
 
Wenn du 5 Felder hast, dann liefert FieldCount 5 zurück

Wenn du aber mit for idx := 0 to FieldCount dann fragst du

0, 1, 2, 3, 4, 5 => 6 Felder ab!

ergo: for idx := 0 to FieldCount -1

Delphi3 10. Feb 2010 17:51

Re: DBGrid -> CSV
 
aber hab ich doch

da steht eine -1
und der fehler ist immer noch da

ich glaub ich brauch ein größeres brett für meinen kopf

Klaus01 10. Feb 2010 17:56

Re: DBGrid -> CSV
 
Zitat:

Zitat von Delphi3
aber hab ich doch

da steht eine -1
und der fehler ist immer noch da

ich glaub ich brauch ein größeres brett für meinen kopf

Auf Deinem ScreenShot ist die -1 aber nicht zu sehen.

Bretter gibt es bei Obi ;o)

Grüße
Klaus

Sir Rufo 10. Feb 2010 17:58

Re: DBGrid -> CSV
 
In deinem Screenshot sieht man nur etwas anderes ...

besser du zeigst uns den aktuellen Code, oder benutzt die Code-Beispiele, die wir dir gegeben haben.

Delphi3 10. Feb 2010 18:02

Re: DBGrid -> CSV
 
richtig

aber ich habe beides probiert

mal eine andere frage
wie bekomme ich die feldnamen eigentlich raus?

Sir Rufo 10. Feb 2010 18:06

Re: DBGrid -> CSV
 
Augen auf ... zu #11 gehen ... lesen

Delphi3 10. Feb 2010 18:16

Re: DBGrid -> CSV
 
sorry

ich habs grad gesehen

ich strukturier erstmal alles
weil ich tapse hier nur in dunkeln

aber es geht nun alles

danke das ihr es ausgehalten habt

Sir Rufo 10. Feb 2010 18:17

Re: DBGrid -> CSV
 
war so gerade noch auszuhalten :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.
Seite 2 von 3     12 3      

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