Post by wexhammer on Jan 5, 2020 3:52:49 GMT -5
Hello again, the code below gives me the option to filter through my saved expenses via different filter methods. However i have now realized that if i was to add more filter options things on the gui will start looking a bit of a mess. So is there any chance to combine the two filters into one Combobox? Instead of having a dozen filters laying about... The code runs but seams to not do as intended, i belive i am missing something larger than expected. Code Below:
Global hMain, hFind, expdupNum, expdupo, expaddName, exprecordIndex, expcontactCount
Global expfilterCount, oldexptype$
Nomainwin
Dim expensename$(10000), expenseSearch$(10000), expensedup$(500), exptype$(20), expstatus$(20)
Dim expbuilder$(10000, 25), expexistInfo$(10,10), exphContents$(20)
If Not(exists("cexptype.lst")) Then 'first run create stage list
Open "exptype.lst" For Output As #exptype
Print #exptype, 10
Print #exptype, "All"
Print #exptype, "Petrol"
Print #exptype, "Equipment"
Print #exptype, "Travel"
Print #exptype, "Insurance"
Print #exptype, "Vehicle Repairs"
Print #exptype, "Office Costs "
Print #exptype, "Advertising"
Print #exptype, "Other Expenditure"
Print #exptype, "Customer Materials"
Close #exptype
End If
Open "exptype.lst" For Input As #exptype
Input #exptype, expfilterCount
For filterIndex=0 to expfilterCount-1
Input #exptype, filterName$
exptype$(filterIndex)=filterName$
Next filterIndex
Close #exptype
If Not(exists("expstatus.lst")) Then
Open "expstatus.lst" For Output As #expstatus
Print #expstatus, 9
Print #expstatus, "All"
Print #expstatus, "Flag"
Print #expstatus, "Add to customer invoice"
Print #expstatus, "Sorted"
Print #expstatus, "Return & Delete"
Print #expstatus, "Need an Invoice"
Print #expstatus, "Deposit Payment"
Print #expstatus, "Charge Customer"
Print #expstatus, "Other"
Close #expstatus
End If
Open "expstatus.lst" For Input As #expstatus
'load stage list
Input #expstatus, expfilterCount
For filterIndex=0 to expfilterCount-1
Input #expstatus, filterName$
expstatus$(filterIndex)=filterName$
Next filterIndex
Close #expstatus
expdupo=0
expaddName=1
Call exploadNames
Stylebits #main.memoexp, _WS_VSCROLL, _ES_AUTOHSCROLL, _ES_MULTILINE, 0 '
Stylebits #main, 0,_WS_MAXIMIZEBOX,0,0
WindowWidth = 495 '595 695 795
WindowHeight = 560
UpperLeftX=Int((DisplayWidth-WindowWidth)/2)
UpperLeftY=Int((DisplayHeight-WindowHeight)/2)
'open the main window
Statictext #main, "Expenses", 10, 10, 60, 20
Listbox #main.expname, expensename$(, modifyExp, 10, 35, 160, 120
Statictext #main, "Filter Contacts", 10, 170, 160, 20
Combobox #main.exptypefilter, exptype$(, loadExpFilter, 10, 190, 160, 120
Statictext #main, "Filter 2", 10, 280, 160, 20
Combobox #main.expstatusfilter, expstatus$(, loadExpFilter, 10, 230, 160, 120
Statictext #main, "Item", 195, 70, 50, 20
Textbox #main.recname, 250, 70, 225, 25
Statictext #main, "Date", 195, 100, 50, 20
Textbox #main.expdate, 250, 100, 225, 25
Statictext #main, "Cost", 195, 130, 50, 20
Textbox #main.expcost, 250, 130, 80, 25
Statictext #main, "VAT", 340, 130, 30, 20
Textbox #main.expvat, 380, 130, 95, 25
Statictext #main, "Spare", 195, 160, 50, 20
Textbox #main.spare, 250, 160, 225, 25
Statictext #main, "Spare2", 195, 190, 40, 20
Textbox #main.spare2, 250, 190, 225, 25
Statictext #main, "Status", 195, 220, 50, 20
combobox #main.expstatus,expstatus$(, [expinputLoop] 250, 220, 225, 25
' Statictext #main, "Spare4", 195, 250, 50, 20
' Textbox #main.spare4, 250, 250, 225, 25
' Statictext #main, "Spare5", 195, 280, 50, 20
' Textbox #main.spare5, 250, 280, 225, 25
' Statictext #main, "Spare6", 195, 310, 50, 20
' Textbox #main.spare6, 250, 310, 225, 25
' Statictext #main, "Spare7", 195, 340, 50, 20
' Textbox #main.spare7, 250, 340, 225, 25
Statictext #main, "Exp Type", 195, 40, 50, 20
Combobox #main.exptype, exptype$(, [expinputLoop], 250, 40, 225, 110
' Statictext #main, "Memo", 195, 400, 50, 20
' Textbox #main.memoexp, 250, 400, 225, 60
'extra spare fields:
Button #main.newexp2, "e&del", [expremoveEntry], UL, 60, 440
Button #main.newexp, "&New Record", addExpRecord, UL, 10, 480
Button #main.expfind "Find D&uplicates", expduplicateControl, UL, 165, 480
Listbox #main.expdup, expensedup$(, exppick, 490, 10, 190, 395
Button #main.OK, "S&ave Record", acceptexpEntry, UL, 370, 480
Open "Libby Contact Manager v4.24" For Window As #main
Print #main, "Trapclose endProgram"
Print #main.exptypefilter, "Select All";
print #main.expstatusfilter, "Select All";
Print #main.expname, "SingleClickSelect"
Print #main.expdup, "SingleClickSelect"
hMain=hwnd(#main)
hFind=hwnd(#main.expfind)
[Code]
Print #main.expname, "Setfocus"
[expinputLoop]
Wait
[acceptexpEntry]
Call acceptexpEntry handle$
Wait
[addExpRecord]
Call addExpRecord handle$
Wait
'[sortem]
' PopUpMenu "name sort", [byName], "city sort", [byCity]
' Wait
'[byName]
' Call sortem 1
' Wait
[expremoveEntry]
call removeEntry
wait
[byCity]
Call sortem 4
Wait
[endProgram]
Call endProgram handle$
Wait
Sub endProgram handle$
close #main
end
End Sub
Sub exploadNames
If exists("expold.bak") Then
Kill "expold.bak"
End If
If exists("exp.bak") Then
Name "exp.bak" As "expold.bak"
End If
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
Open "exp.bak" For Random As #expCopy Len = 16065
Field #expCopy, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
'if exp.dat doesn't exist, we will create it with 0 records
If Eof(#exp) <> 0 Then
Close #exp
Close #expCopy
Call initializeNames
Goto [skipIt]
End If
'create a backup of the file each time we make a change
Get #exp, 1
Put #expCopy, 1
expcontactCount = Val(expensename$)
If expcontactCount = 0 Then
Close #exp
Close #expCopy
Goto [skipIt]
End If
For index = 2 To expcontactCount + 1
Gettrim #exp, index
Put #expCopy, index
expensename$(index - 1) = str$(index-1)+") "+expensename$
Next index
Close #exp
Close #expCopy
[skipIt]
End Sub
Sub initializeNames
'create the data file with 0 records
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
expensename$ = "0"
Put #exp, 1
Close #exp
End Sub
Sub loadExpFilter handle$
redim expensename$(10000)
'show only the records that match the filter
Call addExpRecord handle$
Print #main.exptypefilter, "selection? typefilter$"
print #main.expstatusfilter, "selection? statusfilter$";"selection? typefilter$"
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
Get #exp, 1
expcontactCount = Val(expensename$)
If expcontactCount = 0 Then
Close #exp
Goto [moveOn]
End If
'compare stage to filter
For index = 2 To expcontactCount + 1
Gettrim #exp, index
If typefilter$ = exptype$ Or typefilter$ = "All" Then
If statusfilter$ = expstatus$ or statusfilter$ = "All" Then
expensename$(index - 1) = str$(index-1)+") "+expensename$
Else
expensename$(index - 1) = ""
End If
end if
Next index
Close #exp
Print #main.expname, "Reload"
[moveOn]
End Sub
Sub modifyExp handle$
expaddName = 0
Print #main.expname, "Selection? selection$"
If selection$ = "" Then [noName]
Print #main.expname, "SelectionIndex? index"
If index = 0 Then [noName] 'This should never need to happen
exprecordIndex=val(selection$)
[getContactRecord]
getIndex=exprecordIndex+1
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
Gettrim #exp, getIndex
Close #exp
Print #main.recname, expensename$
Print #main.expdate, expdate$
Print #main.expcost, expcost$
Print #main.expvat, expvat$
Print #main.spare, expspare$
Print #main.spare2, expspare2$
' Print #main.expstatus, expstatus$
' Print #main.spare4, expspare4$
' Print #main.spare5, expspare5$
' Print #main.spare6, expspare6$
'Print #main.spare7, expspare7$
Print #main.exptype, "SelectIndex 20"
Print #main.expstatus, "SelectIndex 20"
' Print #main.memoexp, "" ;
' Print #main.memoexp, expspare8$ ;
' Print #main.expDate, expspare10$
' Print #main.modexpDate, expspare9$
For stageIndex = 0 To expfilterCount-1
If exptype$(stageIndex) = exptype$ Then
Print #main.exptype, "SelectIndex "; stageIndex + 1
End If
If expstatus$(stageIndex) = expstatus$ Then
Print #main.expstatus, "SelectIndex "; stageIndex + 1
end if
Next stageIndex
oldexptype$=exptype$
[noName]
End Sub
Sub addExpRecord handle$
expaddName = 1
Print #main.expname, "SelectIndex 0"
Print #main.recname, ""
Print #main.expdate, ""
Print #main.expcost, ""
Print #main.expvat, ""
Print #main.spare, ""
Print #main.spare2, ""
Print #main.expstatus, "SelectIndex 20"
' Print #main.spare4, ""
' Print #main.spare5, ""
' Print #main.spare6, ""
' Print #main.spare7, ""
Print #main.exptype, "SelectIndex 20"
' Print #main.memoexp, ""
Print #main.recname, "!SetFocus"
' Print #main.expDate, "N/A"
' Print #main.modexpDate, "N/A"
End Sub
Sub expduplicateControl handle$
expdupo=Abs(expdupo-1)
If expdupo=1 Then
text$="Hide Duplicates"
Calldll #user32, "SetWindowTextA",_
hFind As Ulong,_
text$ As Ptr,_
ret As Void
Call resizeWindow
WindowWidth=150
WindowHeight=75
StaticText #patience, "PLEASE WAIT...", 25, 15, 100, 25
Open "SEARCHING...", For Dialog_Modal As #patience
For i1=1 To expcontactCount-1
For i2=i1+1 To expcontactCount
If Lower$(Mid$(expensename$(i1),Instr(expensename$(i1),") ")+2,10))=Lower$(Mid$(expensename$(i2),Instr(expensename$(i2),") ")+2,10)) Then
expdupNum=expdupNum+1
expensedup$(expdupNum)=Mid$(expensename$(i1),Instr(expensename$(i1),") ")+2)+" @ "+Str$(i1)+" & "+Str$(i2)
End If
Next i2
Next i1
If expdupNum=0 Then
expensedup$(1)="No Duplicates Found"
End If
Print #main.expdup, "Reload"
Close #patience
Else
text$="Find Duplicates"
Calldll #user32, "SetWindowTextA",_
hFind As Ulong,_
text$ As Ptr,_
ret As Void
For clearList=1 To expdupNum
expensedup$(clearList)=""
Next clearList
Print #main.expdup, "Reload"
expdupNum=0
Call resizeWindow
End If
End Sub
Sub acceptexpEntry handle$
Print #main.recname, "!contents? expensename$";
If expensename$<>"" Then
Print #main.expdate, "!contents? expdate$";
Print #main.expcost, "!contents? expcost$";
Print #main.expvat, "!contents? expvat$";
Print #main.spare, "!contents? expspare$";
Print #main.spare2, "!contents? expspare2$";
Print #main.expstatus, "Selection? expstatus$";
' Print #main.spare4, "!contents? expspare5$"
' Print #main.spare5, "!contents? expspare6$"
' Print #main.spare6, "!contents? expspare4$"
'Print #main.spare7, "!contents? expspare7$"
Print #main.exptype, "Selection? exptype$";
' Print #main.memoexp, "!Contents? expspare8$";
If expaddName = 1 Then
expcontactCount = expcontactCount + 1
exprecordIndex = expcontactCount
End If
expensename$(exprecordIndex) = Str$(exprecordIndex)+") "+expensename$
Print #main.expname, "Reload"
date$=Date$()
If oldexptype$="Opening Mailer" And exptype$="Follow Up Call" then
expspare10$=Date$()
End If
[saveContactRecord]
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
Put #exp, exprecordIndex + 1
Close #exp
If expaddName = 0 Then [goBack]
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As count$, 16030 As fill$
count$ = Str$(expcontactCount)
Put #exp, 1
Close #exp
expaddName = 0
Call loadExpFilter " "
[goBack]
Print #main.expname, "SelectIndex ";exprecordIndex
Call addExpRecord handle$
Else
Notice "NO BUSINESS NAME"+Chr$(13)+"The business name must be entered, "_
+Chr$(13)+"before a record can be saved. "
End If
End Sub
Sub resizeWindow
If expdupo=1 Then
xExtent=695
ULX=int((DisplayWidth-xExtent)/2)
ULY=int((DisplayHeight-460)/2)
Else
xExtent=495
ULX=int((DisplayWidth-xExtent)/2)
ULY=int((DisplayHeight-460)/2)
End If
CallDll #user32, "SetWindowPos",_
hMain As Ulong,_
0 As Long,_
ULX As Long,_
ULY As Long,_
xExtent As Long,_
460 As Long,_
0 As Ulong,_
result As Void
End Sub
sub sortem sortBy
WindowWidth=150
WindowHeight=75
StaticText #patience, "PLEASE WAIT...", 25, 15, 100, 25
Open "SORTING...", For Dialog_Modal As #patience
Call populateList
Sort expbuilder$(), 2, expcontactCount+1, sortBy
Call saveList
Call exploadNames
Call loadExpFilter handle$
Close #patience
Notice "SORT FINISHED"+Chr$(13)+"Sorted names reloaded"
End Sub
Sub populateList
Open "exp.dat" For random As #exp3 Len = 16065
Field #exp3, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
Open "expcontact.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
Get #exp3, 1
expcontactCount = Val(expensename$)
Put #exp, 1
For index2 = 2 To expcontactCount + 1
Gettrim #exp3, index2
For column=1 To 25
Select Case column
Case 1
expbuilder$(index2, column)=expensename$
Case 2
expbuilder$(index2, column)=expdate$
Case 3
expbuilder$(index2, column)=expcost$
Case 4
expbuilder$(index2, column)=expvat$
Case 5
expbuilder$(index2, column)=expspare$
Case 6
expbuilder$(index2, column)=expspare2$
Case 7
expbuilder$(index2, column)=expstatus$
Case 8
expbuilder$(index2, column)=expspare5$
Case 9
expbuilder$(index2, column)=expspare6$
Case 10
expbuilder$(index2, column)=expspare7$
Case 11
expbuilder$(index2, column)=exptype$
Case 12
expbuilder$(index2, column)=expspare8$
Case 13
expbuilder$(index2, column)=date$
Case 14
expbuilder$(index2, column)=expspare4$
Case 15
expbuilder$(index2, column)=expspare9$
Case 16
expbuilder$(index2, column)=expspare10$
Case 17
expbuilder$(index2, column)=expspare11$
Case 18
expbuilder$(index2, column)=exp1$
Case 19
expbuilder$(index2, column)=exp2$
Case 20
expbuilder$(index2, column)=exp3$
Case 21
expbuilder$(index2, column)=exp4$
Case 22
expbuilder$(index2, column)=exp5$
Case 23
expbuilder$(index2, column)=exp6$
Case 24
expbuilder$(index2, column)=exp7$
Case 25
expbuilder$(index2, column)=exp9$
End Select
Next column
Next index2
End Sub
Sub saveList
For index2 = 2 To expcontactCount + 1
For column=1 To 25
Select Case column
Case 1
expensename$=expbuilder$(index2, column)
Case 2
expdate$=expbuilder$(index2, column)
Case 3
expcost$=expbuilder$(index2, column)
Case 4
expvat$=expbuilder$(index2, column)
Case 5
expspare$=expbuilder$(index2, column)
Case 6
expspare2$=expbuilder$(index2, column)
Case 7
expstatus$=expbuilder$(index2, column)
Case 8
expspare5$=expbuilder$(index2, column)
Case 9
expspare6$=expbuilder$(index2, column)
Case 10
expspare7$=expbuilder$(index2, column)
Case 11
exptype$=expbuilder$(index2, column)
Case 12
expspare8$=expbuilder$(index2, column)
Case 13
date$=expbuilder$(index2, column)
Case 14
expspare4$=expbuilder$(index2, column)
Case 15
expspare9$=expbuilder$(index2, column)
Case 16
expspare10$=expbuilder$(index2, column)
Case 17
expspare11$=expbuilder$(index2, column)
Case 18
exp1$=expbuilder$(index2, column)
Case 19
exp2$=expbuilder$(index2, column)
Case 20
exp3$=expbuilder$(index2, column)
Case 21
exp4$=expbuilder$(index2, column)
Case 22
exp5$=expbuilder$(index2, column)
Case 23
exp6$=expbuilder$(index2, column)
Case 24
exp7$=expbuilder$(index2, column)
Case 25
exp9$=expbuilder$(index2, column)
End Select
Next column
Put #exp, index2
Next index2
Close #exp3
Close #exp
If exists("expoldrecover.bak") Then
Kill "expoldrecover.bak"
End If
If exists("exprecover.bak") Then
Name "exprecover.bak" As "expoldrecover.bak"
End If
Name "exp.dat" As "exprecover.bak"
Name "expcontact.dat" As "exp.dat"
End Sub
Function exists(a$)
Files DefaultDir$, a$, expexistInfo$()
exists=val(expexistInfo$(0,0))
End Function
Sub removeEntry
Print #main.exptypefilter, "selection? filter$"
If expaddName=0 Then
Confirm "YOU ARE ABOUT TO DELETE THIS RECORD"+Chr$(13)+" "+Chr$(13)+Chr$(34)_
+expensename$(exprecordIndex)+Chr$(34)+Chr$(13)+" "+Chr$(13)+"Do you want to proceed?";delAns$
If Lower$(delAns$)="no" Then [noDelete]
WindowWidth=150
WindowHeight=75
StaticText #patience, "PLEASE WAIT...", 10, 15, 100, 25
Open "DELETING...", For Dialog_Modal As #patience
Open "exp.dat" For Random As #exp Len = 16065
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 30 As expvat$, 30 As expspare$, _
20 As expspare2$, 20 As expstatus$,30 As expspare4$,30 As expspare5$, 30 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 500 As expspare9$, 200 As expspare10$, 200 As expspare11$, _
50 as exp1$, 50 as exp2$, 50 as exp3$, 50 as exp4$, 50 as exp5$, 50 as exp6$, 4000 as exp7$, 10000 as exp9$
For moveRecords=exprecordIndex+1 To expcontactCount
Get #exp, moveRecords+1
Put #exp, moveRecords
Next moveRecords
Get #exp, 1
expensename$(Val(expensename$))=""
expensename$=Str$(Val(expensename$)-1)
Put #exp, 1
Close #exp
Close #patience
Call exploadNames
Call loadExpFilter handle$
Notice "RECORD DELETED"+Chr$(13)+"Names reloaded"
Else
Notice "NO RECORD SELECTED!"+Chr$(13)+"Please select a record," _
+Chr$(13)+"then select delete from the menu."
End If
[noDelete]
End Sub
Sub exppick handle$
Print #main.expdup, "Selection? duplicate$"
locateRecord=Instr(duplicate$," @ ")
recordNum=Val(Mid$(duplicate$,locateRecord+3))
Print #main.expname, "SelectIndex ";recordNum
Print #main.expname, "SelectIndex 0"
End Sub