Code:
delete MyCollection
dim shared vLogFileName as c = filename_decode("[logPath]\*.log")
dim shared vLogText as c = ""
dim shared vFilter as c = ""
vResult = ui_dlg_box("Log Entry File Name",<<%dlg%
{Background=#204+153+255}
{Font=Trebuchet ms,8}
{region}
[%p=ui_get_file("Input Log Filename","Log(*.Log)|Text (*.txt)",vLogFileName,"X");I=$a5_smart_file%.80vLogFilename];
{endregion};
{line=1,0};
{region}
<OK!OK> <Cancel!CANCEL>
{endregion};
%dlg%,<<%code%
if .not. (a_dlg_button = "Cancel" .or. a_dlg_button = "OK" ) then
a_dlg_button = ""
end if
%code%)
if vResult = "OK" then
fp = file.open(vLogFileName,FILE_RW_SHARED)
WHILE .not. fp.eof()
text = fp.read_line()
vCountry = ""
IF left(text,1)="#" THEN
Seendate = substr(text,2,10)
LocateNo = substr(text,13,2)
SeenWhere = substr(text,16)
else
if ("," $ text) then
vCountry = ut(substr(rtrim(text),at(",",text)+1))
text = left(text,at(",",text)-1)
end if
if ("/" $ text) then
vReg = word(text,1,"/",1)
vCode = word(text,2,"/")
else
vReg = text
vCode = ""
end if
vLogText = vLogText+ut(vReg)-"|"-vCode-"|"-vCountry-"|"-Seendate-"|"-LocateNo-"|"-ut(SeenWhere)+crlf()
END IF
END WHILE
fp.close()
dim global MyCollection as U
myCollection.initialize("1|2|3|4|5","1","1|2|3|4|5|6",vLogText)
dim entry_count as n = *count(vLogText)
dim vLogData[entry_count] as p
vLogData.initialize_properties("reg|Code|Country|SeenDate|SeenOrder|SeenWhere",vLogText)
dim vFilterTxt[0] as c
dim index as n
' Build filter Text
for block = 0 to int(entry_count/64 + 1)
vFilter = ""
for iteration = 1 to 64
index = block * 64 + iteration
if index > entry_count then
exit for
end if
vFilter = vFilter + "reg='"-vLogData[index].reg-"'.or."
next iteration
vFilterTxt[]=left(vFilter,len(vFilter)-4)
next Block
block = vFilterTxt.first_empty()-1
vFilterTxt.resize(block)
vOrder = "REG"
dim idx as n
' build Display Data
dim vDisplayData[9999] as p
vDisplayData.initialize_from_table("Logging",vFilterTxt[1],vOrder)
for iterate = 2 to block
vDisplayData.initialize_from_table("Logging",vFilterTxt[iterate],vOrder,.t.)
next iterate
rec_numb = vDisplayData.first_empty()
vDisplayData.resize(rec_numb-1)
title_text = "Enter Logging"
ui_dlg_box("@="+title_text,<<%dlg%
{Background=#153+204+255}
{region1}
{font=Courier New,7}
{endregion2};
{region=3}
[%O==FmtCurrLogg(eval(value))%.60,16idx^#vDisplayData!select];
{endregion=3}
{region}
{line=2,0};
{justify=center}
<OK><CLOSE>
{endregion};
%dlg%,<<%code%
if a_dlg_button = "select" then
t = table.open("logging")
query.filter = "unique="-quote(rtrim(vDisplayData[idx].unique))
showvar(query.filter)
query.order = "recno()"
t.query_create()
ThisReg = myCollection.get(rtrim(vDisplayData[idx].reg))
if rtrim(t.as) = "" then
t.change_begin()
t.H = word(ThisReg,5,"|")
t.Where = word(ThisReg,6,"|")
t.When = word(ThisReg,4"|")
t.as = t.reg
t.change_end(.t.)
else
reply = ui_msg_box("","Confirm Removal of Logging Data for "+word(ThisReg,1,"|"),UI_QUESTION_SYMBOL+UI_YES_NO)
if reply = UI_YES_SELECTED then
t.change_begin()
t.h = ""
t.where = ""
t.when = ""
t.as = ""
t.change_end(.t.)
end if
end if
a_dlg_button = ""
end if
%code%)
end if
end
FUNCTION FmtCurrLogg as c (ar as p)
FmtCurrLogg = padr(rtrim(ar.reg),12," ")+padr(rtrim(ar.Code),10," ")+padr(rtrim(ar.H),3," ")+ar.When+" "+ar.Where
end function
just wondering if there is a quicker method of appending all the queried data into one array?
Bookmarks