[Gelöst]Feld aus Excel in Tabelle schreiben

28. Februar 2018 11:28

Hallo zusammen.

Ich versuche verzweifelt ein Feld aus Excel in eine Tabelle zu schreiben, aber es funktioniert nicht!
Ich habe gerade keine Idee :?:

Code:
IF KatalogArtikel.FINDLAST THEN BEGIN

KatalogArtikel.INIT;
KatalogArtikel.Hersteller:=Sheet.Range('A'+h).Value;
KatalogArtikel.HerstellerArtikel:=Sheet.Range('B'+h).Value;

EVALUATE(listenpreis,Sheet.Range('C'+h).Value);
KatalogArtikel.Listenpreis:=listenpreis;

IF KatalogArtikel.INSERT THEN;
END;



Hat jemand ne Idee was hier grundsätzlich falsch ist?

Gruß
christian
Zuletzt geändert von navCH am 2. März 2018 12:29, insgesamt 1-mal geändert.

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 16:37

Hallo.
Die Funktion SelectSheetName() rufe ich über ExcelBuffer auf.
Muss ich hierbei als ServerFileName den Pfad von der Excel angeben?
So wie:
SheetName:=ExcelBuf.SelectSheetsName(C:\Users\adm\Desktop\Import\Import Vorlage V2.xlsx);

SheetName:=ExcelBuf.SelectSheetsName(ServerFileName);

MfG

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 16:42

hat sich erledigt .. sry

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 17:01

teile doch bitte deine Lösung und setze deinen Urpsrungsbeitrag auf "gelöst"

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 17:15

Hallo.

Bei einer Funktion, wie z.B.

GetExcelCell(p_Rowno : Integer; p_ColumnNo : Integer) : Text[250]


Wie definiere ich den Datentyp : Text[250] der Funktion außerhalb der Klammer?

MfG

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 17:16

sweikelt hat geschrieben:teile doch bitte deine Lösung und setze deinen Urpsrungsbeitrag auf "gelöst"


?

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 18:35

Hallo.

Wie kann ich eine Funktion vom Typ Text definieren? Function(..) :Text[250]

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 18:41

navCH hat geschrieben:Wie kann ich eine Funktion vom Typ Text definieren? Function(..) :Text[250]


Hast Du evtl. schonmal in Betracht gezogen eine Programmiererschulung zu erdulden?

Hier: im Register Returnvalue den Typ eingeben und falls nötig die Länge.

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 19:08

Habe den Import jetzt mit ExcelBuffer geschrieben:

Leider kommt nach den Ausführen folgende Fehlermeldung:

'Tabelle' ist bereits vorhanden. Identifizierte Felder und Werte:
Hersteller='ABC' usw

Was kann das Problem sein?

In der Tabelle sind keine Daten.

MfG

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 19:24

Markus Merkl hat geschrieben:
navCH hat geschrieben:Wie kann ich eine Funktion vom Typ Text definieren? Function(..) :Text[250]


Hast Du evtl. schonmal in Betracht gezogen eine Programmiererschulung zu erdulden?



Danke für den Ratschlag, aber ich habs hinbekommen.
Das sind genau die Ratschläge in einem Dynamics Forum die ich lesen möchte!

MfG

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 19:36

Es funktioniert vermutlich nicht mit dem Schlüssel, da es doppelte Einträge in der Datei gibt.
Wie kann ich den Schlüssel anpassen, damit auch doppelte Einträge in der Tabelle aufgenommen werden?

MfG
Zuletzt geändert von McClane am 28. Februar 2018 23:28, insgesamt 1-mal geändert.
Grund: Bitte keine Beiträge vollständig zitieren!!!!

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 20:57

Du willst in einer (eigenen) NAV Tabelle den Primärschlüssel ändern?
Im Design der Tabelle im Ansicht/View Menü findest du "Keys". Der erste hier gelistete Schlüssel ist der Primärschlüssel der Tabelle. Den kannst du um weitere Felder erweitern. (Falls die Tabelle schon Daten enthält muss du drüber nachdenken ob das was du änderst nicht zu Problemen führt.)

Re: Feld aus Excel in Tabelle schreiben

28. Februar 2018 21:07

navCH hat geschrieben:
Markus Merkl hat geschrieben:Hast Du evtl. schonmal in Betracht gezogen eine Programmiererschulung zu erdulden?

Das sind genau die Ratschläge in einem Dynamics Forum die ich lesen möchte!

