ok thats the best way to get a faster result!
and i have to admit that my code is not optimal.
but i can post it here if this is ok. maybe you have some great ideas.
[code] var vStammdaten as String var vStammdatenSort as String var vStammdatenSortArray as Array[20] of string var vCompareArray as Array[20,3] of string var vLagerdaten as String var vLagerDatenSav as string var vLagerSubDaten as String var vLagerSubDatenSav as String var vStammLength as int var vLagerLength as int var vStammSplit as string var vStammSplitSav as String var vStammSplitArt as string var vCompare as String var vSucheLager as string var vSucheLAgerSub as string var vFileopen as int var vfileopen1 as int
var i as int var j as int = 0 var vtemp as string
vfileopen = fileopen("e:\sesame\zoutput.txt") vfileopen1 = fileopen("e:\sesame\zstammsub.txt")
vStammdaten = @insert("e:\sesame\stammv1.txt") vLagerdaten = @xlookupSourceListAll("10lager.db","z","ZTG_Datei!Abteilungsnummer","Artikelnummer;InternNr;Bezeichnung;Datum;Rueckgabedatum;BruttoVKVE") if @error then { writeln("xlu lager schief gegangen") stop } vLagerDatenSav = vLagerDaten vLagerSubDaten = @xlookupSourceListAll("10Lager.db","z..","ART_EAN!ArtNr","ArtNr;EAN;MWST;Preis_B;Preis_N") if @error then { writeln("xlu lagerSub schief gegangen") stop }
vLagerSubDatenSav = vLagerSubDaten
setstringarrayseparator(@newline()) vStammLength = @countstringarray(vStammdaten) vLagerLength = @CountStringArray(vLagerDaten) restorestringarrayseparator()
for i = 1 to vStammLength vTemp = split(vStammDaten,@Newline())
vStammdatenSortArray[1] = @mid(vTemp,5,6) vStammdatenSortArray[2] = @mid(vTemp,11,60) vStammdatenSortArray[3] = @mid(vTemp,79,3) vStammdatenSortArray[4] = @mid(vTemp,82,2) vStammdatenSortArray[5] = @mid(vTemp,84,32) vStammdatenSortArray[6] = @mid(vTemp,116,2) vStammdatenSortArray[7] = @mid(vTemp,118,1) vStammdatenSortArray[8] = @mid(vTemp,71,4) vStammdatenSortArray[9] = @mid(vTemp,75,4) vStammdatenSortArray[10] = @mid(vTemp,119,18) vStammdatenSortArray[11] = @mid(vTemp,137,1) vStammdatenSortArray[12] = @mid(vTemp,138,5) vStammdatenSortArray[13] = @mid(vTemp,143,15) vStammdatenSortArray[14] = @mid(vTemp,158,15) vStammdatenSortArray[15] = @mid(vTemp,174,4) vStammdatenSortArray[16] = @mid(vTemp,184,2) +"."+ @mid(vTemp,182,2) +"."+ @mid(vTemp,178,4) vStammdatenSortArray[17] = @mid(vTemp,192,2) +"."+ @mid(vTemp,190,2) +"."+ @mid(vTemp,186,4) vStammdatenSortArray[18] = @mid(vTemp,200,2) +"."+ @mid(vTemp,198,2) +"."+ @mid(vTemp,194,4) vStammdatenSortArray[19] = @mid(vTemp,1,2) + @left(vTemp,1)
if vStammdatenSortArray[7] = @Str(3) then vStammdatenSortArray[7] = "M" if vStammdatenSortArray[7] = @Str(2) then vStammdatenSortArray[7] = "K" if vStammdatenSortArray[7] = @Str(1) then vStammdatenSortArray[7] = "P"
while @left(vStammdatenSortArray[1],1) = "0" { vStammdatenSortArray[1] = @mid(vStammdatenSortArray[1],2,6) }
while @left(vStammdatenSortArray[9],1) = "0" { vStammdatenSortArray[9] = @mid(vStammdatenSortArray[9],2,4) }
vStammdatenSort = vstammdatensort + vStammdatenSortArray[7] + vStammdatenSortArray[1] + " " + vStammdatenSortArray[9] + ";" + vStammdatenSortArray[2] + ";" + vStammdatenSortArray[3] + ";" + vStammdatenSortArray[4] + ";" + vStammdatenSortArray[5] + ";" + vStammdatenSortArray[6] + ";" + vStammdatenSortArray[7] + ";" + vStammdatenSortArray[8] + ";" + vStammdatenSortArray[9] + ";" + vStammdatenSortArray[10] + ";" + vStammdatenSortArray[11] + ";" + vStammdatenSortArray[12] + ";" + vStammdatenSortArray[13] + ";" + vStammdatenSortArray[14] + ";" + vStammdatenSortArray[15] + ";" + vStammdatenSortArray[16] + ";" + vStammdatenSortArray[17] + ";" + vStammdatenSortArray[18] + ";" + vStammdatenSortArray[19] + "$#$"
writeln("teilen und neu zusammenbauen: " + i) if @mod(i,50) = 0 then cls()
next
vLagerSubDaten = @Replace(vLagerSubDaten,"=","#")
vLagerSubDaten = @Replace(vLagerSubDaten,";","$#$") vStammdatenSort = @Replace(vStammdatenSort,"$#$",@NewLine()) vStammdatenSort = @Replace(vStammdatenSort,";","$#$") vLagerDaten = @Replace(vLagerDaten,";","$#$")
setstringarrayseparator(@newline()) vStammdatenSort = @SortStringArray(vStammdatenSort,0) vLagerdaten = @sortStringArray(vLagerdaten,0) vLagerSubDaten = @SortStringArray(vLagerSubDaten,0) restorestringarrayseparator()
vStammdatenSort = @Replace(vStammdatenSort,"$#$",";") vLagerSubDaten = @Replace(vLagerSubDaten,"$#$",";")
for i = 1 to vStammLength vStammSplit = split(vStammDatenSort,@NewLine()) vStammSplitSav = vStammSplit vStammSplitArt = split(vStammSplit,";") setstringarrayseparator(@newline()) vSucheLager = @searchstringarray(vLagerDaten,vStammSplitArt+"$#$..") vSucheLagerSub = @searchStringArray(vLagerSubDaten,"Z???"+vStammSplitArt+"#..") restorestringarrayseparator()
setstringarrayseparator(@newline()) if @countstringarray(vSucheLager) > 1 then { vSucheLager = split(vSucheLager,@Newline()) // filewriteln(vfileopen1,vsuchelager) } if @countstringarray(vSucheLagerSub) > 1 then { vSucheLagerSub = split(vSucheLagerSub,@Newline()) } restorestringarrayseparator()
if @len(vSucheLager) > 0 and @len(vSucheLagerSub) < 2 then { writeln("##################### so a schas ################" + vstammsplitart) filewriteln(vfileopen1,vLagerSubDaten) } if @len(vSucheLager) > 0 and @len(vsuchelagersub) > 0 { vSucheLager = @Replace(vsuchelager,"$#$",";") vCompare = vCompare + "$#$" + vStammsplitSav + "|" +vSucheLager + "|" + vSucheLagerSub }
writeln("teilen 2 " + i) if @mod(i,50) = 0 then cls()
next
vCompare = @Replace(vCompare,"$#$",@NewLine()) vCompare = @Replace(vCompare," ","")
setstringarrayseparator(@newline()) vStammLength = @countstringarray(vCompare) restorestringarrayseparator()
for i = 1 to vStammLength
vStammDaten = Split(vCompare,@NewLine()) vStammDaten = split(vCompare,"|") vLagerDaten = split(vCompare,"|") vLagerSubDaten = split(vCompare,"|")
for j = 1 to 19 vCompareArray[j,1] = split(vStammDaten,";") next
vTemp = split(vLagerDaten,";") vCompareArray[1,2] = split(vLagerDaten,";") vCompareArray[2,2] = split(vLagerDaten,";") vCompareArray[16,2] = split(vLagerDaten,";") vCompareArray[17,2] = split(vLagerDaten,";") vCompareArray[13,2] = split(vLagerDaten,";")
vCompareArray[1,3] = split(vLagerSubDaten,";") vCompareArray[10,3] = split(vLagerSubDaten,";") vCompareArray[15,3] = split(vLagerSubDaten,";") vCompareArray[13,3] = split(vLagerSubDaten,";") vTemp = split(vLagerSubDaten,";") if @Int(vCompareArray[10,1]) <> @Int(vCompareArray[10,3]) and vCompareArray[10,3]<>"" then //EAN Vergleich { filewriteln(vfileopen,"EAN-Aenderung" + vCompareArray[10,1] + " "+vCompareArray[10,3]) xPost("10lager.db", @left(vCompareArray[1,2],@len(vCompareArray[1,2])-@len(vCompareArray[9,1]))+" "+vCompareArray[9,1]+"\=1","Art_EAN!ArtNr",@Int(vCompareArray[10,1]),"EAN","") if @error then filewriteln(vfileopen1,"posting EAN nicht erfolgt: " + vCompareArray[1,1]) vTemp = "J" } if @TN(vCompareArray[13,1])/1000 <> @TN(vCompareArray[13,2]) then //BruttoPreis {
filewriteln(vfileopen,"Preisaenderung" + vCompareArray[13,1] + " "+vCompareArray[13,2]) xPost("10lager.db", @left(vCompareArray[1,1],@len(vCompareArray[1,1])-@len(vCompareArray[9,1]))+" "+vCompareArray[9,1],"ZTG_Datei!Artikelnummer",@TN(vCompareArray[13,1])/1000,"BruttoVkVE","") xPost("10lager.db", @left(vCompareArray[1,2],@len(vCompareArray[1,2])-@len(vCompareArray[9,1]))+" "+vCompareArray[9,1]+"\=1","Art_EAN!ArtNr",@TN(vCompareArray[13,1])/1000,"Preis_B","") if @error then filewriteln(vfileopen1,"posting Preis nicht erfolgt: " + vcomparearray[1,1]) vTemp = "J" }
if @TD(vCompareArray[16,1]) <> @TD(vCompareArray[16,2]) then //Lieferdatum { filewriteln(vfileopen,"Lieferdatum" + vCompareArray[16,1] + " "+vCompareArray[16,2]) xPost("10lager.db", @left(vCompareArray[1,1],@len(vCompareArray[1,1])-@len(vCompareArray[9,1]))+" "+vCompareArray[9,1],"ZTG_Datei!Artikelnummer",@TD(vCompareArray[16,1]),"Datum","") if @error then filewriteln(vfileopen1,"posting lieferdatum nicht erfolgt: " + vcomparearray[1,1]) vTemp = "J" } if @TD(vCompareArray[17,1]) <> @TD(vCompareArray[17,2]) then //Rückgabedatum { filewriteln(vfileopen,"Remissionsdatum" + vCompareArray[17,1] + " "+vCompareArray[17,2]) xPost("10lager.db", @left(vCompareArray[1,1],@len(vCompareArray[1,1])-@len(vCompareArray[9,1]))+" "+vCompareArray[9,1],"ZTG_Datei!Artikelnummer",@TD(vCompareArray[17,1]),"RueckgabeDatum","") if @error then filewriteln(vfileopen1,"posting rückgabedatum nicht erfolgt: " + vcomparearray[1,1]) vTemp = "J" } if vTemp = "J" then filewriteln(vFileOpen,"######## "+vCompareArray[1,1]+" "+vCompareArray[1,2]+" #######")
writeln("vergleichen: " + i) if @mod(i,50) = 0 then cls()
next fileclose(vFileopen) fileclose(vFileopen1)
restorestringarrayseparator()
[/code]
this is the full code.
thanks in the front
-sebastian
|