Post by wexhammer on Jan 9, 2020 6:39:55 GMT -5
Hello again, within the code below i can save a name etc. This code is another slight mod from a code posted in another thread. Within the GUI there is a calculate button with a textfield, i am trying to get the result of totaling all of the digits saved across multiple entries from the number$ string. For example if name 1 has 30 and name 2 has 20 in their number textbox when saved, how would i find the total of them? Resulting in 50. My calculation shows 0.
As in the gui:
Name: Contact 1
Number: 30 < numeric field
Name:Contact 2
Number: 20 <numeric field
___________________
Calculate: 50 < Giving me the total of all numeric fields in the saved data file
As in the gui:
Name: Contact 1
Number: 30 < numeric field
Name:Contact 2
Number: 20 <numeric field
___________________
Calculate: 50 < Giving me the total of all numeric fields in the saved data file
[Initialize]
Global hMain, hFind, dupNum, dupo, addName, recordIndex, contactCount
Global filterCount, oldStage$
Nomainwin
Dim name$(1000), nameSearch$(1000), stage$(20), type$(20)
Dim builder$(1000, 13), existInfo$(10,10), hContents$(20)
dupo=0
addName=1
Call loadNames
[GUI]
Stylebits #main, 0,_WS_MAXIMIZEBOX,0,0
WindowWidth = 495 '595 695 795
WindowHeight = 460
UpperLeftX=Int((DisplayWidth-WindowWidth)/2)
UpperLeftY=Int((DisplayHeight-WindowHeight)/2)
Statictext #main, "Names", 10, 10, 60, 20
Listbox #main.contacts, name$(, modifyRecord, 10, 35, 160, 120
' Statictext #main, "Filter stage", 10, 170, 160, 20
'Combobox #main.filterstage, stage$(, loadNamesFiltered, 10, 190, 160, 120
' Statictext #main, "Filter type", 10, 220, 160, 20
' Combobox #main.filtertype, type$(, loadNamesFiltered, 10, 240, 160, 120
Statictext #main, "Name", 195, 10, 50, 20
Textbox #main.name, 250, 10, 225, 25
Statictext #main, "Number", 195, 40, 50, 20
Textbox #main.number, 250, 40, 225, 25
'Statictext #main, "Stage", 195, 70, 50, 20
'Combobox #main.stage, stage$(, [inputLoop], 250, 70, 225, 110
' Statictext #main, "Type", 195, 100, 50, 20
'Combobox #main.type, type$(, [inputLoop], 250, 100, 225, 110
statictext #main, "Total of numbers:", 10, 195,90, 15
Textbox #main.totalofall, 100, 190, 70, 25
Button #main.new, "Calc", [calculate], UL, 180, 190, 40, 20
Button #main.new, "&New", addRecord, UL, 365, 80
Listbox #main.namel, dup$(, pick, 490, 10, 190, 395
Button #main.OK, "Save", acceptEntry, UL, 420, 80
Open "Test" For Window As #main
Print #main, "Trapclose endProgram"
' Print #main.filtertype, "Select All";
' Print #main.filterstage, "Select All";
Print #main.contacts, "SingleClickSelect"
Print #main.namel, "SingleClickSelect"
#main.totalofall "!disable"
[Code]
Print #main.contacts, "Setfocus"
[inputLoop]
Wait
[acceptEntry]
Call acceptEntry handle$
Wait
[addRecord]
Call addRecord handle$
Wait
[calculate]
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
get #contacts, 1
print #main.totalofall, val(number$)
close #contacts
wait
[endProgram]
Call endProgram handle$
Wait
Sub endProgram handle$
close #main
end
End Sub
Sub loadNames
If exists("contact4old.bak") Then
Kill "contact4old.bak"
End If
If exists("contact4.bak") Then
Name "contact4.bak" As "contact4old.bak"
End If
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
Open "contact4.bak" For Random As #contactsCopy Len = 110
Field #contactsCopy, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
If Eof(#contacts) <> 0 Then
Close #contacts
Close #contactsCopy
Call initializeNames
Goto [skipIt]
End If
Get #contacts, 1
Put #contactsCopy, 1
contactCount = Val(name$)
If contactCount = 0 Then
Close #contacts
Close #contactsCopy
Goto [skipIt]
End If
For index = 2 To contactCount + 1
Gettrim #contacts, index
Put #contactsCopy, index
name$(index - 1) = str$(index-1)+") "+name$
Next index
Close #contacts
Close #contactsCopy
[skipIt]
End Sub
Sub initializeNames
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
name$ = "0"
Put #contacts, 1
Close #contacts
End Sub
Sub loadNamesFiltered handle$
redim name$(1000)
'show records matching filter
Call addRecord handle$
'Print #main.filterstage, "selection? filter$"
'Print #main.filtertype, "selection? filter2$"
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
Get #contacts, 1
contactCount = Val(name$)
If contactCount = 0 Then
Close #contacts
Goto [moveOn]
End If
'compare stage to filter
For index = 2 To contactCount + 1
Gettrim #contacts, index
If filter$ = stage$ or filter$ = "All" Then
If filter2$ = type$ or filter2$ = "All" Then
name$(index - 1) = str$(index-1)+") "+name$
Else
name$(index - 1) = ""
End If
end if
Next index
Close #contacts
Print #main.contacts, "Reload"
[moveOn]
End Sub
Sub modifyRecord handle$
addName = 0
Print #main.contacts, "Selection? selection$"
If selection$ = "" Then [noName]
Print #main.contacts, "SelectionIndex? index"
If index = 0 Then [noName] 'This should never need to happen
recordIndex=val(selection$)
[getContactRecord]
getIndex=recordIndex+1
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
Gettrim #contacts, getIndex
Close #contacts
Print #main.name, name$
Print #main.number, number$
' Print #main.stage, "SelectIndex 20"
' Print #main.type, "SelectIndex 20"
'For stageIndex = 0 To filterCount-1
'
' Print #main.stage, "SelectIndex "; stageIndex + 1
oldStage$=stage$
[noName]
End Sub
Sub addRecord handle$
addName = 1
Print #main.contacts, "SelectIndex 0"
Print #main.name, ""
Print #main.number, ""
' Print #main.stage, "SelectIndex 20"
' Print #main.type, "SelectIndex 20"
Print #main.name, "!SetFocus"
End Sub
Sub acceptEntry handle$
Print #main.name, "!contents? name$";
If name$<>"" Then
Print #main.name, "!contents? number$";
Print #main.number, "!contents? number$";
' Print #main.type, "Selection? type$";
'Print #main.stage, "Selection? stage$";
If addName = 1 Then
contactCount = contactCount + 1
recordIndex = contactCount
End If
name$(recordIndex) = Str$(recordIndex)+") "+name$
Print #main.contacts, "Reload"
date$=Date$()
If oldStage$="Opening Mailer" And stage$="Follow Up Call" then
mailDate$=Date$()
End If
[saveContactRecord]
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
Put #contacts, recordIndex + 1
Close #contacts
If addName = 0 Then [goBack]
Open "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As count$, 75 As fill$
count$ = Str$(contactCount)
Put #contacts, 1
Close #contacts
addName = 0
Call loadNamesFiltered " "
[goBack]
Print #main.contacts, "SelectIndex ";recordIndex
Call addRecord 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 populateList
Open "contact4.dat" For random As #contacts3 Len = 110
Field #contacts3, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
Open "contact.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
Get #contacts3, 1
contactCount = Val(name$)
Put #contacts, 1
For index2 = 2 To contactCount + 1
Gettrim #contacts3, index2
For column=1 To 4
Select Case column
Case 1
builder$(index2, column)=name$
Case 2
builder$(index2, column)=number$
Case 3
builder$(index2, column)=stage$
Case 4
builder$(index2, column)=type$
End Select
Next column
Next index2
End Sub
Sub saveList
For index2 = 2 To contactCount + 1
For column=1 To 4
Select Case column
Case 1
name$=builder$(index2, column)
Case 2
number$=builder$(index2, column)
Case 3
stage$=builder$(index2, column)
Case 4
type$=builder$(index2, column)
End Select
Next column
Put #contacts, index2
Next index2
Close #contacts3
Close #contacts
If exists("contact4recoverold.bak") Then
Kill "contact4recoverold.bak"
End If
If exists("contact4recover.bak") Then
Name "contact4recover.bak" As "contact4recoverold.bak"
End If
Name "contact4.dat" As "contact4recover.bak"
Name "contact.dat" As "contact4.dat"
End Sub
Function exists(a$)
Files DefaultDir$, a$, existInfo$()
exists=val(existInfo$(0,0))
End Function
Sub removeEntry
'Print #main.filtertype, "selection? filter$"
If addName=0 Then
Confirm "YOU ARE ABOUT TO DELETE THIS RECORD"+Chr$(13)+" "+Chr$(13)+Chr$(34)_
+name$(recordIndex)+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 "contact4.dat" For Random As #contacts Len = 110
Field #contacts, 35 As name$, 35 As number$, 20 As stage$, 20 As type$
For moveRecords=recordIndex+1 To contactCount
Get #contacts, moveRecords+1
Put #contacts, moveRecords
Next moveRecords
Get #contacts, 1
name$(Val(name$))=""
name$=Str$(Val(name$)-1)
Put #contacts, 1
Close #contacts
Close #patience
Call loadNames
Call loadNamesFiltered 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