Ähnlichen Ratschlag hast Du schon mal heute auf Deine Fragen in einem anderen Thema bekommen
http://www.msdynamics.de/viewtopic.php?f=68&t=31838&start=25
Anzumerken ist noch dass Du in diesem Forum schon seit 2012 registriert bist. Egal wie dringend Deine Aufgabe ist: um diese sauber erledigen zu können brauchst Du wirklich zunächst C/AL-Grundlagen und dieser Forum kann diese Grundlagenschulung nicht ersetzen. Allein schon Deine Frage wie man einen Schlüssel anpasst damit man in eine Tabelle doppelte Einträge schreiben kann: wenn Deine nächste Aufgabe lauten würde "Debitoren aus Excel importieren" ==> würdest Du notfalls auch die Tabelle 18 "Debitoren" so umbiegen, damit diese Duplikate aufnehmen kann nur weil die einzulesende Excel-Tabelle solche Daten enthält?

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 10:15

Ich kann mich hier Jupiter nur anschließen - es hat keiner ein Problem damit, dir mit Ratschlägen zur Seite zu stehen, allerdings erwarte ich (ich nehme an, ich kann das "ich" auf "wir" umbiegen), dass ein gewisses
Grundwissen in C/AL vorhanden ist.

Du schreibst auch immer "hat sich erledigt" ...o.ä. ...ohne den Lesern auch nur mitzuteilen, wie du es erledigt hast - das finde ich mehr als nur eigensinnig.
Schon alleine die Frage "Muss ich TRUE im Insert(TRUE) verwenden, wenn ich im OnPreReport() ausführe?" (aus dem Beitrag, den Jupiter verlinkt hat) lässt mich daran zweifeln, dass du wirklich weißt, was du da tust.

Es ist noch kein Meister vom Himmel gefallen, das ist mir auch klar, aber du solltest verstehen, das dieses Forum hier nicht dafür gedacht ist, eine Grundschulung in C/AL-Programmierung zu geben.

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 10:51

Hallo sweikelt.

Bitte nicht so wie ein Oberlehrer!

Ja, ich weiß selber das ich Defizite in der NAV Programmierung habe. Ich Programmiere aber auch nicht jeden Tag im Navision.
Und das ich seit 2012 hier angemeldet bin, bedeutet nicht, das ich die ganze Zeit über im NAV programmiert habe.
Und ja, ich würde eine Entwicklerschulung gern machen, wenn du sie mir bezahlst! Da sind aber 5 Tage nicht ausreichend :-D

sweikelt hat geschrieben:Du schreibst auch immer "hat sich erledigt" ...o.ä. ...ohne den Lesern auch nur mitzuteilen, wie du es erledigt hast - das finde ich mehr als nur eigensinnig.


Ok, da habe ich vielleicht in der Vergangenheit etwas geschlampt, die Kritik nehme ich an!
Sorry.

Zur Lösung:
Ich habe ein ExcelBuffer Beispiel gefunden und habe das fortgesetzt, siehe Code. Bis auf ein paar Decimal Felder hat der Import geklappt.

Code:

RecNo:=RecNo+1;
Window.UPDATE(1,ROUND(RecNo / TotalRecNo * 10000,1));

ExcelBuf.RESET;
ExcelBuf.SETRANGE("Row No.",Number);
ExcelBuf.SETFILTER("Cell Value as Text",'<>%1','');

IF ExcelBuf.FINDFIRST THEN BEGIN
    CLEAR(Cust);
    Cust.INIT;
    Cust.Hersteller:=GetExcelCell(Number,1);
    Cust.HerstellerArtikel:=GetExcelCell(Number,2);
    //EVALUATE(listenpreis,GetExcelCell(Number,3));
    //Cust.Listenpreis:=listenpreis;
    Cust.Rabattgruppe:=GetExcelCell(Number,4);
    Cust.Warengruppe:=GetExcelCell(Number,5);
    Cust.Sachkonto:=GetExcelCell(Number,6);
    Cust.ALieferant:=GetExcelCell(Number,7);
    Cust.ALieferantKurzbezeichnung:=GetExcelCell(Number,8);
    Cust.ARabattArt1:=GetExcelCell(Number,9);
    //EVALUATE(arabattWert1,GetExcelCell(Number,10));
    //Cust.ARabattWert1:=arabattWert1;
    //Cust.ARabattWert1:=GetExcelCell(Number,10);
    Cust.ARabattArt2:=GetExcelCell(Number,11);
    //Cust.ARabattWert2:=GetExcelCell(Number,12);
    Cust.ARabattArt3:=GetExcelCell(Number,13);
    //Cust.ARabattWert3:=GetExcelCell(Number,14);
    Cust.ARabattArt4:=GetExcelCell(Number,15);
    //Cust.ARabattWert4:=GetExcelCell(Number,16);
    //Cust.AEndPreis:=GetExcelCell(Number,17);
    Cust.BLieferant:=GetExcelCell(Number,18);
    Cust.BLieferantKurzbezeichnung:=GetExcelCell(Number,19);
    Cust.BRabattArt1:=GetExcelCell(Number,20);
    Cust.BRabattWert1:=GetExcelCell(Number,21);
    Cust.BRabattArt2:=GetExcelCell(Number,22);
    Cust.BRabattWert2:=GetExcelCell(Number,23);
    Cust.BRabattArt3:=GetExcelCell(Number,24);
    Cust.BRabattWert3:=GetExcelCell(Number,25);
    Cust.BRabattArt4:=GetExcelCell(Number,26);
    Cust.BRabattWert4:=GetExcelCell(Number,27);
    Cust.BEndPreis:=GetExcelCell(Number,28);
    Cust.CLieferant:=GetExcelCell(Number,29);
    Cust.CLieferantKurzbezeichnung:=GetExcelCell(Number,30);
    Cust.CRabattArt1:=GetExcelCell(Number,30);
    Cust.CRabattWert1:=GetExcelCell(Number,31);
    Cust.CRabattArt2:=GetExcelCell(Number,32);

    Cust.INSERT(TRUE);
