Autor Beitrag
NoEon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: Mi 08.09.04 09:28 
Hallo Ng's

da gibts was...
und zwar..
Import CSV in Paradox Tabelle // leidiges Thema ich weiss//

Aber umso wichtiger für mich. ;-)

Ich kann meine CSV Datei importieren wohin ich will, das ist ekin Problem.

Doch jetzt kommts, die Warenwirtschaft ist so "toll" das sie in einigen Langtexten un Anderen Felden ";" meinen Feldseperator mal einfach drinne hat
Das heisst das dann der String schon an dieser Stelle abgeschnitten wird.
Das ist ziemlich doof. Weil so kann ich keine 4300 Datensätze Fehlerfrei Importieren. wie kann ich das umgehen.

Mir fehlt der Gedankliche Ansatz!

Help!

Gruss
Lars

Mein Code sieht so aus..
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
procedure TForm1.Button1Click(Sender: TObject);
var
  T: TextFile;
  instring: String;
  aTrennPos: ShortInt;
  aTempStr: String;
//Counter: LongInt;
  aFeldNr: ShortInt;
  aFilename : string;
  aCounter: integer;
begin
{
with para_temp1 do begin
  Active := False;
  DatabaseName := 'import';
  TableType := ttParadox;
  TableName := 'para_temp1';  }

  table1.Open;
  if opendialog1.Execute()
    then
      aFilename := openDialog1.FileName ;
  AssignFile(T,aFilename );
  Reset(T);
  Readln(T,instring);  // überschriften nicht miteinlesen
  aCounter:= 0;

  while not EOF(T) do begin
    readln(T,instring);
    instring:= instring + ';' ; // damit auch das letzte Feld eingelesen wird
    inc(aCounter);
    if (aCounter mod 100)= 0 then begin
      StaticText1.Caption:= Format('SatzNr: %9d eingelesen',[aCounter]);
      StaticText1.Update
    end;

    aFeldNr:= 0;
    aTrennPos:= Pos(';',instring);
    table1.Append;
    while aTrennPos > 0 do begin
      inc(aFeldNr);
      aTempStr:= Copy(instring,1,aTrennPos-1);
      table1.Fields[aFeldNr].AsString := aTempStr;
      Delete(instring,1,aTrennPos);
      aTrennPos:= Pos(';',instring);
    end;
    Table1.Post;
end;
  CloseFile(T);
  table1.close;

  StaticText1.Caption:= Format('SatzNr: %9d eingelesen',[aCounter]);
  StaticText1.Update;
  ShowMessage(Format('Import von %s beendet',[aFilename]));
end;

end.


Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mi 08.09.04 11:16 
Hallo,

erzeugst Du die Importdatei selbst oder wird sie Dir zur Verfügung gestellt?

Was spricht dagegen, die einzelnen Felder durch ein Tab oder ein anderes Zeichen zu trennen, das nicht im Feldinhalt vorkomnmt? Oder, die einzelnen Feldinhalte in Anführungszeichen zu setzen?

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
NoEon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

win9x, win 2000, win xp, linux 8.0

BeitragVerfasst: Mi 08.09.04 13:14 
es ist so das ich die Datei zur Verfügung gestellt bekomme. Allerdings als Excel, und ich muss mir erst die CSV datei draus machen um sie einzulesen.


wie wäre es besser.? Kann ich Excel Sagen das er mir n anderes Feld-Trennerzeichen geben soll?!

Wenn ich mir das mal anschaue dann ist es Sinnvoll die Texte in "" zu fassen... hmm wie mach ich das den in dem Text den ich habe?!
Einfach austauschen?!

gruss
lars
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 08.09.04 17:46 
hallo lars!

Zitat:
Allerdings als Excel, und ich muss mir erst die CSV datei draus machen um sie einzulesen.


dann hat du ja ohnehin die ganze import-file-steuerung in deiner hand
- einfach das ganze arbeitsblatt markieren - ersetzen strichpunkt durch zb beistrich

ich kenne nur beim import die möglichkeit, die trennzeichen auszuwählen, beim export muss ich passen.

Zitat:
Wenn ich mir das mal anschaue dann ist es Sinnvoll die Texte in "" zu fassen

wozu? gefällt dir das, wenn zb die artikelbezeichnung in anführungszeichen steht?
vor allem bei textfeldern, die genau auf die benötigte länge zugeschnitten sind, kommt dann immer freude bei
führenden anführungszeichen auf :D

ausblenden Delphi-Quelltext
1:
tmpText:= copy(ImportText,2,Length(ImportText)-2)					

und schon passt es wieder ;)

mfg, stefan