Prisliste-import i Microsoft C5 version 2008
Jeg modtager prislister fra Lemvigh-Müller og skal have disse importeret i lagerkartoteket - "InvenTable".Med prislisten følger også en vejledende UDSALGSPRIS, som jeg også gerne vil have ind. Men salgsprisen ligger i et andet kartotek.
Der er ingen problemer med selve importeringen, idet jeg kan få alle felter med.
Jeg har valgt at lægge "Salgsprisen" i feltet "ItemName2" FOR SÅ SENERE at flytte det til "InvenPrice" kartoteket afsluttende med at slette "ItemName2"; OG DET ER DETTE, SOM JEG MANGLER PROGRAMMERINGEN TIL.
Jeg har på fornemmelsen, at det kun er nogle få programlinier som skal til, men hvorledes jeg lige får flyttet fra et kartotek til et andet, er jeg lidt på bar bund med.
PS: Jeg får ingen VareGruppe med, så denne sætter jeg selv til "Varer".
Koden indtil videre ser således ud:
"
#MacroLoad(FILE_UTIL)
STR 254 &FileName
INT &Counter
INT &InsErr
STR 999 &TextFields = ',1,2,3,4,5,7,'
STR 999 &RealFields = ',6,8,'
STR 999 &DateFields = ','
STR 255 &FieldContent[]
STR 999 &Line_
STR 1 &TextDelimiter = '"'
STR 1 &ThousandsSeparator
STR 1 &DecimalDelimiter
INT &DecimalsCount
INT &DateOrder = 123
INT &DelimiterCount
INT &StrPos
INT &CurrentField
INT &TestField
SET UserFormatNumberDels('9999.99',&ThousandsSeparator,&DecimalDelimiter,&DecimalsCount)
SET &FileName = #GetFile_Open( "@SYS14875 "+FilePName(InvenTable)+":","*.txt")
IF NOT &FileName OR NOT #FileExists(&FileName) THEN
RETURN 0
ENDIF
WINDOW 40,5 AT 20,5
PRINT "Skriver...........: InvenTable" AT 1,1
PRINT "Fra...............: "+&FileName AT 1,2
PRINT "Record............: " AT 1,3
TTSBEGIN InvenTable
INTRODUCE InvenTable
SET &INRECDEL = #TextRecDel
SET &INFLDDEL = ','
READ &FileName AS TEXT INTO (
&FieldContent[1],
&FieldContent[2],
&FieldContent[3],
&FieldContent[4],
&FieldContent[5],
&FieldContent[6],
&FieldContent[7],
&FieldContent[8],
&FieldContent[9],
&FieldContent[10],
&FieldContent[11],
&FieldContent[12],
&FieldContent[13],
&FieldContent[14],
&FieldContent[15],
&FieldContent[16],
&FieldContent[17],
&FieldContent[18],
&FieldContent[19],
&FieldContent[20],
&FieldContent[21],
&FieldContent[22],
&FieldContent[23],
&FieldContent[24],
&FieldContent[25],
&FieldContent[26],
&FieldContent[27],
&FieldContent[28],
&FieldContent[29],
&FieldContent[30],
&FieldContent[31],
&FieldContent[32],
&FieldContent[33],
&FieldContent[34],
&FieldContent[35],
&FieldContent[36],
)
SET &CurrentField = 0
SET &TestField = 0
WHILE &CurrentField < 8
#Add(&CurrentField,1)
#Add(&TestField,1)
SET &Line_ = &FieldContent[&TestField]
{ remove the delimiters from a text field, if a text field is present}
IF StrScan(&TextFields,','+Int2Str(&CurrentField)+',',1,999) THEN
IF SubStr(&Line_,1,1) == &TextDelimiter THEN
SET &Line_ = StrDel(&Line_,1,1)
WHILE 1
SET &DelimiterCount = 0
SET &StrPos = StrLen(&Line_)
WHILE &StrPos > 0 AND SubStr(&Line_,&StrPos,1) == &TextDelimiter
#Sub(&StrPos,1)
#Add(&DelimiterCount,1)
END
IF &DelimiterCount MOD 2 == 0 THEN
#Add(&TestField,1)
SET &Line_ = &Line_ + &INFLDDEL + &FieldContent[&TestField]
ELSE
SET &Line_ = StrDel(&Line_,StrLen(&Line_),1)
BREAK
ENDIF
END
ENDIF
SET &Line_ = SysInfo(5031,&Line_)
SET &StrPos = StrLen(&Line_)
WHILE &StrPos > 0
IF SubStr(&Line_,&StrPos,1) == &TextDelimiter THEN
#Sub(&StrPos,1)
SET &Line_ = StrDel(&Line_,&StrPos,1)
ENDIF
#Sub(&StrPos,1)
END
#Switch(&CurrentField)
#CASE(1) SET ItemNumber = &Line_
#CASE(2) SET Group = &Line_
#CASE(3) SET ItemName1 = &Line_
#CASE(4) SET ItemName3 = &Line_
#CASE(5) SET UnitCode = &Line_
#CASE(7) SET ItemName2 = &Line_
#EndSwitch
ELSEIF StrScan(&RealFields,','+Int2Str(&CurrentField)+',',1,999) THEN
SET &Line_ = StrRem(&Line_,&ThousandsSeparator)
IF &DecimalDelimiter <> '.' THEN
SET &Line_ = StrReplace(&Line_,&DecimalDelimiter,'.')
ENDIF
#Switch(&CurrentField)
#CASE(6) SET CostPriceUnit = Str2Num(&Line_)
#CASE(8) SET CostPrice = Str2Num(&Line_)
#EndSwitch
ELSEIF StrScan(&DateFields,','+Int2Str(&CurrentField)+',',1,999) THEN
#Switch(&CurrentField)
#EndSwitch
ELSE
#Switch(&CurrentField)
#EndSwitch
ENDIF
END
SET &Counter = &Counter + 1
IF &Counter MOD 1 == 0 THEN
PRINT Num2Str(&Counter,15,0,0,0) AT 20,3
ENDIF
SET Group = "Varer"
SET RowNumber = 0
INSERT InvenTable
#ADD(&InsErr,(RowNumber == 0))
END
TTSCOMMIT InvenTable
PRINT Num2Str(&Counter,15,0,0,0) AT 20,3
IF &InsErr THEN
SET Box(2,StrFmt("@SYS64094",Int2Str(&InsErr)),0)
ENDIF
PAUSE
"
Håber en eller flere kan hjælpe her.. :D