Vraag mbt import vanuit Excel werkblad

Marcos
Member Posts: 55
Navi vrienden,
Ik ben voor een afdeling die zich buigt over de calculatie van nieuwe projecten (bouw) bezig met het maken van een rapportje die begrotings regels vanuit Excel naar Navi4.0 pompt.
Deze Regels moeten onder een bepaald Element vallen, die aangegeven worden middels 001,002,003,004,005 met bijbehorende omschrijvingen.
Alle Excel data word naar een Temporary tabel gedumpt, die ik later weer wil filteren en uitlezen.
En daar zit nou juist het probleem, ik heb een functie InsertRowLine gecreérd die de regels vanuit Excel in de Temp tabel INSERT.
Vanaf deze stap moeten ze naar de echte tabel gekopieerd worden, met bepaalde filter opties.
Maar als wanneer moet deze filter en insert stap plaats vinden binnen mij onderstaande code ?
Of moet ik hiervoor een nieuwe functie creeéren?
Ik hoop dat iemand mij hiermee kan helpen.
Documentation()
Integer - OnPreDataItem()
CREATE(xlApp);
Integer - OnAfterGetRecord()
IF EXISTS(FileName) THEN BEGIN
xlBook := xlApp.Workbooks._Open(FileName);
//Project
xlSheet:=xlApp.Worksheets.Item('PROJECT');
Projectnummer := DELCHR(FORMAT(xlSheet.Range(matrix(3,3)).Value),'=','.');
CLEAR(JobStructureLine);
IF JobStructureLine.GET(Projectnummer) THEN ;
//Element
xlSheet:=xlApp.Worksheets.Item('ELEMENT');
FOR y := 2 TO 6 DO BEGIN
ElementNr := (xlSheet.Range(matrix(1,y)).Value);
ElementOmschrijving := (xlSheet.Range(matrix(3,y)).Value);
ElementVersie := (xlSheet.Range(matrix(2,y)).Value);
InsertRowElement(Projectnummer,ElementNr,ElementOmschrijving,ElementVersie);
//Regels EXCEL VB VAN IBIS ONDERLEGGER B
xlSheet:=xlApp.Worksheets.Item('EXCEL VB VAN IBIS ONDERLEGGER B');
IF FORMAT(xlSheet.Range(matrix(13,2)).Value) <> '0' THEN BEGIN
TotaalBedrag := FORMAT(xlSheet.Range(matrix(13,2)).Value);
FOR y := 2 TO 500 DO BEGIN
IF FORMAT(xlSheet.Range(matrix(13,y)).Value) <> '0' THEN BEGIN
StabuCode := DELCHR(FORMAT(xlSheet.Range(matrix(1,y)).Value),'=','.');
StabuCode := FORMAT(xlSheet.Range(matrix(1,y)).Value);
Omschrijving := FORMAT(xlSheet.Range(matrix(2,y)).Value);
AantalUur := FORMAT(xlSheet.Range(matrix(5,y)).Value);
Eenheid := FORMAT(xlSheet.Range(matrix(4,y)).Value);
Aantaltxt := FORMAT(xlSheet.Range(matrix(3,y)).Value);
Bedragtxt := FORMAT(xlSheet.Range(matrix(11,y)).Value);
Omschrijving30 := COPYSTR(Omschrijving,1,30);
RegelNr := RegelNr + 1000;
Versienummer := '001';
Filter00 := COPYSTR(StabuCode,3,4);
Filter99 := COPYSTR(StabuCode,3,4);
Filter4 := COPYSTR(StabuCode,1,4);
Filter2 := COPYSTR(StabuCode,1,2);
IF EVALUATE(Aantal, Aantaltxt) AND EVALUATE(Bedrag, Bedragtxt) THEN
InsertRowLine(Projectnummer,Omschrijving,Eenheid,AantalUur,Bedrag,Aantal,Element,ElementFilter,Filter00,Filter99,Filter4,Filter2);
END;
END;
END;
END;
xlApp.Workbooks.Close;
END;
Integer - OnPostDataItem()
matrix(m_col : Integer;m_row : Integer) m_ret : Code[10]
IF m_col > 256 THEN BEGIN
m_tus:='IV';
ERROR('Selecteer minder artikelen (max 256)');
END ELSE BEGIN
alf:='ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
REPEAT
m_heel:=ROUND(m_col/26.000000001,1,'<');
IF m_heel>0 THEN
m_nu:=m_heel
ELSE
m_nu:=m_col;
IF m_nu=0 THEN m_nu:=27;
m_tus:=m_tus+COPYSTR(alf,m_nu,1);
m_col:=ROUND(m_col-(m_heel*26),1);
UNTIL m_heel<=0 ;
END;
m_ret:=DELCHR(STRSUBSTNO('%1 %2',m_tus,m_row));
kolom(m_col : Integer) m_ret : Code[10]
IF m_col > 256 THEN BEGIN
m_tus:='IV';
ERROR('Selecteer minder artikelen (max 256)');
END ELSE BEGIN
alf:='ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
REPEAT
m_heel:=ROUND(m_col/26.000000001,1,'<');
IF m_heel>0 THEN
m_nu:=m_heel
ELSE
m_nu:=m_col;
IF m_nu=0 THEN m_nu:=27;
m_tus:=m_tus+COPYSTR(alf,m_nu,1);
m_col:=ROUND(m_col-(m_heel*26),1);
UNTIL m_heel<=0 ;
END;
m_ret:=DELCHR(STRSUBSTNO('%1',m_tus));
InsertRowElement(Projectnummer : Text[100];ElementNr : Text[100];ElementOmschrijving : Text[100];ElementVersie : Text[30])
JobStructureElement.INIT;
JobStructureElement.fCodJobNo := Projectnummer;
JobStructureElement.fCodStatus := '001';
JobStructureElement.fCodStructVersion := ElementVersie;
JobStructureElement.fCodStructElement := ElementNr;
JobStructureElement.fTxtDescription := ElementOmschrijving;
JobStructureElement.INSERT;
InsertRowLine(Projectnummer : Text[100];Omschijving : Text[100];Eenheid : Text[100];AantalUur : Text[100];Bedrag : Decimal;Aantal : Dec
JobStructureLineTemp.INIT;
JobStructureLineTemp.fIntLineNo := RegelNr;
JobStructureLineTemp.fCodJobNo := Projectnummer;
JobStructureLineTemp.fCodStructVersion := Versienummer;
JobStructureLineTemp.fTxtDescription := Omschrijving30;
JobStructureLineTemp.fCodUnitOfMeasure := Eenheid;
JobStructureLineTemp.fDecQuantityPer := Aantal;
JobStructureLineTemp.fDecChangedUnitCost := Bedrag;
JobStructureLineTemp.fCodStructElement := StabuCode;
JobStructureLineTemp.fCodStabu := StabuCode;
JobStructureLineTemp.fTxtAttribute01 := Filter99;
JobStructureLineTemp.fTxtAttribute02 := Filter00;
JobStructureLineTemp.fTxtAttribute03 := Filter4;
JobStructureLineTemp.fTxtAttribute04 := Filter2;
JobStructureLineTemp.INSERT;
JobStructureLine.INIT;
JobStructureLine.fIntLineNo := RegelNr;
JobStructureLine.fCodJobNo := Projectnummer;
JobStructureLine.fCodStructVersion := Versienummer;
JobStructureLine.fTxtDescription := Omschrijving30;
JobStructureLine.fCodStabu := StabuCode;
JobStructureLine.fCodUnitOfMeasure := Eenheid;
JobStructureLine.fDecQuantityPer := Aantal;
JobStructureLine.fDecChangedUnitCost := Bedrag;
JobStructureLine.fCodStructElement := '005';
JobStructureLine.VALIDATE(JobStructureLine.fDecQuantity,JobStructureLine.fDecCalculatedCost);
JobStructureLine.INSERT;
Ik ben voor een afdeling die zich buigt over de calculatie van nieuwe projecten (bouw) bezig met het maken van een rapportje die begrotings regels vanuit Excel naar Navi4.0 pompt.
Deze Regels moeten onder een bepaald Element vallen, die aangegeven worden middels 001,002,003,004,005 met bijbehorende omschrijvingen.
Alle Excel data word naar een Temporary tabel gedumpt, die ik later weer wil filteren en uitlezen.
En daar zit nou juist het probleem, ik heb een functie InsertRowLine gecreérd die de regels vanuit Excel in de Temp tabel INSERT.
Vanaf deze stap moeten ze naar de echte tabel gekopieerd worden, met bepaalde filter opties.
Maar als wanneer moet deze filter en insert stap plaats vinden binnen mij onderstaande code ?
Of moet ik hiervoor een nieuwe functie creeéren?
Ik hoop dat iemand mij hiermee kan helpen.
Documentation()
Integer - OnPreDataItem()
CREATE(xlApp);
Integer - OnAfterGetRecord()
IF EXISTS(FileName) THEN BEGIN
xlBook := xlApp.Workbooks._Open(FileName);
//Project
xlSheet:=xlApp.Worksheets.Item('PROJECT');
Projectnummer := DELCHR(FORMAT(xlSheet.Range(matrix(3,3)).Value),'=','.');
CLEAR(JobStructureLine);
IF JobStructureLine.GET(Projectnummer) THEN ;
//Element
xlSheet:=xlApp.Worksheets.Item('ELEMENT');
FOR y := 2 TO 6 DO BEGIN
ElementNr := (xlSheet.Range(matrix(1,y)).Value);
ElementOmschrijving := (xlSheet.Range(matrix(3,y)).Value);
ElementVersie := (xlSheet.Range(matrix(2,y)).Value);
InsertRowElement(Projectnummer,ElementNr,ElementOmschrijving,ElementVersie);
//Regels EXCEL VB VAN IBIS ONDERLEGGER B
xlSheet:=xlApp.Worksheets.Item('EXCEL VB VAN IBIS ONDERLEGGER B');
IF FORMAT(xlSheet.Range(matrix(13,2)).Value) <> '0' THEN BEGIN
TotaalBedrag := FORMAT(xlSheet.Range(matrix(13,2)).Value);
FOR y := 2 TO 500 DO BEGIN
IF FORMAT(xlSheet.Range(matrix(13,y)).Value) <> '0' THEN BEGIN
StabuCode := DELCHR(FORMAT(xlSheet.Range(matrix(1,y)).Value),'=','.');
StabuCode := FORMAT(xlSheet.Range(matrix(1,y)).Value);
Omschrijving := FORMAT(xlSheet.Range(matrix(2,y)).Value);
AantalUur := FORMAT(xlSheet.Range(matrix(5,y)).Value);
Eenheid := FORMAT(xlSheet.Range(matrix(4,y)).Value);
Aantaltxt := FORMAT(xlSheet.Range(matrix(3,y)).Value);
Bedragtxt := FORMAT(xlSheet.Range(matrix(11,y)).Value);
Omschrijving30 := COPYSTR(Omschrijving,1,30);
RegelNr := RegelNr + 1000;
Versienummer := '001';
Filter00 := COPYSTR(StabuCode,3,4);
Filter99 := COPYSTR(StabuCode,3,4);
Filter4 := COPYSTR(StabuCode,1,4);
Filter2 := COPYSTR(StabuCode,1,2);
IF EVALUATE(Aantal, Aantaltxt) AND EVALUATE(Bedrag, Bedragtxt) THEN
InsertRowLine(Projectnummer,Omschrijving,Eenheid,AantalUur,Bedrag,Aantal,Element,ElementFilter,Filter00,Filter99,Filter4,Filter2);
END;
END;
END;
END;
xlApp.Workbooks.Close;
END;
Integer - OnPostDataItem()
matrix(m_col : Integer;m_row : Integer) m_ret : Code[10]
IF m_col > 256 THEN BEGIN
m_tus:='IV';
ERROR('Selecteer minder artikelen (max 256)');
END ELSE BEGIN
alf:='ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
REPEAT
m_heel:=ROUND(m_col/26.000000001,1,'<');
IF m_heel>0 THEN
m_nu:=m_heel
ELSE
m_nu:=m_col;
IF m_nu=0 THEN m_nu:=27;
m_tus:=m_tus+COPYSTR(alf,m_nu,1);
m_col:=ROUND(m_col-(m_heel*26),1);
UNTIL m_heel<=0 ;
END;
m_ret:=DELCHR(STRSUBSTNO('%1 %2',m_tus,m_row));
kolom(m_col : Integer) m_ret : Code[10]
IF m_col > 256 THEN BEGIN
m_tus:='IV';
ERROR('Selecteer minder artikelen (max 256)');
END ELSE BEGIN
alf:='ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
REPEAT
m_heel:=ROUND(m_col/26.000000001,1,'<');
IF m_heel>0 THEN
m_nu:=m_heel
ELSE
m_nu:=m_col;
IF m_nu=0 THEN m_nu:=27;
m_tus:=m_tus+COPYSTR(alf,m_nu,1);
m_col:=ROUND(m_col-(m_heel*26),1);
UNTIL m_heel<=0 ;
END;
m_ret:=DELCHR(STRSUBSTNO('%1',m_tus));
InsertRowElement(Projectnummer : Text[100];ElementNr : Text[100];ElementOmschrijving : Text[100];ElementVersie : Text[30])
JobStructureElement.INIT;
JobStructureElement.fCodJobNo := Projectnummer;
JobStructureElement.fCodStatus := '001';
JobStructureElement.fCodStructVersion := ElementVersie;
JobStructureElement.fCodStructElement := ElementNr;
JobStructureElement.fTxtDescription := ElementOmschrijving;
JobStructureElement.INSERT;
InsertRowLine(Projectnummer : Text[100];Omschijving : Text[100];Eenheid : Text[100];AantalUur : Text[100];Bedrag : Decimal;Aantal : Dec
JobStructureLineTemp.INIT;
JobStructureLineTemp.fIntLineNo := RegelNr;
JobStructureLineTemp.fCodJobNo := Projectnummer;
JobStructureLineTemp.fCodStructVersion := Versienummer;
JobStructureLineTemp.fTxtDescription := Omschrijving30;
JobStructureLineTemp.fCodUnitOfMeasure := Eenheid;
JobStructureLineTemp.fDecQuantityPer := Aantal;
JobStructureLineTemp.fDecChangedUnitCost := Bedrag;
JobStructureLineTemp.fCodStructElement := StabuCode;
JobStructureLineTemp.fCodStabu := StabuCode;
JobStructureLineTemp.fTxtAttribute01 := Filter99;
JobStructureLineTemp.fTxtAttribute02 := Filter00;
JobStructureLineTemp.fTxtAttribute03 := Filter4;
JobStructureLineTemp.fTxtAttribute04 := Filter2;
JobStructureLineTemp.INSERT;
JobStructureLine.INIT;
JobStructureLine.fIntLineNo := RegelNr;
JobStructureLine.fCodJobNo := Projectnummer;
JobStructureLine.fCodStructVersion := Versienummer;
JobStructureLine.fTxtDescription := Omschrijving30;
JobStructureLine.fCodStabu := StabuCode;
JobStructureLine.fCodUnitOfMeasure := Eenheid;
JobStructureLine.fDecQuantityPer := Aantal;
JobStructureLine.fDecChangedUnitCost := Bedrag;
JobStructureLine.fCodStructElement := '005';
JobStructureLine.VALIDATE(JobStructureLine.fDecQuantity,JobStructureLine.fDecCalculatedCost);
JobStructureLine.INSERT;
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