AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid -> CSV

Ein Thema von Delphi3 · begonnen am 9. Feb 2010 · letzter Beitrag vom 28. Aug 2014
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 18:13
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi3

Registriert seit: 6. Feb 2010
14 Beiträge
 
Delphi 3 Professional
 
#12

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 18:17
hmm ok

fieldcount

ok

hmm nun bin ich beim fehler den ich auch nicht kenne
Miniaturansicht angehängter Grafiken
fehler2_121.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 18:21
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi3

Registriert seit: 6. Feb 2010
14 Beiträge
 
Delphi 3 Professional
 
#14

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 18:51
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 18:56
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 18:58
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi3

Registriert seit: 6. Feb 2010
14 Beiträge
 
Delphi 3 Professional
 
#17

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 19:02
richtig

aber ich habe beides probiert

mal eine andere frage
wie bekomme ich die feldnamen eigentlich raus?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 19:06
Augen auf ... zu #11 gehen ... lesen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi3

Registriert seit: 6. Feb 2010
14 Beiträge
 
Delphi 3 Professional
 
#19

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 19:16
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

Re: DBGrid -> CSV

  Alt 10. Feb 2010, 19:17
war so gerade noch auszuhalten
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.
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