[gelöst] Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:01

Hallo,

ich habe Probleme die importierte Daten aus der Excel Buffer weiterzubearbeiten bzw in eine andere Tabelle zu übertragen.

Ich habe folgendes Beispiel in die Tabelle 370 eingespielt (siehe Anhang)

Nun will ich pro zeilennummer ein Datensatz in meine neue Tabelle eintragen. Wie kann ich das machen?
Die neue Tabelle hat vier felder plus Primärkey lfd. nr.

Gruß

Dai
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von dai am 24. September 2008 14:21, insgesamt 1-mal geändert.

Re: Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:11

Hallo Dai,

vielleicht denkst du einfach zu kompliziert, denn es ist relativ einfach:

Alle Einträge mit derselben Zeilennummer gehören zum selben Datensatz.
Alle Einträge mit derselben Spaltennummer gehören zum selben Feld.

Nun kannst du die Tabelle ExcelBuffer in einer Schleife durchlaufen und überträgst den "Zellenwert als Text" in das entsprechend der "Spaltennr." gehörige Feld.
Sobald sich die "Zeilennr." ändert musst du deinen Datensatz speichern und einen neuen Datensatz initialisieren.

Re: Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:37

Hallo Timo

vielen Dank für die schnelle Antwort. Das mit der Schleife habe ich schon bereits im Fokus. Ich weiss aber nur nicht wie ich in der Schleife programmieren muss. Hier meine Ausgangsschleife:

code
If ExcelBufferLoc.FINDFIRST THEN BEGIN
repeat
??????
until ExcelBufferLoc.next = 0;
END;
/code

Pro Schleifendurchgang muss ich ja ein Feld der Tabelle füllen. Und je 4 Durchgänge den Datensatz speichern.
Ist das so korrekt? Wenn ja wie soll ich das machen?
Zuletzt geändert von dai am 24. September 2008 10:46, insgesamt 1-mal geändert.

Re: Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:42

dai hat geschrieben:If ExcelBufferLoc.FINDFIRST THEN BEGIN
repeat
??????
until ExcelBufferLoc.next = 0;
END;


Leider kann ich dir zur eigentlichen Problemlösung nicht beitragen, aber:
Aus Performancegründen FINDFIRST niemals mit REPEAT kombinieren. Verwende statt dessen FINDSET. Schau dir zu diesen Befehlen mal die Onlinehilfe an.

Bitte außerdem Quelltexte der Lesbarkeit halber hier so veröffentlichen: [code]Dein Quelltext[/code]

Re: Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:47

Hi Natalie

vielen Dank für deinen Beitrag

Re: Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:54

Grundregel #1: Nutze FINDFIRST / FINDLAST nur dann, wenn du wirklich nur den ersten / letzten Datensatz benötigst.
Sobald du mehrere Datensätze verarbeiten willst, nutze FINDSET bzw. FIND('-').

Rough'n'Dirty müsste der Programmcode so aussehen:
Code:
IF ExcelBuffer.FINDSET THEN BEGIN
  REPEAT
    IF ExcelBuffer."Zeilennr." <> intVorherigeZeilenNr THEN BEGIN
      IF intVorherigeZeilenNr <> 0 THEN
        DeinRecord.INSERT;  // Den bisherigen Datensatz speichern
      intVorherigeZeilenNr := "Zeilennr.";
      CLEAR(DeinRecord);  // Neuen Datensatz komplett leeren...
      DeinRecord.INIT;  // ... und initialisieren
    END;
    CASE ExcelBuffer."Spaltennr." OF
      1: DeinRecord.DeinFeldFürSpalte1 := ExcelBuffer."Zellenwert als Text";
      2: DeinRecord.DeinFeldFürSpalte2 := ExcelBuffer."Zellenwert als Text";
      3: DeinRecord.DeinFeldFürSpalte3 := ExcelBuffer."Zellenwert als Text";
      4: DeinRecord.DeinFeldFürSpalte4 := ExcelBuffer."Zellenwert als Text";
    END;
  UNTIL ExcelBuffer.NEXT = 0;
  DeinRecord.INSERT;
END;

Re: Daten aus Excel Buffer weiterbearbeiten

24. September 2008 10:59

Hallo Dai,

vielleicht in etwa so:

Code:
WITH ExcelBuffer DO BEGIN
  RESET;
  IF FINDLAST THEN
    FOR Idx := 1 TO "Row No." DO BEGIN
      SETRANGE("Row No.", Idx);
      IF FINDSET THEN BEGIN
        YourTable.INIT;
        REPEAT
          CASE "Column No." OF
            "Column No." = 1:
              YourTable.Field1 = "Cell Value as Text"
            "Column No." = 2:
              YourTable.Field2 = "Cell Value as Text"
            "Column No." = 3:
              YourTable.Field3 = "Cell Value as Text"
            [...]
          END;
        UNTIL NEXT = 0;
        YourTable.INSERT;
      END;
    END;
END;

Gruß, Marc

Daten aus Excel Buffer weiterbearbeiten

24. September 2008 13:50

Hallo,

es hat geklappt. Vielen Dank für eure schnelle Hilfe.

Gruß Dai
Zuletzt geändert von dai am 24. September 2008 14:21, insgesamt 1-mal geändert.