END;


Gruß,
Christian


Gelobe Besserung :-D

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 13:01

navCH hat geschrieben:Bitte nicht so wie ein Oberlehrer!


Den Satz hättest du dir sparen können.
Warum sollten wir dir eine Entwicklerschulung bezahlen -> das macht dein Arbeitgeber, oder wenn du Freelancer bist, zahlst du es eben selbst.

zu deinen Dezimalfeldern -> müsste eigentlich mit
Code:
EVALUATE(Cust.DeinDecimalFeld,GetEXCELCell(x,x);

zu lösen sein.

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 13:19

sweikelt hat geschrieben:zu deinen Dezimalfeldern -> müsste eigentlich mit
Code:
EVALUATE(Cust.DeinDecimalFeld,GetEXCELCell(x,x);

zu lösen sein.


Ok. Vielen Dank!

MfG

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 13:35

enh hat geschrieben:Du willst in einer (eigenen) NAV Tabelle den Primärschlüssel ändern?
Im Design der Tabelle im Ansicht/View Menü findest du "Keys". Der erste hier gelistete Schlüssel ist der Primärschlüssel der Tabelle. Den kannst du um weitere Felder erweitern. (Falls die Tabelle schon Daten enthält muss du drüber nachdenken ob das was du änderst nicht zu Problemen führt.)


Alles klar.
Vielen Dank!

Gruß
Christian

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 16:48

navCH hat geschrieben:
Markus Merkl hat geschrieben:
navCH hat geschrieben:Wie kann ich eine Funktion vom Typ Text definieren? Function(..) :Text[250]

[Programmiererschulung]

Danke für den Ratschlag, aber ich habs hinbekommen.
Das sind genau die Ratschläge in einem Dynamics Forum die ich lesen möchte!


$Forum ist halt kein Wunschkonzert.

Re: Feld aus Excel in Tabelle schreiben

1. März 2018 17:27

Hallo zusammen,

ich denke, navCH hat es mittlerweile verstanden, dass ein Forum ein Anlaufpunkt für Tipps und Tricks, jedoch kein Ersatz für eine Grundlagenschulung ist.
Aus diesem Grund bitte ich auf weitere Seitenhiebe zu verzichten.

Gruß, Timo Lässer
MSDynamics.de-Team

Re: Feld aus Excel in Tabelle schreiben

2. März 2018 10:57

Moin.

@Timo: Sehr freundlich!

Eine Frage habe ich dann doch nochmal zu dem Import.
In der Excel-Datei sind einige Felder leer und beim Importieren gibt es ne Meldung, dass leere Felder nicht importiert werden können.
Fehler leerer String.PNG

Ist meine Annahme richtig, dass leere Strings generell nicht in Decimalfelder importiert werden können?

Ich habe beim Testen die leeren Felder erstmal mit einer 0 gefüllt.
In der Anforderung ist es auch völlig Ok, wenn die leeren Felder beim Import mit einer 0 gefüllt werden.
Ich überlege jetzt, welchen Ansatz ich dazu wähle?

Gruß,
Christian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Feld aus Excel in Tabelle schreiben

2. März 2018 12:29

Hab die Decimalfelder abgefragt und mit ner 0 gefüllt.
Code:
    IF GetExcelCell(Number,14) <> '' Then Begin
        EVALUATE(Cust.ARabattWert3,GetExcelCell(Number,14));
    End Else Begin
        EVALUATE(Cust.ARabattWert3,'0');
    End;


Vielen Dank, und schönes Wochenende!

Gruß
Christian

Re: [Gelöst]Feld aus Excel in Tabelle schreiben

2. März 2018 12:30

Warum schreibst du die 0 nicht direkt in dein Dezimalfeld?