Author |
Topic: search more than 2 items (Read 363 times) |
|
hammerjit
New Member
member is offline
Posts: 26
|
|
search more than 2 items
« Thread started on: Jul 23rd, 2015, 09:03am » |
|
Hi....I am having problem with this combining 3 conditions
I want to search my data file for '180822' and lines without "CF". But I cant get it to work.
This is my sample data CF,2015,180821,5,24 CF,2015,180822,2,21 CF,2015,180823,7,24 CF,2015,180824,1,16 1,2015,180821,24-07-15,1 1,2015,180822,24-07-15,1 1,2015,180803,15-07-15,1 4,2015,180804,20-07-2015,1 1,2015,180822,25-05-15,0.5
This is my code Code:
open "test.txt" for input as #fo
search1$="180822"
c=0
line input #fo,l$
while eof(#fo)=0 or (trim$(word$(l$,3,","))=search1$ and word$(l$,1,",")<>"CF")
c=c+1
input #fo, q$
test1$(c)=q$
input #fo, q$
test2$(c)=q$
input #fo, q$
test3$(c)=q$
input #fo, q$
test4$(c)=q$
input #fo, q$
test5$(c)=q$
end if
wend
close #fo
recnum=c
showRec1$=""
showRec2$=""
for i=1 to recnum
showRec1$=showRec1$+test4$(i)+chr$(13)+chr$(10)
showRec2$=showRec2$+test5$(i)+chr$(13)+chr$(10)
next i
print showRec1$
print showRec2$
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: search more than 2 items
« Reply #1 on: Jul 23rd, 2015, 10:38am » |
|
on Jul 23rd, 2015, 09:03am, hammerjit wrote:I want to search my data file for '180822' and lines without "CF". |
|
If the extract from your data file is typical, it seems that you don't actually need to test the individual fields separately because - apparently - '180822' can only occur in the 3rd field and 'CF' only in the 1st field. In that case you can check the entire line in one go using INSTR:
Code: open "test.txt" for input as #fo
while not(eof(#fo))
line input #fo, l$
if instr(l$, "180822") <> 0 and instr(l$, "CF") = 0 then
print l$
end if
wend
close #fo
end But if it's important to check the specific fields then this works:
Code: open "test.txt" for input as #fo
while not(eof(#fo))
line input #fo, l$
if word$(l$, 3, ",") = "180822" and word$(l$, 1, ",") <> "CF" then
print l$
end if
wend
close #fo
end I've not bothered to store the results in an array for later use, but if you need that it is obviously simple to add:
Code: open "test.txt" for input as #fo
c = 0
while not(eof(#fo))
line input #fo, l$
if word$(l$, 3, ",") = "180822" and word$(l$, 1, ",") <> "CF" then
c = c + 1
test$(c) = l$
end if
wend
close #fo
recnum = c
showRec1$ = ""
showRec2$ = ""
for i = 1 to recnum
showRec1$ = showRec1$ + word$(test$(i), 4, ",") + chr$(13) + chr$(10)
showRec2$ = showRec2$ + word$(test$(i), 5, ",") + chr$(13) + chr$(10)
next i
print showRec1$
print showRec2$
|
|
Logged
|
|
|
|
hammerjit
New Member
member is offline
Posts: 26
|
|
Re: search more than 2 items
« Reply #2 on: Jul 27th, 2015, 02:42am » |
|
Thanks Richard...that helped me a lot.
|
|
Logged
|
|
|
|
hammerjit
New Member
member is offline
Posts: 26
|
|
Re: search more than 2 items
« Reply #3 on: Jul 27th, 2015, 08:57am » |
|
Richard, just to add to this code...if I want to output but after sorting the date field(4 field) how can I go about that?
eg. the above code will output 180822 24-07-15 180822 25-05-15
But it should be sorted by May then July.
CF,2015,180821,5,24 CF,2015,180822,2,21 CF,2015,180823,7,24 CF,2015,180824,1,16 1,2015,180821,24-07-15,1 1,2015,180822,24-07-15,1 1,2015,180803,15-07-15,1 4,2015,180804,20-07-2015,1 1,2015,180822,25-05-15,0.5
Code:
open "test.txt" for input as #fo
c = 0
while not(eof(#fo))
line input #fo, l$
if word$(l$, 3, ",") = "180822" and word$(l$, 1, ",") <> "CF" then
c = c + 1
test$(c) = l$
end if
wend
close #fo
recnum = c
showRec1$ = ""
showRec2$ = ""
for i = 1 to recnum
showRec1$ = showRec1$ + word$(test$(i), 4, ",") + chr$(13) + chr$(10)
showRec2$ = showRec2$ + word$(test$(i), 5, ",") + chr$(13) + chr$(10)
next i
print showRec1$
print showRec2$
|
« Last Edit: Jul 28th, 2015, 12:41am by hammerjit » |
Logged
|
|
|
|
|