Den ene fil bliver lavet eksporteres fra en hjemmeside, den anden fil bliver eksporteret fra C5.
Pointen er så, at mit program (som jeg har bygget, har bare ikke den væsentlige algoritme) skal kunne sammenligne hjemmeside-filen med C5-filen.
Hvis programmet detekterer en ændring ud for det pågældende varenummer, skal den lave en ny linie i en ny og trejde fil med C5-filens oplysninger.
Jeg er ikke den store haj til VB, så jeg skal bruge hjælp til at finde ud af at smide de to filer i to arrays, hvorefter jeg kan sammenligne hvert varenummer med hinanden, og se om de to pågældendes varenummer har ændringer i cost- og salgspris. Hvis der i så fald ér en ændring, så skal linien fra C5-filen blot smides i en ny fil, sammen med alle de andre detekterede ændringer.
Egentlig blot et differense-program, hvor C5-filen bestemmer :)
Andre oplysninger, som kunne være interessante at få oplyst:
Er der lige mange varer i hver fil? - kan man skiftevis læse en record fra filerne og sammenligne? Er filerne sorteret i varenummerorden? - har betydning for den optimale søgemetode. Er det VB eller VB.NET du programmerer i? - eller for den sags skyld VBA (Visual Basic for Application - altså i VB til et af Office programmerne)? Er det altid med ; som separator? - Original VB har bedre mulighed for direkte at læse komma-separerede filer med input# funktionen (men den europæiske standard for eksport til en CSV-fil er jo desværre semikolon-separeret).
Dim xsti, c5Arr(maxLin, 3), c5Antal, antalDiff Sub start() On Error Resume Next Close #1 Close #2 Close #3
antalDiff = 0
hentSti
Rem sletter evt gl. diff.txt Kill xsti + "diff.txt"
hentfil_C5 hentfil_HP
MsgBox ("sammenligning er afsluttet - antal diff.: " + CStr(antalDiff)) End Sub Private Sub hentfil_HP() Dim vnr As Long, kost As Single, salg As Single
Open xsti + "HP.txt" For Input As #2 Input #2, overskrifter
While Not EOF(2) Line Input #2, linie adskilLinien linie, vnr, kost, salg findC5linien vnr, kost, salg Wend Close #2 End Sub Private Sub findC5linien(hpVnr, hpKost, hpSalg) Dim f For f = 0 To c5Antal - 1 Rem findes varenr i C5 If hpVnr = c5Arr(f, 0) Then If hpKost <> c5Arr(f, 1) Or hpSalg <> c5Arr(f, 2) Then skrivDiff c5Arr(f, 0), c5Arr(f, 1), c5Arr(f, 2) Exit Sub End If End If Next f End Sub Private Sub skrivDiff(c5Vnr, c5Salg, c5Kost) Dim linie antalDiff = antalDiff + 1
Open xsti + "Diff.txt" For Append As #3 Write #3, c5Vnr; c5Salg; c5Kost Close #3 End Sub Private Sub hentfil_C5() Dim vnr As Long, kost As Single, salg As Single
Open xsti + "c5.txt" For Input As #1 Input #1, overskrifter
While Not EOF(1) Line Input #1, linie adskilLinien linie, vnr, kost, salg c5Arr(c5Antal, 0) = vnr c5Arr(c5Antal, 1) = kost c5Arr(c5Antal, 2) = salg c5Antal = c5Antal + 1 Wend Close #1 End Sub Private Function adskilLinien(linie, vnr, kost, salg) Dim p, lin, count, del lin = linie + ";" count = 0 While InStr(lin, ";") > 0 p = InStr(lin, ";") If p > 0 Then del = Left(lin, p - 1) Select Case count Case 0 vnr = del Case 1 kost = del Case 2 salg = del End Select lin = Mid(lin, p + 1) count = count + 1 Else Stop End If Wend
End Function Private Sub hentSti() xsti = ActiveDocument.Path If Right(xsti, 1) <> "\" Then xsti = xsti + "\" End If End Sub
HP VARENUMMER;COSTPRIS;SALGSPRIS 5395836;55,34;88,23 5395837;44,00;77,35 5395830;100,00;125,35 5395831;15,00;27,7
Diff 5395836,55.34,88.13 5395830,101,125.35
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.