Pozdravljen
Z vašo pomočjo sem izdelal program, kjer dodajam in prebiram podatke iz TXT zapisov. Nastal pa je problem, ko te podatke iščem oziroma seštevam po kriterijih, namreč imam kodo 1, ko hočem sešteti vse vrednosti pod kodo 1, mi sešteje tudi zapise, kjer je 11, 15, skratka, vsi zapisi ki ustrezajo pravi vrednosti 1.
Kako lahko odpravim to težavo?
Hvala.
Iskanje in izračun TXT
Prilagam del kode, kjer upam, da se skriva napaka.
Sešteva mi vse zapise kjer se prvi zapis ujema z iskanim kriterijem.
Če iščem po neznanko 1, mi sešteje tudi vrednosti neznanke 12,15, skratka vse kar se ujema na 1,11,12...15,19
Upam, da bomo to rešili
Hvala...
Sešteva mi vse zapise kjer se prvi zapis ujema z iskanim kriterijem.
Če iščem po neznanko 1, mi sešteje tudi vrednosti neznanke 12,15, skratka vse kar se ujema na 1,11,12...15,19
Koda: Izberi vse
SkupnaCena = 0
Open "c:\nafta.txt" For Input As #1
Dim isci As String
isci_leto = Text1
isci_mesec = Text2
isci_stevilka = Text3
While Not EOF(1)
Input #1, datum, stevilka, poraba, mesec, leto
If (InStr(leto, isci_leto)) And (InStr(mesec, isci_mesec)) And (InStr(stevilka, isci_stevilka)) Then
SkupnaCena = SkupnaCena + poraba
End If
Wend
Upam, da bomo to rešili
Hvala...
,
Pa ste si pogledali kaj točno naredi funkcija InStr. Ta funkcija vrne resnico (True), če se drugi niz pojavi v prvem in točno to vam tudi naredi. 1 se pojavi v 12 in 1 se pojavi tudi v 21 pa v 31 in 11.... Če želite najti samo dneve s številko 1 pač morate to zapisati:
To je to!
No probleme bi lahko imeli tudi zaradi različnih interpreacij teksta in števil. Ker v vašem primeru operirate izključno s števili bi bilo celo bolje če pred preverjanjem elemente tudi zares pretvorite v števila:
Pa ste si pogledali kaj točno naredi funkcija InStr. Ta funkcija vrne resnico (True), če se drugi niz pojavi v prvem in točno to vam tudi naredi. 1 se pojavi v 12 in 1 se pojavi tudi v 21 pa v 31 in 11.... Če želite najti samo dneve s številko 1 pač morate to zapisati:
Koda: Izberi vse
If leto = isci_leto mesec = isci_mesec and stevilka = isci_stevilka Then
...
End If
No probleme bi lahko imeli tudi zaradi različnih interpreacij teksta in števil. Ker v vašem primeru operirate izključno s števili bi bilo celo bolje če pred preverjanjem elemente tudi zares pretvorite v števila:
Koda: Izberi vse
Dim isci As Integer
isci_leto = cint(Text1)
isci_mesec = cint(Text2)
isci_stevilka = cint(Text3)
If cint(leto) = isci_leto cint(mesec) = isci_mesec and cint(stevilka) = isci_stevilka Then
...
End If
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator