27. Februar 2018 18:07
27. Februar 2018 18:08
27. Februar 2018 18:59
navCH hat geschrieben:Habe gerade versucht das erste Record zu inserten und bekam folgende Meldung:
Debugger bleibt vor Sheet:=Book.Worksheets.Item('ROM Artikel Import Vorlage V1');
stehen
Was mache ich falsch?
Mfg
27. Februar 2018 19:27
KatalogArtikelROM.CHANGECOMPANY('Mandant1');
h:='2';
CREATE(App,FALSE, TRUE);
App.Visible(TRUE);
Book:=App.Workbooks.Open('C:\Users\adm\Desktop\ROM\ROMArtikelImportVorlageV2.xlsx');
Sheet:=Book.Worksheets.Item('Artikel Import Vorlage V1');
KatalogArtikelROM.SETCURRENTKEY(Hersteller,HerstellerArtikel,EinkaufPreiseinheit,EinkaufMengeneinheit,GueltigAbDatum);
IF KatalogArtikelROM.FINDLAST THEN BEGIN
KatalogArtikelROM.Hersteller:=Sheet.Range('A'+h).Value;
KatalogArtikelROM.HerstellerArtikel:=Sheet.Range('B'+h).Value;
EVALUATE(listenpreis,Sheet.Range('C'+h).Value);
KatalogArtikelROM.Listenpreis:=listenpreis;
//leere Felder noch auf 0 setzen
KatalogArtikelROM.Rabattgruppe:=Sheet.Range('D'+h).Value;
KatalogArtikelROM.Warengruppe:=Sheet.Range('E'+h).Value;
KatalogArtikelROM.Sachkonto:=Sheet.Range('F'+h).Value;
KatalogArtikelROM.ALieferant:=Sheet.Range('G'+h).Value;
//leere Felder noch auf 0 setzen
KatalogArtikelROM.ALieferantKurzbezeichnung:=Sheet.Range('H'+h).Value;
KatalogArtikelROM.ARabattArt1:=Sheet.Range('I'+h).Value;
//leere Felder noch auf 0 setzen
EVALUATE(arabattWert1,Sheet.Range('J'+h).Value);
KatalogArtikelROM.ARabattWert1:=arabattWert1;
//leere Felder noch auf 0 setzen
KatalogArtikelROM.ARabattArt2:=Sheet.Range('K'+h).Value;
EVALUATE(arabattWert2,Sheet.Range('L'+h).Value);
KatalogArtikelROM.ARabattWert2:=arabattWert2;
KatalogArtikelROM.ARabattArt3:=Sheet.Range('M'+h).Value;
EVALUATE(arabattWert3,Sheet.Range('N'+h).Value);
KatalogArtikelROM.ARabattWert3:=arabattWert3;
KatalogArtikelROM.ARabattArt4:=Sheet.Range('O'+h).Value;
EVALUATE(arabattWert4,Sheet.Range('P'+h).Value);
KatalogArtikelROM.ARabattWert4:=arabattWert4;
EVALUATE(aendPreis,Sheet.Range('Q'+h).Value);
KatalogArtikelROM.AEndPreis:=aendPreis;
KatalogArtikelROM.BLieferant:=Sheet.Range('R'+h).Value;
KatalogArtikelROM.BLieferantKurzbezeichnung:=Sheet.Range('S'+h).Value;
KatalogArtikelROM.BRabattArt1:=Sheet.Range('T'+h).Value;
EVALUATE(bRabattWert1, Sheet.Range('U'+h).Value);
KatalogArtikelROM.BRabattWert1:=bRabattWert1;
KatalogArtikelROM.BRabattArt2:=Sheet.Range('V'+h).Value;
EVALUATE(bRabattWert2,Sheet.Range('W'+h).Value);
KatalogArtikelROM.BRabattWert2:=bRabattWert2;
KatalogArtikelROM.BRabattArt3:=Sheet.Range('X'+h).Value;
EVALUATE(bRabattWert3,Sheet.Range('Y'+h).Value);
KatalogArtikelROM.BRabattWert3:=bRabattWert3;
KatalogArtikelROM.BRabattArt4:=Sheet.Range('Z'+h).Value;
EVALUATE(bRabattWert4, Sheet.Range('AA'+h).Value);
KatalogArtikelROM.BRabattWert4:=bRabattWert4;
EVALUATE(bEndPreis,Sheet.Range('AB'+h).Value );
KatalogArtikelROM.BEndPreis:=bEndPreis;
KatalogArtikelROM.CLieferant:=Sheet.Range('AC'+h).Value;
KatalogArtikelROM.CLieferantKurzbezeichnung:=Sheet.Range('AD'+h).Value;
KatalogArtikelROM.CRabattArt1:=Sheet.Range('AE'+h).Value;
EVALUATE(cRabbatWert1, Sheet.Range('AF'+h).Value);
KatalogArtikelROM.CRabattWert1:=cRabbatWert1;
KatalogArtikelROM.CRabattArt2:=Sheet.Range('AG'+h).Value;
EVALUATE(cRabbatWert2,Sheet.Range('AH'+h).Value);
KatalogArtikelROM.CRabattWert2:=cRabbatWert2;
KatalogArtikelROM.CRabattArt3:=Sheet.Range('AI'+h).Value;
EVALUATE(cRabbatWert3,Sheet.Range('AJ'+h).Value);
KatalogArtikelROM.CRabattWert3:=cRabbatWert3;
KatalogArtikelROM.CRabattArt4:=Sheet.Range('AK'+h).Value;
EVALUATE(cRabbatWert4, Sheet.Range('AL'+h).Value);
KatalogArtikelROM.CRabattWert4:=cRabbatWert4;
EVALUATE(cEndPreis,Sheet.Range('AM'+h).Value);
KatalogArtikelROM.CEndPreis:=cEndPreis;
EVALUATE(lagerPreisEinheit,Sheet.Range('AN'+h).Value);
KatalogArtikelROM.LagerPreiseinheit:=lagerPreisEinheit;
KatalogArtikelROM.LagerMengeneinheit:=Sheet.Range('AO'+h).Value;
EVALUATE(einkaufsPreiseinheit, Sheet.Range('AP'+h).Value);
KatalogArtikelROM.EinkaufPreiseinheit:=einkaufsPreiseinheit;
KatalogArtikelROM.EinkaufMengeneinheit:=Sheet.Range('AQ'+h).Value;
EVALUATE(faktor,Sheet.Range('AR'+h).Value);
KatalogArtikelROM.Faktor:=faktor;
KatalogArtikelROM.Bezeichnung:=Sheet.Range('AS'+h).Value;
KatalogArtikelROM.NetLink:=Sheet.Range('AT'+h).Value;
KatalogArtikelROM.Artikelgruppe:=Sheet.Range('AU'+h).Value;
KatalogArtikelROM.TeileKlasse:=Sheet.Range('AV'+h).Value;
KatalogArtikelROM.TeileArt:=Sheet.Range('AW'+h).Value;
KatalogArtikelROM.TeileGruppe:=Sheet.Range('AX'+h).Value;
EVALUATE(mindestMenge,Sheet.Range('AY'+h).Value);
KatalogArtikelROM.Mindestmenge:=mindestMenge;
KatalogArtikelROM.EAN:=Sheet.Range('AZ'+h).Value;
EVALUATE(gueltigABDatum, Sheet.Range('BA'+h).Value);
KatalogArtikelROM.GueltigAbDatum:=gueltigABDatum;
KatalogArtikelROM.Status:=Sheet.Range('BB'+h).Value;
EVALUATE(kupferBasis,Sheet.Range('BC'+h).Value);
KatalogArtikelROM.KupferBasis:=kupferBasis;
EVALUATE(kupferZahl,Sheet.Range('BD'+h).Value );
KatalogArtikelROM.KupferZahl:=kupferZahl;
EVALUATE(aluBasis, Sheet.Range('BE'+h).Value);
KatalogArtikelROM.AluBasis:=aluBasis;
EVALUATE(aluZahl, Sheet.Range('BF'+h).Value);
KatalogArtikelROM.AluZahl:=aluZahl;
EVALUATE(bleiBasis,Sheet.Range('BG'+h).Value );
KatalogArtikelROM.BleiBasis:=bleiBasis;
EVALUATE(bleiZahl,Sheet.Range('BH'+h).Value);
KatalogArtikelROM.BleiZahl:=bleiZahl;
//h:=INCSTR(h);
KatalogArtikelROM.INSERT;
END;
28. Februar 2018 10:14
28. Februar 2018 12:38
28. Februar 2018 13:35
navCH hat geschrieben:Guten Morgen!
Christian
28. Februar 2018 20:49
1. März 2018 13:17
navCH hat geschrieben:Kann ich auch Recordvariablen verwenden, ohne ein Dataitem angelegt zu haben?
navCH hat geschrieben:Muss ich TRUE im Insert(TRUE) verwenden, wenn ich im OnPreReport() ausführe?
1. März 2018 13:39
sweikelt hat geschrieben:navCH hat geschrieben:Kann ich auch Recordvariablen verwenden, ohne ein Dataitem angelegt zu haben?
-> wenn du gar kein DataItem hast, dann brauchste auch kein Report! ....nimm einfach eine Codeunit und schreib deine Funktionen und rufe die dann im OnRun-Trigger auf....dann einfach Codeunit starten
-> wenn du es unbedingt mit einem Report machen willst, nimm wenigsten ein DataItem -> von mir aus Integer mit Filter auf Number = 1
1. März 2018 14:35
sweikelt hat geschrieben:-> wenn du gar kein DataItem hast, dann brauchste auch kein Report! ....nimm einfach eine Codeunit und schreib deine Funktionen und rufe die dann im OnRun-Trigger auf....dann einfach Codeunit starten
-> wenn du es unbedingt mit einem Report machen willst, nimm wenigsten ein DataItem -> von mir aus Integer mit Filter auf Number = 1
1. März 2018 17:05
fiddi hat geschrieben:sweikelt hat geschrieben:-> wenn du gar kein DataItem hast, dann brauchste auch kein Report! ....nimm einfach eine Codeunit und schreib deine Funktionen und rufe die dann im OnRun-Trigger auf....dann einfach Codeunit starten
-> wenn du es unbedingt mit einem Report machen willst, nimm wenigsten ein DataItem -> von mir aus Integer mit Filter auf Number = 1
1. Den Report nimmt man i.d.R. weil man welche lizensiert hat die noch nicht belegt sind, bei Codeunits sieht das häufig etwas magerer aus.
2. Man muss beim Report kein Dataitem haben, wenn da nicht sinnvolles passiert. Man kann den Code auch in den OnPreReport schreiben.
Gruß Fiddi
1. März 2018 17:28
2. März 2018 10:35
23. Juli 2018 14:06
Ted hat geschrieben:Warum nutzt du nicht einfach einen XML Port?
(Integer ist Temporär)
14. August 2018 11:18
ServerFileName := FileManagement.UploadFile('','');
IF ServerFileName = '' THEN
EXIT;
SheetName := ExcelBuffer.SelectSheetsName(ServerFileName);
IF SheetName = '' THEN
EXIT;
ExcelBuffer.LOCKTABLE;
ExcelBuffer.OpenBook(ServerFileName,'Excelblatt Name');
ExcelBuffer.ReadSheet;
TotalRowCount := ExcelBuffer.COUNT;
InsertData;
LOCAL InsertData()
FOR i := 1 TO TotalRowCount DO BEGIN
IF i = 1 THEN
i += 3;
IF i = 1563 THEN
EXIT;
EVALUATE(JobStructure,GetValueAtCell(i,1));
EVALUATE(JobNo,GetValueAtCell(i,2));
EVALUATE(JobTaskNo,GetValueAtCell(i,3));
EVALUATE(LineNo,GetValueAtCell(i,4));
JobPlanningLine.SETRANGE("Job Structure Type",1);
JobPlanningLine.SETRANGE("Job No.",JobNo);
JobPlanningLine.SETRANGE("Job Task No.",JobTaskNo);
JobPlanningLine.SETRANGE("Line No.",LineNo);
IF JobPlanningLine.FINDFIRST THEN BEGIN
EVALUATE(EntryNoPerf,GetValueAtCell(i,5));
JobPlanningLine."Ledger Entry No." := EntryNoPerf;
JobPlanningLine.MODIFY;
END;
END;
//get document date
EVALUATE(DocumentDateYear,COPYSTR(DateLoc,1,4));
EVALUATE(DocmentDateMonth,COPYSTR(DateLoc,5,2));
EVALUATE(DocumentDateDay,COPYSTR(DateLoc,7,2));
DocumentDate := DMY2DATE(DocumentDateDay,DocmentDateMonth,DocumentDateYear);
LOCAL GetValueAtCell(RowNo : Integer;ColNo : Integer) : Text
IF ExcelBufferLoc.GET(RowNo,ColNo) THEN
EXIT(ExcelBufferLoc."Cell Value as Text");
Name DataType Subtype Length
ServerFileName Text
FileManagement Codeunit File Management
ExcelBuffer Record Excel Buffer
SheetName Text
TotalRowCount Integer
i Integer