Hallo,
HINWEIS: Bitte möglichst Vollzitate vermeiden
Hast du es schon mal versucht den Text einer Date oder Datetime- Variable mit EVALUATE zuzuweisen?
GruĂź Fiddi
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
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;
navCH hat geschrieben:Guten Morgen!
Christian
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?
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
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
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
Ted hat geschrieben:Warum nutzt du nicht einfach einen XML Port?
(Integer ist Temporär)
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
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast