Post by wexhammer on Dec 29, 2019 11:39:25 GMT -5
Hello, me again! I need a fresh pair of eyes to go over my code as i think it may be down to tiredness , i need to be shown were the hell i am going wrong as to why my saved data wont show in the Status combobox! The data shows in all the other textboxes.
[Initialize]
Global hMain, hFind, expdupNum, expdupo, expaddName, exprecordIndex, expcontactCount
Global expfilterCount, oldexptype$
Nomainwin
Dim expensename$(1000), expenseSearch$(1000), expensedup$(500), exptype$(20), expstatus$(20)
Dim expbuilder$(1000, 13), 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 'load stage list
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 'first run create stage list
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
'set up our user interface
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, 200, 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
Button #main.newexp, "&New Record", addExpRecord, UL, 10, 480
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"
hMain=hwnd(#main)
'hFind=hwnd(#main.expfind)
[Code]
Call noResize
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
[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 = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
Open "exp.bak" For Random As #expCopy Len = 808
Field #expCopy, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$,
'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 = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
expensename$ = "0"
Put #exp, 1
Close #exp
End Sub
Sub noResize
'disable resizing of the window, because of the hidden duplicates control
Open "user32.dll" For Dll As #user
Calldll #user, "GetSystemMenu", _
hMain As Ulong, 0 As Ulong, hmenu As Ulong
' sysmenu.Restore=GetMenuItemID(hmenu,0)
' sysmenu.Move=GetMenuItemID(hmenu,1)
sysmenu.Size=GetMenuItemID(hmenu,2)
' sysmenu.Minimize=GetMenuItemID(hmenu,3)
sysmenu.Maximize=GetMenuItemID(hmenu,4)
' sysmenu.sep1=GetMenuItemID(hmenu,5)
' sysmenu.Close=GetMenuItemID(hmenu,6)
' sysmenu.sep2=GetMenuItemID(hmenu,7)
' sysmenu.KillApps=GetMenuItemID(hmenu,8)
Calldll #user, "DeleteMenu", hmenu As Ulong, sysmenu.Size As Ulong, _
_MF_BYCOMMAND As Ulong, re As Ulong
Calldll #user, "DeleteMenu", hmenu As Ulong, sysmenu.Maximize As Ulong, _
_MF_BYCOMMAND As Ulong, re As Ulong
Close #user
End Sub
Function GetMenuItemID(hmenu,index)
Calldll #user, "GetMenuItemID", hmenu As Ulong, index As Ulong, GetMenuItemID As Ulong
End Function
Sub loadExpFilter handle$
redim expensename$(1000)
'show only the records that match the filter
Call addExpRecord handle$
Print #main.exptypefilter, "selection? typefilter$"
print #main.expstatusfilter, "selection? statusfilter$"
Open "exp.dat" For Random As #exp Len = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
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 = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
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
'For stageIndex = 0 To expfilterCount-1
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 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 = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
Put #exp, exprecordIndex + 1
Close #exp
If expaddName = 0 Then [goBack]
Open "exp.dat" For Random As #exp Len = 808
Field #exp, 35 As count$, 773 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 = 808
Field #exp3, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
Open "expcontact.dat" For Random As #exp Len = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
Get #exp3, 1
expcontactCount = Val(expensename$)
Put #exp, 1
For index2 = 2 To expcontactCount + 1
Gettrim #exp3, index2
For column=1 To 13
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$
End Select
Next column
Next index2
End Sub
Sub saveList
For index2 = 2 To expcontactCount + 1
For column=1 To 13
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)
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 = 808
Field #exp, 35 As expensename$, 35 As expdate$, 35 As expcost$, 20 As expvat$, 2 As expspare$, _
10 As expspare2$, 20 As expstatus$,12 As expspare4$,12 As expspare5$, 12 As expspare6$, 50 As expspare7$, _
20 As exptype$, 500 As expspare8$, 13 As expspare9$, 13 As expspare10$, 19 As expspare11$
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