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;
0