Import orderregels vanuit Excel

JvdWal
Member Posts: 13
Hallo,
Ik probeer orderregels vanuit excel te importeren, met behulp van de kruisverwijzings tabel zoek ik de artikelen op.
Nu importeerd hij alleen maar de regel waar het artikelnummer juist is ingevuld en de regel waar een kruisverwijzing met 3 cijfers in staat. Staan in de kruisverwijzing meer cijfers, dan leest hij dit niet in (ondanks dat de kruisverwijzing klopt.).
onderstaand de gebruikte code.
Heeft iemand enig idee hoe ik dit probleem kan oplossen.
NrRiga := 0;
TotRiga:= ExcelTemp.COUNT;
CLEAR(ImportTotIntG);
CLEAR(ImportItemIntG);
CLEAR(ImportCrossItemIntG);
SalesLineRecG2.RESET;
SalesLineRecG2.SETRANGE("Document Type","Sales Header"."Document Type");
SalesLineRecG2.SETRANGE("Document No.","Sales Header"."No.");
IF SalesLineRecG2.FIND('+') THEN
NextLineNoIntG := SalesLineRecG2."Line No."
ELSE
NextLineNoIntG := 0;
CrossReference.RESET;
CrossReference.SETCURRENTKEY("Cross-Reference No.");
WindowDlgG.OPEN('Import order #1###########################################################\'+
'File Excel #2###########################################################\'+
'Sheet Excel #3###########################################################\'+
' @4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');
WindowDlgG.UPDATE(1,"Sales Header"."No." + ' ' + "Sales Header"."Bill-to Name");
WindowDlgG.UPDATE(2,FileName);
WindowDlgG.UPDATE(3,SheetName);
ExcelTemp.RESET;
IF ExcelTemp.FIND('-') THEN REPEAT
NrRiga += 1;
WindowDlgG.UPDATE(4,ROUND((10000/TotRiga)*NrRiga,1));
NoSc1 := FALSE;
NoSc2 := FALSE;
IF (ExcelTemp."Row No." <> 1) THEN BEGIN
IF (ExcelTemp."Column No." = 1) THEN BEGIN
ImportTotIntG += 1;
ErrorItemBlnG := FALSE;
EVALUATE(Excel_ItemCdeG,ExcelTemp."Cell Value as Text");
IF ItemRecG.GET(Excel_ItemCdeG) THEN BEGIN
ItemCdeG := Excel_ItemCdeG;
ImportItemIntG += 1;
END ELSE BEGIN
CrossReference.SETCURRENTKEY("Cross-Reference No.");
CrossReference.SETRANGE("Cross-Reference No.",Excel_ItemCdeG);
IF CrossReference.FIND('-') THEN BEGIN
ItemCdeG := CrossReference."Item No.";
ImportCrossItemIntG += 1;
END ELSE BEGIN
ErrorItemBlnG := TRUE;
END;
END;
END;
IF (ExcelTemp."Column No." = 2) THEN BEGIN
EVALUATE(Excel_QtyDecG,ExcelTemp."Cell Value as Text");
END;
END;
IF (Excel_ItemCdeG <> '') AND (ExcelTemp."Column No." = 2) THEN BEGIN
IF NOT ErrorItemBlnG THEN BEGIN
ItemRecG.GET(ItemCdeG);
// IF Art.Blocked THEN BEGIN
// TxtErr := TxtErr+' block';
// ErroreGenerale := TRUE;
// ErroreArticolo := TRUE;
// END;
// IF (Art.Divisione = '6')
// OR (Art."Qualifica prodotto" = '99') THEN BEGIN
// TxtErr := TxtErr+' div6 o qual99';
// ErroreGenerale := TRUE;
// ErroreArticolo := TRUE;
// END;
// IF NOT ErroreArticolo THEN BEGIN
// Art.SETRANGE("Location Filter","Sales Header"."Location Code");
// Art.CALCFIELDS("Net Change");
// IF Art."Net Change" < Excel_Qta THEN BEGIN
// TxtErr := TxtErr+' giac '+FORMAT(Art."Net Change");
// ErroreGiacenza := TRUE;
// ErroreGenerale := TRUE;
// OutFile.WRITE(OutText + ';' + TxtErr);
// OutText := '';
// TxtErr := '';
// END;
// END;
// END;
// IF ErroreArticolo THEN BEGIN
// ErroreArticolo := FALSE;
// OutFile.WRITE(OutText + ';' + TxtErr);
// OutText := '';
// TxtErr := '';
// END ELSE BEGIN
SalesLineRecG.SuspendStatusCheck(Sospendi);
NextLineNoIntG += 10000;
SalesLineRecG.INIT;
SalesLineRecG.VALIDATE("Line No.",NextLineNoIntG);
SalesLineRecG.VALIDATE("Document Type","Sales Header"."Document Type");
SalesLineRecG.VALIDATE("Document No.","Sales Header"."No.");
SalesLineRecG.INSERT(TRUE);
SalesLineRecG.VALIDATE(Type,SalesLineRecG.Type::Item);
// Art.GET(ArticoloTemp);
SalesLineRecG.VALIDATE("No.",ItemCdeG);
SalesLineRecG.VALIDATE(Quantity,Excel_QtyDecG);
// IF (Excel_PU <> 0) THEN BEGIN
// SalesLineRecG.VALIDATE("Unit Price",Excel_PU);
// //SalesLineRecG.VALIDATE("Line Discount %",0);
// //SalesLineRecG.VALIDATE("% Sconto 1",0);
// //SalesLineRecG.VALIDATE("% Sconto 2",0);
// END;
// IF (NOT NoSc1 AND (Excel_SC1 <> 0)) THEN BEGIN
// SalesLineRecG.VALIDATE("% Sconto 1",Excel_SC1);
// END;
// IF (NOT NoSc2 AND (Excel_SC2 <> 0)) THEN BEGIN
// SalesLineRecG.VALIDATE("% Sconto 2",Excel_SC2);
// END;
// IF NoSc1 THEN
// SalesLineRecG.VALIDATE("% Sconto 1",0);
// IF NoSc2 THEN
// SalesLineRecG.VALIDATE("% Sconto 2",0);
// SalesLineRecG.VALIDATE("Salesperson Code");
SalesLineRecG.MODIFY(TRUE);
// IF ErroreGiacenza AND ("Sales Header"."Location Code" <> '0') THEN BEGIN
// Nrig += 10000;
// T83."Journal Template Name" := 'ARTICOLO';
// T83."Journal Batch Name" := 'RETTREND';
// T83."Line No." := Nrig;
// T83.VALIDATE("Posting Date",WORKDATE);
// T83.VALIDATE("Entry Type",T83."Entry Type"::"Positive Adjmt.");
// T83.VALIDATE("Item No.",Art."No.");
// T83."Document No." := 'RR-'+TestataOrdine."Location Code";
// T83.Description := 'Giac. '+FORMAT(Art."Net Change") + ' Ord. '+FORMAT(SalesLineRecG.Quantity);
// T83.VALIDATE("Location Code",TestataOrdine."Location Code");
// T83.VALIDATE(Quantity,SalesLineRecG.Quantity-Art."Net Change");
// T83.VALIDATE(T83."Unit Cost",0);
// T83.INSERT(TRUE);
// END;
END;
END;
UNTIL ExcelTemp.NEXT = 0;
Ik probeer orderregels vanuit excel te importeren, met behulp van de kruisverwijzings tabel zoek ik de artikelen op.
Nu importeerd hij alleen maar de regel waar het artikelnummer juist is ingevuld en de regel waar een kruisverwijzing met 3 cijfers in staat. Staan in de kruisverwijzing meer cijfers, dan leest hij dit niet in (ondanks dat de kruisverwijzing klopt.).
onderstaand de gebruikte code.
Heeft iemand enig idee hoe ik dit probleem kan oplossen.
NrRiga := 0;
TotRiga:= ExcelTemp.COUNT;
CLEAR(ImportTotIntG);
CLEAR(ImportItemIntG);
CLEAR(ImportCrossItemIntG);
SalesLineRecG2.RESET;
SalesLineRecG2.SETRANGE("Document Type","Sales Header"."Document Type");
SalesLineRecG2.SETRANGE("Document No.","Sales Header"."No.");
IF SalesLineRecG2.FIND('+') THEN
NextLineNoIntG := SalesLineRecG2."Line No."
ELSE
NextLineNoIntG := 0;
CrossReference.RESET;
CrossReference.SETCURRENTKEY("Cross-Reference No.");
WindowDlgG.OPEN('Import order #1###########################################################\'+
'File Excel #2###########################################################\'+
'Sheet Excel #3###########################################################\'+
' @4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');
WindowDlgG.UPDATE(1,"Sales Header"."No." + ' ' + "Sales Header"."Bill-to Name");
WindowDlgG.UPDATE(2,FileName);
WindowDlgG.UPDATE(3,SheetName);
ExcelTemp.RESET;
IF ExcelTemp.FIND('-') THEN REPEAT
NrRiga += 1;
WindowDlgG.UPDATE(4,ROUND((10000/TotRiga)*NrRiga,1));
NoSc1 := FALSE;
NoSc2 := FALSE;
IF (ExcelTemp."Row No." <> 1) THEN BEGIN
IF (ExcelTemp."Column No." = 1) THEN BEGIN
ImportTotIntG += 1;
ErrorItemBlnG := FALSE;
EVALUATE(Excel_ItemCdeG,ExcelTemp."Cell Value as Text");
IF ItemRecG.GET(Excel_ItemCdeG) THEN BEGIN
ItemCdeG := Excel_ItemCdeG;
ImportItemIntG += 1;
END ELSE BEGIN
CrossReference.SETCURRENTKEY("Cross-Reference No.");
CrossReference.SETRANGE("Cross-Reference No.",Excel_ItemCdeG);
IF CrossReference.FIND('-') THEN BEGIN
ItemCdeG := CrossReference."Item No.";
ImportCrossItemIntG += 1;
END ELSE BEGIN
ErrorItemBlnG := TRUE;
END;
END;
END;
IF (ExcelTemp."Column No." = 2) THEN BEGIN
EVALUATE(Excel_QtyDecG,ExcelTemp."Cell Value as Text");
END;
END;
IF (Excel_ItemCdeG <> '') AND (ExcelTemp."Column No." = 2) THEN BEGIN
IF NOT ErrorItemBlnG THEN BEGIN
ItemRecG.GET(ItemCdeG);
// IF Art.Blocked THEN BEGIN
// TxtErr := TxtErr+' block';
// ErroreGenerale := TRUE;
// ErroreArticolo := TRUE;
// END;
// IF (Art.Divisione = '6')
// OR (Art."Qualifica prodotto" = '99') THEN BEGIN
// TxtErr := TxtErr+' div6 o qual99';
// ErroreGenerale := TRUE;
// ErroreArticolo := TRUE;
// END;
// IF NOT ErroreArticolo THEN BEGIN
// Art.SETRANGE("Location Filter","Sales Header"."Location Code");
// Art.CALCFIELDS("Net Change");
// IF Art."Net Change" < Excel_Qta THEN BEGIN
// TxtErr := TxtErr+' giac '+FORMAT(Art."Net Change");
// ErroreGiacenza := TRUE;
// ErroreGenerale := TRUE;
// OutFile.WRITE(OutText + ';' + TxtErr);
// OutText := '';
// TxtErr := '';
// END;
// END;
// END;
// IF ErroreArticolo THEN BEGIN
// ErroreArticolo := FALSE;
// OutFile.WRITE(OutText + ';' + TxtErr);
// OutText := '';
// TxtErr := '';
// END ELSE BEGIN
SalesLineRecG.SuspendStatusCheck(Sospendi);
NextLineNoIntG += 10000;
SalesLineRecG.INIT;
SalesLineRecG.VALIDATE("Line No.",NextLineNoIntG);
SalesLineRecG.VALIDATE("Document Type","Sales Header"."Document Type");
SalesLineRecG.VALIDATE("Document No.","Sales Header"."No.");
SalesLineRecG.INSERT(TRUE);
SalesLineRecG.VALIDATE(Type,SalesLineRecG.Type::Item);
// Art.GET(ArticoloTemp);
SalesLineRecG.VALIDATE("No.",ItemCdeG);
SalesLineRecG.VALIDATE(Quantity,Excel_QtyDecG);
// IF (Excel_PU <> 0) THEN BEGIN
// SalesLineRecG.VALIDATE("Unit Price",Excel_PU);
// //SalesLineRecG.VALIDATE("Line Discount %",0);
// //SalesLineRecG.VALIDATE("% Sconto 1",0);
// //SalesLineRecG.VALIDATE("% Sconto 2",0);
// END;
// IF (NOT NoSc1 AND (Excel_SC1 <> 0)) THEN BEGIN
// SalesLineRecG.VALIDATE("% Sconto 1",Excel_SC1);
// END;
// IF (NOT NoSc2 AND (Excel_SC2 <> 0)) THEN BEGIN
// SalesLineRecG.VALIDATE("% Sconto 2",Excel_SC2);
// END;
// IF NoSc1 THEN
// SalesLineRecG.VALIDATE("% Sconto 1",0);
// IF NoSc2 THEN
// SalesLineRecG.VALIDATE("% Sconto 2",0);
// SalesLineRecG.VALIDATE("Salesperson Code");
SalesLineRecG.MODIFY(TRUE);
// IF ErroreGiacenza AND ("Sales Header"."Location Code" <> '0') THEN BEGIN
// Nrig += 10000;
// T83."Journal Template Name" := 'ARTICOLO';
// T83."Journal Batch Name" := 'RETTREND';
// T83."Line No." := Nrig;
// T83.VALIDATE("Posting Date",WORKDATE);
// T83.VALIDATE("Entry Type",T83."Entry Type"::"Positive Adjmt.");
// T83.VALIDATE("Item No.",Art."No.");
// T83."Document No." := 'RR-'+TestataOrdine."Location Code";
// T83.Description := 'Giac. '+FORMAT(Art."Net Change") + ' Ord. '+FORMAT(SalesLineRecG.Quantity);
// T83.VALIDATE("Location Code",TestataOrdine."Location Code");
// T83.VALIDATE(Quantity,SalesLineRecG.Quantity-Art."Net Change");
// T83.VALIDATE(T83."Unit Cost",0);
// T83.INSERT(TRUE);
// END;
END;
END;
UNTIL ExcelTemp.NEXT = 0;
0
Comments
-
EVALUATE(Excel_ItemCdeG,ExcelTemp."Cell Value as Text");
Ik wist niet dat string en string geevalueerd moeten worden.
Daarnaast, als je string niet word ingelezen wanneer er meer dan 3 cijfers of karakters in staan, is dat wat je moet oplossen.
Zijn je variabelen groot genoeg?
Gebruik ook liefst de [code] tag om dit weer te geven, want nu wordt ik misselijk hiervan {niet alleen om de inspringing, maar vooral om de (gelukkig in commentaar) T83 tabel code}0 -
Tja Dit heeft iemand op onze Italiaanse vestiging in elkaar geflanst.
Naar nu blijkt werkt het alleen maar als er een letter in de codering staat en werkt het crossreference zoeken niet als er alleen cijfers in staan.
En nu willen ze dat natuurlijk gebruiken. (in Dynamincs Nav 5.0)0 -
Dan raad ik je aan om eens die evaluate na te kijken.
Hoewel de cell value as text wordt gebruikt, kan het zijn dat Excel toch een of ander formaat heeft doorgedrukt.
Maar je antwoord is een wezenlijk verschil met je originele vraag, dus verder onderzoek heeft uitgewezen dat het aan de cijfers ligt
Indien aan de kruisverwijzingen punten en/of komma's beginnnen te hangen. strip ze dan voor je op artikelen gaat zoeken.
(Dat is artikelen EN kruisverwijzingen)
als je daarnaast ook kruisverwijzingen hebt met komma's en punten in. Dan zit je met een groter probleem
Nu ik weet niet hoe ver deze import gaat, maar als het order nog wordt nagekeken door een medewerker zou je eventueel ook de lijnen zonder resultaat importeren in description lines.
Dan kan de medewerker dit aanpassen en verder afhandelen.0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions