Re: Budget Builder - file: register.ex part 2, edit 1
- Posted by Senator
Oct 05, 2020
-------------- register.ex part 2, edit 1
procedure add_record() -- add a new record to the current table
object key, data, note
integer rec, t -- t = transaction type debit/deposit
atom amt, bal
sequence prompt
current_table = db_current_table()
if equal(current_table, BUDGET) then -- table: BUDGET
key = set_budget_key() -- obtain key - enter day of month for
rec = db_find_key(key) -- BUDGET deposit/debit transaction
else -- table: REGISTER/CASH
key = dt_menu(SECOND) --,USE_MENU)-- enter full datetime value
rec = db_find_key(key)
if is_error(rec) then return end if
-- if rec > 0, then key already exists within database
-- add 30 seconds to key and try again
if rec then
loop do key=datetime:add(key,30,SECONDS) rec = db_find_key(key)
until rec < 0
end loop
end if
end if
t = debit_or_deposit()
if t = 0 then return end if
-- convert rec to a positive value in order to calculate
-- current balance before insertion of next record
bal=balance(-rec-1) data = {}
for i = 2 to 3 do -- FIELDS[1] = key
prompt = "\t" & FIELDS[i]
if i = 2 then -- FIELDS[2] = Transaction Note:
note = prompt_string(prompt) data = append(data, note)
else -- FIELDS[3] = "$"
if t = -1 then set_foreground_color(RED)
else set_foreground_color(FGC)
end if
amt = prompt_number(prompt,{})
amt *= 100 -- convert to integer for storage
amt *= t
bal += amt
data = append(data, amt)
end if
end for
if db_insert(key, data) != DB_OK then any_key("\n\tinsert failed!\n") return end if
list()
end procedure
procedure delete_record()
integer rec
list()
rec = prompt_number("\n\n\tEnter # of db record to delete: ",{1,db_table_size()})
puts(1,"\n\n")
display_full_note(rec)
set_foreground_color(RED)
puts(SCREEN, "\n\n\tDelete? (y/n) ")
if find('n', gets(0)) then
set_foreground_color(FGC)
else
db_delete_record(rec)
set_foreground_color(FGC)
end if
end procedure
procedure list_month(integer prior = 0)-- list current month, or prior=1 for previous month
datetime dt
if find(db_current_table(), {REGISTER,CASH}) then
dt = now() list(dt[YEAR],dt[MONTH]-prior)
end if
end procedure
constant MENU = sprintf("%s", {
"""
1 add record 8 edit record data
2 delete record 9 DbDump
3 list all 10 list tables
4 display full note 11 rename table
5 toggle tables 12 select table
6 select cash table 13 backup
7 autolog budget
14 search all 17 list all
15 select search month 18 select list month
16 search current month 19 list current month
0 quit 20 list prior month
21 compress database 22 check autolog.dat
#: """
})
Not Categorized, Please Help
|
|