' NTCLC_Membership_DB.exe
'  Compile as Windows.EXE

$MAIN
AUTODEFINE "off"

SETID "BS_CENTER", 0x00000300

DECLARE IMPORT,SHGetSpecialFolderLocation(hwnd as UINT,nFolder as INT,ppITEMIDLIST as POINTER),int
DECLARE IMPORT,SHGetPathFromIDList(pITEMIDLIST as POINTER,PATH as STRING),int
DECLARE IMPORT,CoTaskMemFree(pidl as POINTER)

CONST LVM_FIRST = 0x1000
CONST LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54)
CONST LVM_SUBITEMHITTEST = LVM_FIRST + 57
CONST LVS_EDITLABELS = 0x200
CONST LVS_EX_FULLROWSELECT = 0x020
CONST LVS_EX_GRIDLINES = 1
CONST MCN_SELECT = (MCN_FIRST + 4)

SETID "LVM_GetItemCount",  4100
SETID "LVM_SetItem",       4102
SETID "LVM_DeleteItem",    4104
SETID "LVM_DeleteAllItems",4105
SETID "LVM_GetNextItem",   4108
SETID "LVM_GetColumnWidth",4125
SETID "LVM_SetColumnWidth",4126
SETID "LVM_GetItemText",   4141

TYPE NTXCLC_format
	DEF MemberNo:INT
	DEF FName[22]:ISTRING
	DEF MName[22]:ISTRING
	DEF LName[22]:ISTRING
	DEF Suffix[5]:ISTRING
	DEF NewsLetter:CHAR
	DEF AssocMember[32]:ISTRING
	DEF Addr1[42]:ISTRING
	DEF Addr2[42]:ISTRING
	DEF City[32]:ISTRING
	DEF State[12]:ISTRING
	DEF Zip[12]:ISTRING
	DEF HomePhone[17]:ISTRING
	DEF CellPHone[17]:ISTRING
	DEF WorkPhone[17]:ISTRING
	DEF FaxPhone[17]:ISTRING
	DEF NatNo:INT
	DEF NatDate[12]:ISTRING
	DEF Sponsor[32]:ISTRING
	DEF EMailMain[42] :ISTRING
	DEF EMailAssoc[42]:ISTRING
	DEF WebSite[52]:ISTRING
	DEF SendNat:CHAR
	DEF RecordUpdated[12]:ISTRING
	DEF MiscNotes[82]:ISTRING
	DEF Active:CHAR
	DEF ChildName[22,4]:ISTRING
	DEF CarNo[30]:INT
	DEF CarYear[30]:INT
	DEF CarMake[30]:CHAR
	DEF CarModel[42,30]:ISTRING
	DEF YearNo[30]:INT
	DEF YearComment[72,30]:ISTRING
ENDTYPE

TYPE LVITEM
	DEF mask:UINT
	DEF iItem:INT
	DEF iSubItem:INT
	DEF state:UINT
	DEF stateMask:UINT
	DEF pszText:POINTER
	DEF cchTextMax:INT
	DEF iImage:INT
	DEF lParam:UINT
	DEF iIndent:INT
	DEF iGroupId:INT
	DEF cColumns:UINT
	DEF puColumns:UINT
ENDTYPE

TYPE NMLISTVIEW
	DEF hwndFrom:UINT
	DEF idFrom:INT
	DEF code:INT
	DEF iItem:INT
	DEF iSubItem:INT
	DEF uNewState:UINT
	DEF uOldState:UINT
	DEF uChanged:UINT
	DEF ptActionx:INT
	DEF ptActiony:INT
	DEF lParam:INT
ENDTYPE

ENUM CONTROLIDs
	w1_BUTTON01 = 501
	w1_BUTTON02
	w1_BUTTON03
	w1_BUTTON04
	w1_BUTTON05
	w1_BUTTON06
	w1_BUTTON07
	w1_BUTTON08
	w1_BUTTON09
	w1_BUTTON10
	w1_CHECKBOX1
	w1_CHECKBOX2
	w1_EDIT00
	w1_EDIT01
	w1_EDIT02
	w1_EDIT03
	w1_EDIT04
	w1_EDIT05
	w1_EDIT06
	w1_EDIT07
	w1_EDIT08
	w1_EDIT09
	w1_EDIT10
	w1_EDIT11
	w1_EDIT12
	w1_EDIT13
	w1_EDIT14
	w1_EDIT15
	w1_EDIT16
	w1_EDIT17
	w1_EDIT18
	w1_EDIT19
	w1_EDIT20
	w1_EDIT21
	w1_EDIT22
	w1_EDIT23
	w1_EDIT24
	w1_EDIT25
	w1_EDIT26
	w1_EDIT27
	w1_EDIT28
	w1_EDIT29
	w1_EDIT30
	w1_EDIT31
	w1_EDIT32
	w1_EDIT33
	w1_GROUPBOX1
	w1_LISTVIEW1
	w1_LISTVIEW2
	w1_RADIO1
	w1_RADIO2
	w1_RADIO3
	w1_STATIC00
	w1_STATIC01
	w1_STATIC02
	w1_STATIC03
	w1_STATIC04
	w1_STATIC05
	w1_STATIC06
	w1_STATIC07
	w1_STATIC08
	w1_STATIC09
	w1_STATIC10
	w1_STATIC11
	w1_STATIC12
	w1_STATIC13
	w1_STATIC14
	w1_STATIC15
	w1_STATIC16
	w1_STATIC17
	w1_STATIC18
	w1_STATIC19
	w1_STATIC20
	w1_STATIC21
	w1_STATIC22
	w1_STATIC23
	w1_STATIC24
	w1_STATIC25
	w1_CALENDAR
ENDENUM

DEF Current:NTXCLC_format
DEF Previous:NTXCLC_format
DEF lv:NMLISTVIEW

DEF hStmt, indx, i, lvi, max, mbrno, dPos, t:INT
DEF lviCars, lviCarsC, lviCarsE, lviYear, lviYearC, lviYearE:INT
DEF Stmt[2000]:ISTRING
DEF pDB:POINTER
DEF EDIT28, EDIT29, EDIT30, EDIT31, EDIT32, EDIT33:STRING
DEF CarNo$, dbName, dName, error, MemberNo$, NatNo$, Year$, SName = "":STRING
DEF qcq = "','", cq = ",'", qc = "',", c = ",":STRING
DEF temp, NullDate = "1900-12-31":STRING
DEF dbFile:FILE
DEF dFile:BFILE
DEF w1:WINDOW
DEF m, d, y:INT
DEF Backup_Data="N":CHAR

DEF BLACK, RED, GREEN, BLUE, YELLOW, CYAN, PINK, GREY, MAGENTA:UINT
DEF LBLUE, LYELLOW, WHITE, PURPLE, PURPLE2, GOLD, SILVER, BROWN:UINT

GOLD    = RGB(255,215,0)
YELLOW  = RGB(255,255,0)
LYELLOW = RGB(255,255,125)
GREEN   = RGB(0,255,0)
BLUE    = RGB(0,0,255)
RED     = RGB(255,0,0)
CYAN    = RGB(0,255,255)
PINK    = RGB(255,192,203)
GREY    = RGB(127,127,127)
LBLUE   = RGB(0,125,255)
MAGENTA = 0x8D38C9
PURPLE  = RGB(128,0,128)
PURPLE2 = RGB(230,25,230)
BROWN   = 0x60A4F4
SILVER  = RGB(128,128,128)
WHITE   = RGB(255,255,255)
BLACK   = RGB(0,0,0)

' sn[0,c] = Name

OPENWINDOW w1,0,0,1016,760,@CAPTION,0,"Cadillac LaSalle Club Membership",&w1_handler

RECT w1,900,45,100,130,BLACK,CYAN

CONTROL w1,@Button,"Previous <",20,8,80,22,0,w1_BUTTON01
CONTROL w1,@Button,"> Next",380,9,50,22,0,w1_BUTTON02
CONTROL w1,@Button,"New Member",640,4,150,28,0,w1_BUTTON03
CONTROL w1,@Button,"EXIT",915,6,70,25,0,w1_BUTTON04
CONTROL w1,@Button,"Insert",15,385,60,20,0,w1_BUTTON05
CONTROL w1,@Button,"Update",15,415,60,20,0,w1_BUTTON06
CONTROL w1,@Button,"Delete",15,445,60,20,0,w1_BUTTON07
CONTROL w1,@Button,"Insert/\nUpdate",15,565,60,40,@CTLBTNMULTI,w1_BUTTON08
CONTROL w1,@Button,"Backup",800,690,60,20,0,w1_BUTTON09
CONTROL w1,@Button,"Restore",870,690,60,20,0,w1_BUTTON10

CONTROL w1,@Checkbox,"Deleted Member",360,125,195,25,0,w1_CHECKBOX1
CONTROL w1,@Checkbox,"Send to National",565,130,115,15,0,w1_CHECKBOX2

CONTROL w1,@Edit,"00 Search Name",195,8,180,25,@TABSTOP,w1_EDIT00
CONTROLCMD w1,w1_EDIT00,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"14",495,8,56,25,@CTEDITRO,w1_EDIT01
CONTROL w1,@Edit,"02 First Name",85,35,180,25,@TABSTOP,w1_EDIT02
CONTROLCMD w1,w1_EDIT02,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"03 Middle",265,35,180,25,@TABSTOP,w1_EDIT03
CONTROLCMD w1,w1_EDIT03,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"04 Last Name",445,35,180,25,@TABSTOP,w1_EDIT04
CONTROLCMD w1,w1_EDIT04,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"05 Suffix",625,35,44,25,@TABSTOP,w1_EDIT05
CONTROLCMD w1,w1_EDIT05,@EDSETLIMITTEXT,3
CONTROL w1,@Edit,"06 Associate",85,125,260,25,@TABSTOP,w1_EDIT06
CONTROLCMD w1,w1_EDIT06,@EDSETLIMITTEXT,30
CONTROL w1,@Edit,"07 Address 1",85,65,340,25,@TABSTOP,w1_EDIT07
CONTROLCMD w1,w1_EDIT07,@EDSETLIMITTEXT,40
CONTROL w1,@Edit,"08 Address 2",490,65,340,25,@TABSTOP,w1_EDIT08
CONTROLCMD w1,w1_EDIT08,@EDSETLIMITTEXT,40
CONTROL w1,@Edit,"09 City",85,95,260,25,@TABSTOP,w1_EDIT09
CONTROLCMD w1,w1_EDIT09,@EDSETLIMITTEXT,30
CONTROL w1,@Edit,"10 State",383,95,100,25,@TABSTOP,w1_EDIT10
CONTROLCMD w1,w1_EDIT10,@EDSETLIMITTEXT,10
CONTROL w1,@Edit,"11 Zip",513,95,100,25,@TABSTOP,w1_EDIT11
CONTROLCMD w1,w1_EDIT11,@EDSETLIMITTEXT,10
CONTROL w1,@Edit,"12255",722,95,50,25,@TABSTOP|@CTEDITLEFT|@CTEDITNUMBER,w1_EDIT12
CONTROLCMD w1,w1_EDIT12,@EDSETLIMITTEXT,6
CONTROL w1,@Edit,NullDate,809,95,85,25,@TABSTOP,w1_EDIT13
CONTROLCMD w1,w1_EDIT13,@EDSETLIMITTEXT,10
CONTROL w1,@Edit,"14 Home",50,185,140,25,@TABSTOP,w1_EDIT14
CONTROLCMD w1,w1_EDIT14,@EDSETLIMITTEXT,15
CONTROL w1,@Edit,"15 Cell",50,215,140,25,@TABSTOP,w1_EDIT15
CONTROLCMD w1,w1_EDIT15,@EDSETLIMITTEXT,15
CONTROL w1,@Edit,"16 Work",50,245,140,25,@TABSTOP,w1_EDIT16
CONTROLCMD w1,w1_EDIT16,@EDSETLIMITTEXT,15
CONTROL w1,@Edit,"17 Fax",50,275,140,25,@TABSTOP,w1_EDIT17
CONTROLCMD w1,w1_EDIT17,@EDSETLIMITTEXT,15
CONTROL w1,@Edit,"18 E-Mail",250,160,340,25,@TABSTOP,w1_EDIT18
CONTROLCMD w1,w1_EDIT18,@EDSETLIMITTEXT,40
CONTROL w1,@Edit,"19 Assoc E-Mail",250,190,340,25,@TABSTOP,w1_EDIT19
CONTROLCMD w1,w1_EDIT19,@EDSETLIMITTEXT,40
CONTROL w1,@Edit,"20 Web Site",250,215,420,25,@TABSTOP,w1_EDIT20
CONTROLCMD w1,w1_EDIT20,@EDSETLIMITTEXT,50
CONTROL w1,@Edit,"21 Sponsor",250,245,260,25,@TABSTOP,w1_EDIT21
CONTROLCMD w1,w1_EDIT21,@EDSETLIMITTEXT,30
CONTROL w1,@Edit,"22 Misc Notes",320,275,665,25,@TABSTOP,w1_EDIT22
CONTROLCMD w1,w1_EDIT22,@EDSETLIMITTEXT,80
CONTROL w1,@Edit,"23 Updated",773,35,95,25,@CTEDITRO,w1_EDIT23
CONTROLCMD w1,w1_EDIT23,@EDSETLIMITTEXT,10
CONTROL w1,@Edit,"24 Child 1",690,150,180,25,@TABSTOP,w1_EDIT24
CONTROLCMD w1,w1_EDIT24,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"25 Child 2",690,180,180,25,@TABSTOP,w1_EDIT25
CONTROLCMD w1,w1_EDIT25,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"26 Child 3",690,210,180,25,@TABSTOP,w1_EDIT26
CONTROLCMD w1,w1_EDIT26,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"27 Child 4",690,240,180,25,@TABSTOP,w1_EDIT27
CONTROLCMD w1,w1_EDIT27,@EDSETLIMITTEXT,20
CONTROL w1,@Edit,"28xx",85,330,57,25,@CTEDITRO,w1_EDIT28
CONTROLCMD w1,w1_EDIT28,@EDSETLIMITTEXT,3
CONTROL w1,@Edit,"29xx",138,330,45,25,@TABSTOP,w1_EDIT29
CONTROLCMD w1,w1_EDIT29,@EDSETLIMITTEXT,4
CONTROL w1,@Edit,"30xx",180,330,65,25,@TABSTOP,w1_EDIT30
CONTROLCMD w1,w1_EDIT30,@EDSETLIMITTEXT,1
CONTROL w1,@Edit,"31",242,330,360,25,@TABSTOP,w1_EDIT31
CONTROLCMD w1,w1_EDIT31,@EDSETLIMITTEXT,40
CONTROL w1,@Edit,"32",85,508,48,25,@TABSTOP,w1_EDIT32
CONTROLCMD w1,w1_EDIT32,@EDSETLIMITTEXT,4
CONTROL w1,@Edit,"33",130,508,645,25,@TABSTOP,w1_EDIT33
CONTROLCMD w1,w1_EDIT33,@EDSETLIMITTEXT,70

FOR indx = w1_EDIT00 TO w1_EDIT33
	IF indx = w1_EDIT01 OR indx = w1_EDIT23 OR indx = w1_EDIT28
		i = 0
	ELSE
		' Allow Edit Box to pass along Enter Key
		SETCONTROLNOTIFY(w1,indx,1,1)
	ENDIF
NEXT indx

CONTROL w1,@Groupbox," News Letter ",900,55,100,120,@BS_CENTER|@GROUP,w1_GROUPBOX1
CONTROL w1,@Radiobutton,"Mail",920,80,60,20,@TABSTOP|@GROUP,w1_RADIO1
CONTROL w1,@Radiobutton,"E-Mail",920,110,60,20,@TABSTOP,w1_RADIO2
CONTROL w1,@Radiobutton,"Both",920,140,60,20,@TABSTOP,w1_RADIO3

CONTROL w1,@ListView,"Cars",85,358,515,140,@VSCROLL|@LVSREPORT,w1_LISTVIEW1
CONTROL w1,@ListView,"Years",85,535,690,175,@VSCROLL|@LVSREPORT,w1_LISTVIEW2

CONTROL w1,@Static," Search Name",105,10,85,18,0,w1_STATIC00
CONTROL w1,@Static," Record",440,10,50,18,0,w1_STATIC01
CONTROL w1,@Static,"Name:",10,34,70,25,0,w1_STATIC02
'CONTROL w1,@Static,"M",213,99,10,18,0,w1_STATIC03
'CONTROL w1,@Static,"L",360,98,10,18,0,w1_STATIC04
'CONTROL w1,@Static,"S",505,99,10,18,0,w1_STATIC05
CONTROL w1,@Static," Associate",20,127,60,20,0,w1_STATIC06
CONTROL w1,@Static," Address 1",25,67,55,18,0,w1_STATIC07
CONTROL w1,@Static," Address 2",433,67,55,18,0,w1_STATIC08
CONTROL w1,@Static," City",53,97,26,18,0,w1_STATIC09
CONTROL w1,@Static," State",346,97,35,18,0,w1_STATIC10
CONTROL w1,@Static," Zip",486,97,25,18,0,w1_STATIC11
CONTROL w1,@Static," National Number",618,97,102,18,0,w1_STATIC12
CONTROL w1,@Static," Date",774,97,32,18,0,w1_STATIC13
CONTROL w1,@Static," Home",7,190,40,18,0,w1_STATIC14
CONTROL w1,@Static," Cell",17,220,30,18,0,w1_STATIC15
CONTROL w1,@Static," Work",10,250,37,18,0,w1_STATIC16
CONTROL w1,@Static," Fax",20,280,27,18,0,w1_STATIC17
CONTROL w1,@Static," E-Mail",205,163,43,18,0,w1_STATIC18
CONTROL w1,@Static," Assoc",208,193,40,18,0,w1_STATIC19
CONTROL w1,@Static," Web Site",190,220,58,18,0,w1_STATIC20
CONTROL w1,@Static," Sponsor",195,250,53,18,0,w1_STATIC21
CONTROL w1,@Static,"Misc Notes",195,275,120,25,@CTEDITCENTER,w1_STATIC22
CONTROL w1,@Static," Record Updated",672,37,98,18,0,w1_STATIC23
CONTROL w1,@Static,"---Phones---",50,160,138,25,@CTEDITCENTER,w1_STATIC24
CONTROL w1,@Static,"-=-=-Children-=-=-",690,130,113,18,0,w1_STATIC25

CalendarControl w1,800,320,200,170,@BORDER,0,w1_CALENDAR

SETFONT w1,"tahoma",8,400,0
SETWINDOWCOLOR w1,BLACK
FRONTPEN w1,WHITE
BACKPEN w1,BLACK

FOR indx = w1_EDIT00 TO w1_EDIT33
	SETFONT w1,"tahoma",8,400,0,indx
NEXT indx

SETCONTROLCOLOR w1,w1_BUTTON01,BLACK,YELLOW
SETCONTROLCOLOR w1,w1_BUTTON02,BLACK,YELLOW
SETCONTROLCOLOR w1,w1_BUTTON03,BLUE,CYAN
SETCONTROLCOLOR w1,w1_BUTTON04,RED,BLACK
SETCONTROLCOLOR w1,w1_BUTTON05,BLACK,CYAN
SETCONTROLCOLOR w1,w1_BUTTON06,BLACK,CYAN
SETCONTROLCOLOR w1,w1_BUTTON07,BLACK,CYAN
SETCONTROLCOLOR w1,w1_BUTTON08,BLACK,CYAN
SETCONTROLCOLOR w1,w1_BUTTON09,CYAN,BLACK
SETCONTROLCOLOR w1,w1_BUTTON10,GREEN,BLACK

SETCONTROLCOLOR w1,w1_CHECKBOX1,RED,BLACK
SETCONTROLCOLOR w1,w1_CHECKBOX2,CYAN,BLACK

FOR indx = w1_EDIT00 TO w1_EDIT33
	SETCONTROLCOLOR w1,indx,CYAN,BLACK
NEXT indx

SETCONTROLCOLOR w1,w1_GROUPBOX1,GREEN,BLACK
SETCONTROLCOLOR w1,w1_RADIO1,BLACK,GREEN
SETCONTROLCOLOR w1,w1_RADIO2,BLACK,GREEN
SETCONTROLCOLOR w1,w1_RADIO3,BLACK,GREEN

FOR indx = w1_STATIC02 TO w1_STATIC21
	SETCONTROLCOLOR w1,indx,BLACK,GREEN
NEXT indx

SETCONTROLCOLOR w1,w1_STATIC00,BLACK,CYAN
SETCONTROLCOLOR w1,w1_STATIC01,BLACK,GREEN
SETCONTROLCOLOR w1,w1_STATIC22,GREEN,BLACK
SETCONTROLCOLOR w1,w1_STATIC23,BLACK,GREEN
SETCONTROLCOLOR w1,w1_STATIC24,GREEN,BLACK
SETCONTROLCOLOR w1,w1_STATIC25,BLACK,GREEN

FOR indx = w1_BUTTON01 TO w1_STATIC25
	SETFONT w1,"tahoma",10,400,0,indx
NEXT indx

SETFONT w1,"tahoma",16,600,0,w1_CHECKBOX1

SETFONT w1,"tahoma",16,800,0,w1_BUTTON03
SETFONT w1,"tahoma",16,800,0,w1_BUTTON04

FOR indx = w1_BUTTON05 TO w1_BUTTON10
	SETFONT w1,"tahoma",10,800,0,indx
NEXT indx

SETFONT w1,"tahoma",16,800,0,w1_STATIC02
SETFONT w1,"tahoma",16,800,0,w1_STATIC22
SETFONT w1,"tahoma",16,800,0,w1_STATIC24

SENDMESSAGE(w1,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT,w1_LISTVIEW1)
SENDMESSAGE(w1,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT,w1_LISTVIEW2)

CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTCOLUMN,0,""
CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTCOLUMN,1,"Car No"
CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTCOLUMN,2,"Year"
CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTCOLUMN,3,"Make...."
CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTCOLUMN,4,"Model"

CONTROLCMD w1,w1_LISTVIEW1,@LVSETCOLWIDTH,0,0
CONTROLCMD w1,w1_LISTVIEW1,@LVSETCOLWIDTH,4,-2

CONTROLCMD w1,W1_LISTVIEW2,@LVINSERTCOLUMN,0,""
CONTROLCMD w1,W1_LISTVIEW2,@LVINSERTCOLUMN,1,"Year"
CONTROLCMD w1,W1_LISTVIEW2,@LVINSERTCOLUMN,2,"Comment"

CONTROLCMD w1,w1_LISTVIEW2,@LVSETCOLWIDTH,0,0
CONTROLCMD w1,w1_LISTVIEW2,@LVSETCOLWIDTH,1,45
CONTROLCMD w1,w1_LISTVIEW2,@LVSETCOLWIDTH,2,-2

/* Set gridlines */
SENDMESSAGE(GETCONTROLHANDLE(w1,w1_LISTVIEW1), LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_GRIDLINES, LVS_EX_GRIDLINES)
SENDMESSAGE(GETCONTROLHANDLE(w1,w1_LISTVIEW2), LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_GRIDLINES, LVS_EX_GRIDLINES)

/* Set text colour */
SENDMESSAGE w1.hWnd,0x1024,0,CYAN,w1_LISTVIEW1
/* Set text background colour */
SENDMESSAGE w1.hWnd,0x1026,0,BLACK,w1_LISTVIEW1
/* Set background colour */
SENDMESSAGE w1.hWnd,0x1001,0,SILVER,w1_LISTVIEW1

/* Set text colour */
SENDMESSAGE w1.hWnd,0x1024,0,CYAN,w1_LISTVIEW2
/* Set text background colour */
SENDMESSAGE w1.hWnd,0x1026,0,BLACK,w1_LISTVIEW2
/* Set background colour */
SENDMESSAGE w1.hWnd,0x1001,0,SILVER,w1_LISTVIEW2

dbName = GetFolderLocation(5) + "\\Cadillac\\Membership\\NTCLC_Membership.MDB"
IF FileExists(dbName) = 0 THEN dbName = GETSTARTPATH + "NTCLC_Membership.MDB"
dName = MID$(dbName,1,LEN(dbName)-3) + "BAK"

ClearCurrent()
mbrno = 14
LoadByNo()

SETFOCUS w1,w1_EDIT00

Previous = Current

FRONTPEN w1,CYAN
BACKPEN w1,BLACK

MOVE w1,800,520
PRINT w1," Cyan/Black = Standard Member"

FRONTPEN w1,BLACK
BACKPEN w1,RED

MOVE w1,800,540
PRINT w1," Black/Red = Deleted Member "

FRONTPEN w1,BLACK
BACKPEN w1,YELLOW

MOVE w1,800,560
PRINT w1," Black/Yellow = Not Sent to National "

FRONTPEN w1,CYAN
BACKPEN w1,BLACK

WAITUNTIL w1 = 0

END

'-------------
SUB w1_handler
'-------------
	SELECT @CLASS
		CASE @IDCREATE
			CENTERWINDOW w1
		CASE @IDCLOSEWINDOW
		CASE& @IDDESTROY
			IF w1 <> 0
				IF Previous.Active = "Z" AND Current.LName = "Last Name"
					DeleteZRecord()
				ELSE
					MemberChanged()
					CLOSEWINDOW w1
				ENDIF
			ENDIF
		CASE @IDCONTROL
			SELECT @CONTROLID
				' Work with Calendar
				CASE w1_CALENDAR
					IF @NOTIFYCODE = MCN_SELECT
						ccGetCurSel w1,w1_CALENDAR,m,d,y
					ENDIF
				' Search Name
				CASE w1_EDIT00
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT00,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SName = GETCONTROLTEXT(w1,w1_EDIT00)
							SearchLike()
'							SetFocus w1,w1_EDIT02
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT02
'						CASE @ENKILLFOCUS
'							SName = GETCONTROLTEXT(w1,w1_EDIT00)
'							SearchLike()
					ENDSELECT
				' Record Number (Read Only)
'				CASE w1_EDIT01
				' First Name
				CASE w1_EDIT02
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT02,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT03
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT03
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.FName = GETCONTROLTEXT(w1,w1_EDIT02)
					ENDSELECT
				' Middle Name
				CASE w1_EDIT03
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT03,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT04
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT04
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.MName = GETCONTROLTEXT(w1,w1_EDIT03)
					ENDSELECT
				' Last Name
				CASE w1_EDIT04
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT04,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT05
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT05
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.LName = GETCONTROLTEXT(w1,w1_EDIT04)
							t = INSTR(Current.LName,"'")
							IF t > 0
								temp = Current.LName
								temp = MID$(temp,1,t-1) + "~" + MID$(temp,t+1)
								Current.LName = temp
							ENDIF
					ENDSELECT
				' Suffix
				CASE w1_EDIT05
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT05,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT07
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT07
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.Suffix = GETCONTROLTEXT(w1,w1_EDIT05)
					ENDSELECT
				' Associate
				CASE w1_EDIT06
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT06,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT14
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT14
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.AssocMember = GETCONTROLTEXT(w1,w1_EDIT06)
					ENDSELECT
				' Address 1
				CASE w1_EDIT07
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT07,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT08
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT08
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.Addr1 = GETCONTROLTEXT(w1,w1_EDIT07)
					ENDSELECT
				' Address 2
				CASE w1_EDIT08
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT08,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT09
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT09
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.Addr2 = GETCONTROLTEXT(w1,w1_EDIT08)
					ENDSELECT
				' City
				CASE w1_EDIT09
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT09,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT10
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT10
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.City = GETCONTROLTEXT(w1,w1_EDIT09)
					ENDSELECT
				' State
				CASE w1_EDIT10
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT10,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT11
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT11
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.State = GETCONTROLTEXT(w1,w1_EDIT10)
					ENDSELECT
				' Zip
				CASE w1_EDIT11
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT11,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT12
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT12
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.Zip = GETCONTROLTEXT(w1,w1_EDIT11)
					ENDSELECT
				' National Number
				CASE w1_EDIT12
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT12,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT13
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT13
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							NatNo$ = GETCONTROLTEXT(w1,w1_EDIT12)
							Current.NatNo = VAL(NatNo$)
					ENDSELECT
				' National Date
				CASE w1_EDIT13
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT13,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT06
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT06
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.NatDate = GETCONTROLTEXT(w1,w1_EDIT13)
					ENDSELECT
				' Home Phone
				CASE w1_EDIT14
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT14,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT15
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT15
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.HomePhone = GETCONTROLTEXT(w1,w1_EDIT14)
					ENDSELECT
				' Cell Phone
				CASE w1_EDIT15
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT15,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT16
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT16
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.CellPhone = GETCONTROLTEXT(w1,w1_EDIT15)
					ENDSELECT
				' Work Phone
				CASE w1_EDIT16
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT16,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT17
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT17
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.WorkPhone = GETCONTROLTEXT(w1,w1_EDIT16)
					ENDSELECT
				' Fax Phone
				CASE w1_EDIT17
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT17,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT18
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT18
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.FaxPhone = GETCONTROLTEXT(w1,w1_EDIT17)
					ENDSELECT
				' E-Mail
				CASE w1_EDIT18
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT18,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT19
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT19
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.EMailMain = GETCONTROLTEXT(w1,w1_EDIT18)
					ENDSELECT
				' E-Mail Associate
				CASE w1_EDIT19
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT19,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT20
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT20
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.EMailAssoc = GETCONTROLTEXT(w1,w1_EDIT19)
					ENDSELECT
				' Web Site
				CASE w1_EDIT20
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT20,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT21
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT21
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.WebSite = GETCONTROLTEXT(w1,w1_EDIT20)
					ENDSELECT
				' Sponsor
				CASE w1_EDIT21
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT21,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT24
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT24
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.Sponsor = GETCONTROLTEXT(w1,w1_EDIT21)
					ENDSELECT
				' Misc Notes
				CASE w1_EDIT22
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT22,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT29
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT29
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.MiscNotes = GETCONTROLTEXT(w1,w1_EDIT22)
					ENDSELECT
				' Record Updated (Read Only)
'				CASE w1_EDIT23
				' Child 1
				CASE w1_EDIT24
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT24,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT25
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT25
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.ChildName[0,0] = GETCONTROLTEXT(w1,w1_EDIT24)
					ENDSELECT
				' Child 2
				CASE w1_EDIT25
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT25,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT26
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT26
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.ChildName[0,1] = GETCONTROLTEXT(w1,w1_EDIT25)
					ENDSELECT
				' Child 3
				CASE w1_EDIT26
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT26,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT27
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT27
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.ChildName[0,2] = GETCONTROLTEXT(w1,w1_EDIT26)
					ENDSELECT
				' Child 4
				CASE w1_EDIT27
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT27,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT22
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT22
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							Current.ChildName[0,3] = GETCONTROLTEXT(w1,w1_EDIT27)
					ENDSELECT
				' CarNo
				CASE w1_EDIT28
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT28,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT29
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT29
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							EDIT28 = GETCONTROLTEXT(w1,w1_EDIT28)
					ENDSELECT
				' CarYear
				CASE w1_EDIT29
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT29,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT30
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT30
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							EDIT29 = GETCONTROLTEXT(w1,w1_EDIT29)
					ENDSELECT
				' CarMake
				CASE w1_EDIT30
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT30,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT31
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT31
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							EDIT30 = GETCONTROLTEXT(w1,w1_EDIT30)
					ENDSELECT
				' CarModel
				CASE w1_EDIT31
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT31,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT32
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT32
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							EDIT31 = GETCONTROLTEXT(w1,w1_EDIT31)
					ENDSELECT
				' YearNo
				CASE w1_EDIT32
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT32,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT33
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT33
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							EDIT32 = GETCONTROLTEXT(w1,w1_EDIT32)
					ENDSELECT
				' YearComment
				CASE w1_EDIT33
					SELECT @NOTIFYCODE
						CASE @ENSETFOCUS
							CONTROLCMD w1,w1_EDIT33,@RTSETSELECTION,0,-1
						CASE @ENENTERKEY
							SETFOCUS w1,w1_EDIT00
						CASE @ENTABKEY
							SETFOCUS w1,w1_EDIT00
						CASE @ENKILLFOCUS
						CASE& @ENCHANGE
							EDIT33 = GETCONTROLTEXT(w1,w1_EDIT33)
					ENDSELECT
				' Listview 1
				CASE w1_LISTVIEW1
					SELECT @NotifyCode
						CASE @NMCLICK
							lvi = *<NMLISTVIEW>@LPARAM.iItem
							lviCarsC = lvi
							CONTROLCMD(w1,w1_LISTVIEW1,@LVGETTEXT,lvi,1,temp)
							SETCONTROLTEXT w1,w1_EDIT28,temp
							CONTROLCMD(w1,w1_LISTVIEW1,@LVGETTEXT,lvi,2,temp)
							SETCONTROLTEXT w1,w1_EDIT29,temp
							CONTROLCMD(w1,w1_LISTVIEW1,@LVGETTEXT,lvi,3,temp)
							SETCONTROLTEXT w1,w1_EDIT30,LEFT$(temp,1)
							CONTROLCMD(w1,w1_LISTVIEW1,@LVGETTEXT,lvi,4,temp)
							SETCONTROLTEXT w1,w1_EDIT31,temp
					ENDSELECT
				' Listview 2
				CASE w1_LISTVIEW2
					SELECT @NotifyCode
						CASE @NMCLICK
							lvi = *<NMLISTVIEW>@LPARAM.iItem
							lviYearC = lvi
							CONTROLCMD(w1,w1_LISTVIEW2,@LVGETTEXT,lvi,1,temp)
							SETCONTROLTEXT w1,w1_EDIT32,temp
							CONTROLCMD(w1,w1_LISTVIEW2,@LVGETTEXT,lvi,2,temp)
							SETCONTROLTEXT w1,w1_EDIT33,temp
					ENDSELECT
				' Previous
				CASE w1_BUTTON01
					IF @NOTIFYCODE = 0
						MemberChanged()
						mbrno--
						IF mbrno < 1 THEN mbrno = 1
						LoadByNo()
					ENDIF
				' Next
				CASE w1_BUTTON02
					IF @NOTIFYCODE = 0
						MemberChanged()
						mbrno++
						LoadByNo()
					ENDIF
				' New Member
				CASE w1_BUTTON03
					IF @NOTIFYCODE = 0
						MemberChanged()
						ClearCurrent()
						Current.FName = "First Name"
						Current.MName = "Middle Name"
						Current.LName = "Last Name"
						GetMaxMember()
						LoadCurrent()
						Previous = Current
						SETFOCUS w1,w1_EDIT02
					ENDIF
				' Exit
				CASE w1_BUTTON04
					IF @NOTIFYCODE = 0
						IF Previous.Active = "Z" AND Current.LName = "Last Name"
							DeleteZRecord()
						ELSE
							MemberChanged()
							CLOSEWINDOW w1
						ENDIF
						w1.hWnd = 0
					ENDIF
				' Insert (load new car record)
				CASE w1_BUTTON05
					IF @NOTIFYCODE = 0
						LoadNewCar()
					ENDIF
				' Update (update car record)
				CASE w1_BUTTON06
					IF @NOTIFYCODE = 0
						UpdateCar()
					ENDIF
				' Delete (delete car record)
				CASE w1_BUTTON07
					IF @NOTIFYCODE = 0
						DeleteCar()
					ENDIF
				' Insert/Update (insert or update year record)
				CASE w1_BUTTON08
					IF @NOTIFYCODE = 0
						InsUpdYear()
					ENDIF
				' Backup all data
				CASE w1_BUTTON09
					DataBackup()
				' Restore all data
				CASE w1_BUTTON10
					DataRestore()
			ENDSELECT
	ENDSELECT
	RETURN 0
ENDSUB

'---------------
SUB DataBackup()
'---------------
	Backup_Data = "Y"
	OpenDB()
	IF pDB = NULL
		mbrno = 0
		RETURN
	ENDIF
	' Find Maximum MemberNo
	Stmt = "SELECT MAX(MemberNo) FROM members;"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1055) Problem with SELECT MAX" + error,"Error"
		dbFreeSQL(hStmt)
		mbrno = 0
		RETURN
	ELSE
		dbGet(hStmt)
		dbGetData(hStmt, 1, temp)
		max = VAL(temp)
	ENDIF
	dbFreeSQL(hStmt)
	hStmt = 0
	CloseDB()
	IF OPENFILE(dFile,dName,"W") = 0
		FOR dPos = 1 TO max
			mbrno = dPos
			LoadByNo()
			PUT dFile,dPos,Current
		NEXT dPos
		' Write 0 record, so we can determine end of file
		max++
		mbrno = 0
		ClearCurrent()
		PUT dFile,max,Current
		CLOSEFILE dFile
	ENDIF
	Backup_Data = "N"
	mbrno = 64
	LoadByNo()
	Previous = Current
	LoadCurrent()
	MESSAGEBOX w1,"Data Backed Up","Info"
	RETURN
ENDSUB

'----------------
SUB DataRestore()
'----------------
	IF OPENFILE(dFile,dName,"R") = 0
		max = LEN(dFile) / LEN(Current) - 1
		FOR dPos = 1 TO max
			GET dFile,dPos,Current
			IF Current.MemberNo > 0 AND Current.MemberNo <= max THEN WriteDB()
'			IF Current.MemberNo = 0 OR SQL_Prob = "Y" THEN dPos = max + 4
		NEXT dPos
		CLOSEFILE dFile
	ENDIF
	MESSAGEBOX w1,"Data Restored","Info"
	LoadCurrent()
	RETURN
ENDSUB

'-----------------
SUB GetMaxMember()
'-----------------
	OpenDB()
	IF pDB = NULL
		mbrno = 0
		RETURN
	ENDIF
	' Find Maximum MemberNo
	Stmt = "SELECT MAX(MemberNo) FROM members;"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1120) Problem with SELECT MAX" + error,"Error"
		dbFreeSQL(hStmt)
		mbrno = 0
		RETURN
	ELSE
		dbGet(hStmt)
		dbGetData(hStmt, 1, temp)
		mbrno = VAL(temp) + 1
		Current.MemberNo = mbrno
	ENDIF
	dbFreeSQL(hStmt)
	hStmt = 0
	' Insert blank record into DB
	Stmt = "INSERT INTO members (MemberNo,Active) VALUES(" + STR$(mbrno) + ",'Z');"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1137) Problem with INSERT " + error,"Error"
		dbFreeSQL(hStmt)
		mbrno = 0
		RETURN
	ELSE
		dbGet(hStmt)
		dbGetData(hStmt, 1, temp)
		mbrno = VAL(temp) + 1
		Current.MemberNo = mbrno
	ENDIF
	dbFreeSQL(hStmt)
	hStmt = 0
	CloseDB()
	Current.Active = "Z"
	RETURN
ENDSUB

'-----------------
SUB ClearCurrent()
'-----------------
	WITH Current
		.MemberNo = mbrno
		.FName = ""
		.MName = ""
		.LName = ""
		.Suffix = ""
		.NewsLetter = ""
		.AssocMember = ""
		.Addr1 = ""
		.Addr2 = ""
		.City = ""
		.State = ""
		.Zip = ""
		.HomePhone = ""
		.CellPHone = ""
		.WorkPhone = ""
		.FaxPhone = ""
		.NatNo = 0
		.NatDate = NullDate
		.Sponsor = ""
		.EMailMain = ""
		.EMailAssoc = ""
		.WebSite = ""
		.SendNat = "Y"
		.RecordUpdated = ""
		.MiscNotes = ""
		.Active = "Y"
		FOR indx = 0 TO 3
			.ChildName[0,indx] = ""
		NEXT indx
		FOR indx = 0 TO 29
			.CarNo[indx] = 0
			.CarYear[indx] = 0
			.CarMake = ""
			.CarModel[0,indx] = ""
			.YearNo[indx] = 0
			.YearComment[0,indx] = ""
		NEXT indx
	ENDWITH
	lviCars = -1
	lviYear = -1
	lviCarsE = -1
	lviYearE = -1
	lviCarsC = -1
	lviYearC = -1
	Previous = Current
	Previous.Active = "Z"
	RETURN
ENDSUB

'----------------
SUB LoadCurrent()
'----------------
DEF cm:STRING
	' clear listviews
	SENDMESSAGE w1,@LVM_DeleteAllItems,0,0,w1_LISTVIEW1
	SENDMESSAGE w1,@LVM_DeleteAllItems,0,0,w1_LISTVIEW2
	' Load Screen with data from fields in Current
	SETCONTROLTEXT w1,w1_EDIT00,SName
	MemberNo$ = LTRIM$(STR$(Current.MemberNo))
	SETCONTROLTEXT w1,w1_EDIT01,MemberNo$
	SETCONTROLTEXT w1,w1_EDIT02,Current.FName
	SETCONTROLTEXT w1,w1_EDIT03,Current.MName
	temp = Current.LName
	t = INSTR(temp,"~")
	IF t > 0 THEN temp = MID$(temp,1,t-1) + "'" + MID$(temp,t+1)
	SETCONTROLTEXT w1,w1_EDIT04,temp
	SETCONTROLTEXT w1,w1_EDIT05,Current.Suffix
	SETSTATE w1,w1_RADIO1,0
	SETSTATE w1,w1_RADIO2,0
	SETSTATE w1,w1_RADIO3,0
	SELECT Current.NewsLetter
		CASE "M"
			SETSTATE w1,w1_RADIO1,1
		CASE "E"
			SETSTATE w1,w1_RADIO2,1
		CASE "B"
			SETSTATE w1,w1_RADIO3,1
		DEFAULT
			SETSTATE w1,w1_RADIO1,1
	ENDSELECT
	SETCONTROLTEXT w1,w1_EDIT06,Current.AssocMember
	SETCONTROLTEXT w1,w1_EDIT07,Current.Addr1
	SETCONTROLTEXT w1,w1_EDIT08,Current.Addr2
	SETCONTROLTEXT w1,w1_EDIT09,Current.City
	SETCONTROLTEXT w1,w1_EDIT10,Current.State
	SETCONTROLTEXT w1,w1_EDIT11,Current.Zip
	NatNo$ = LTRIM$(STR$(Current.NatNo))
	SETCONTROLTEXT w1,w1_EDIT12,NatNo$
	SETCONTROLTEXT w1,w1_EDIT13,Current.NatDate
	SETCONTROLTEXT w1,w1_EDIT14,Current.HomePhone
	SETCONTROLTEXT w1,w1_EDIT15,Current.CellPHone
	SETCONTROLTEXT w1,w1_EDIT16,Current.WorkPhone
	SETCONTROLTEXT w1,w1_EDIT17,Current.FaxPhone
	SETCONTROLTEXT w1,w1_EDIT18,Current.EMailMain
	SETCONTROLTEXT w1,w1_EDIT19,Current.EMailAssoc
	SETCONTROLTEXT w1,w1_EDIT20,Current.WebSite
	SETCONTROLTEXT w1,w1_EDIT21,Current.Sponsor
	IF Current.Active = "Y"
		SETSTATE w1,w1_CHECKBOX1,0
		FOR indx = w1_EDIT00 TO w1_EDIT33
			SETCONTROLCOLOR w1,indx,CYAN,BLACK
		NEXT indx
	ELSE
		SETSTATE w1,w1_CHECKBOX1,1
		FOR indx = w1_EDIT00 TO w1_EDIT33
			SETCONTROLCOLOR w1,indx,BLACK,RED
		NEXT indx
	ENDIF
	IF Current.SendNat = "N"
		SETSTATE w1,w1_CHECKBOX2,0
		IF Current.Active = "Y"
			FOR indx = w1_EDIT00 TO w1_EDIT33
				SETCONTROLCOLOR w1,indx,BLACK,YELLOW
			NEXT indx
		ENDIF
	ELSE
		SETSTATE w1,w1_CHECKBOX2,1
	ENDIF
	SETCONTROLTEXT w1,w1_EDIT22,Current.MiscNotes
	SETCONTROLTEXT w1,w1_EDIT23,Current.RecordUpdated
	i = w1_EDIT24
	FOR indx = 0 TO 3
		temp = Current.ChildName[0,indx]
		IF temp > ""
			SETCONTROLTEXT w1,i,temp
		ELSE
			SETCONTROLTEXT w1,i," "
		ENDIF
		i++
	NEXT indx
	FOR indx = w1_EDIT28 TO w1_EDIT33
		SETCONTROLTEXT w1,indx," "
	NEXT indx
	IF lviCars > -1
		lviCarsE = lviCars
		lviCarsC = lviCars
		FOR indx = 0 TO lviCars
			CarNo$ = LTRIM$(STR$(Current.CarNo[indx]))
			CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTITEM,indx,""
			CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,1,CarNo$
			Year$ = LTRIM$(STR$(Current.CarYear[indx]))
			CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,2,Year$
			IF Current.CarMake[indx] = "C"
				cm = "Cadillac"
			ELSE
				cm = "LaSalle"
			ENDIF
			CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,3,cm
			CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,4,Current.CarModel[0,indx]
			SETCONTROLTEXT w1,w1_EDIT28,CarNo$
			SETCONTROLTEXT w1,w1_EDIT29,Year$
			SETCONTROLTEXT w1,w1_EDIT30,LEFT$(cm,1)
			SETCONTROLTEXT w1,w1_EDIT31,Current.CarModel[0,indx]
			EDIT28 = CarNo$
			EDIT29 = Year$
			EDIT30 = CHR$(Current.CarMake[indx])
			EDIT31 = Current.CarModel[0,indx]
		NEXT indx
	ENDIF
	IF lviYear > -1
		lviYearE = lviYear
		lviYearC = 0
		FOR indx = 0 TO lviYear
			Year$ = LTRIM$(STR$(Current.YearNo[indx]))
			CONTROLCMD w1,w1_LISTVIEW2,@LVINSERTITEM,indx,""
			CONTROLCMD w1,w1_LISTVIEW2,@LVSETTEXT,indx,1,Year$
			CONTROLCMD w1,w1_LISTVIEW2,@LVSETTEXT,indx,2,Current.YearComment[0,indx]
			IF indx = 0
				SETCONTROLTEXT w1,w1_EDIT32,Year$
				SETCONTROLTEXT w1,w1_EDIT33,Current.YearComment[0,indx]
				EDIT32 = Year$
				EDIT33 = Current.YearComment[0,indx]
			ENDIF
		NEXT indx
	ENDIF
	RETURN
ENDSUB

'---------------
SUB SearchLike()
'---------------
	ClearCurrent()
	OpenDB()
	IF pDB = NULL THEN RETURN
	t = INSTR(SName,"'")
	IF t > 0 THEN	SName = MID$(SName,1,t-1) + "~" + MID$(SName,t+1)
	Stmt = "SELECT MemberNo FROM members WHERE LName like '" + SName + "%';"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1348) Problem with SELECT " + error,"Error"
		dbFreeSQL(hStmt)
		RETURN
	ELSE
		dbGet(hStmt)
		dbGetData(hStmt, 1, temp)
		mbrno = VAL(temp)
		Current.MemberNo = mbrno
	ENDIF
	dbFreeSQL(hStmt)
	hStmt = 0
	CloseDB()
	IF mbrno < 1 THEN RETURN
	LoadByNo()
	LoadCurrent()
	Previous = Current
	RETURN
ENDSUB

'-------------
SUB LoadByNo()
'-------------
	ClearCurrent()
	OpenDB()
	IF pDB = NULL THEN RETURN
	MemberNo$ = LTRIM$(STR$(Current.MemberNo))
	Stmt = "SELECT MemberNo,FName,MName,LName,Suffix,NewsLetter,AssocMember,Addr1,Addr2,City,State,Zip,HomePhone,CellPhone,"
	Stmt += "WorkPhone,FaxPhone,NatNo,NatDate,Sponsor,EMailMain,EMailAssoc,WebSite,SendNat,RecordUpdated,MiscNotes,Active "
	Stmt += "FROM members WHERE MemberNo=" + MemberNo$
	LoadDB()
	CloseDB()
	IF Backup_Data = "N"
		LoadCurrent()
		Previous = Current
	ENDIF
	RETURN
ENDSUB

'-----------
SUB OpenDB()
'-----------
	pDB = dbConnect("Microsoft Access Driver (*.mdb)",dbName,";")
	IF pDB = NULL THEN MESSAGEBOX w1,"(1390) Failed to connect to " + dbName,"Error"
	RETURN
ENDSUB

'-----------
SUB LoadDB()
'-----------
	' Load member table
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1401) Problem with SELECT " + error,"Error"
		dbFreeSQL(hStmt)
		RETURN
	ELSE
		' Load only 1st record
		dbGet(hStmt)
		LoadMember()
	ENDIF
	dbFreeSQL(hStmt)
	' Load children table
	Stmt = "SELECT ChildNo, ChildName FROM children WHERE MemberNo=" + MemberNo$ + " ORDER BY 1"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1415) Problem with SELECT " + error,"Error"
		dbFreeSQL(hStmt)
		RETURN
	ELSE
		i = -1
		WHILE dbGet(hStmt)
			LoadChild()
		ENDWHILE
	ENDIF
	dbFreeSQL(hStmt)
	' Load cars table
	Stmt = "SELECT CarNo,CarYear,CarMake,CarModel FROM cars WHERE MemberNo=" + MemberNo$ + " ORDER BY 2"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1430) Problem with SELECT " + error,"Error"
		dbFreeSQL(hStmt)
		RETURN
	ELSE
		i = -1
		WHILE dbGet(hStmt)
			LoadCars()
		ENDWHILE
		lviCars = i
	ENDIF
	dbFreeSQL(hStmt)
	' Load years table
	Stmt = "SELECT YearNo,YearComment FROM years WHERE MemberNo=" + MemberNo$ + " ORDER BY 1 DESC"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1446) Problem with SELECT " + error,"Error"
		dbFreeSQL(hStmt)
		RETURN
	ELSE
		i = -1
		WHILE dbGet(hStmt)
			LoadYears()
		ENDWHILE
		lviYear = i
	ENDIF
	dbFreeSQL(hStmt)
	Previous = Current
	RETURN
ENDSUB

'---------------
SUB LoadMember()
'---------------
	FOR i = 1 TO 26
		dbGetData(hStmt, i, temp)
		SELECT i
			CASE 1
				Current.MemberNo = VAL(temp)
				mbrno = Current.MemberNo
			CASE 2
				Current.FName = temp
			CASE 3
				Current.MName = temp
			CASE 4
				Current.LName = temp
			CASE 5
				Current.Suffix = temp
			CASE 6
				Current.NewsLetter = temp
			CASE 7
				Current.AssocMember = temp
			CASE 8
				Current.Addr1 = temp
			CASE 9
				Current.Addr2 = temp
			CASE 10
				Current.City = temp
			CASE 11
				Current.State = temp
			CASE 12
				Current.Zip = temp
			CASE 13
				Current.HomePhone = temp
			CASE 14
				Current.CellPHone = temp
			CASE 15
				Current.WorkPhone = temp
			CASE 16
				Current.FaxPhone = temp
			CASE 17
				Current.NatNo = VAL(temp)
			CASE 18
				Current.NatDate = temp
			CASE 19
				Current.Sponsor = temp
			CASE 20
				Current.EMailMain = temp
			CASE 21
				Current.EMailAssoc = temp
			CASE 22
				Current.WebSite = temp
			CASE 23
				Current.SendNat = temp
			CASE 24
				Current.RecordUpdated = temp
			CASE 25
				Current.MiscNotes = temp
			CASE 26
				Current.Active = temp
		ENDSELECT
	NEXT i
	RETURN
ENDSUB

'--------------
SUB LoadChild()
'--------------
	i++
	dbGetData(hStmt, 2, temp)
	Current.ChildName[0,i] = temp
	RETURN
ENDSUB

'-------------
SUB LoadCars()
'-------------
	i++
	dbGetData(hStmt, 1, temp)
	Current.CarNo[i] = VAL(temp)
	dbGetData(hStmt, 2, temp)
	Current.CarYear[i] = VAL(temp)
	dbGetData(hStmt, 3, temp)
	Current.CarMake[i] = temp
	dbGetData(hStmt, 4, temp)
	Current.CarModel[0,i] = temp
	RETURN
ENDSUB

'--------------
SUB LoadYears()
'--------------
	i++
	dbGetData(hStmt, 1, temp)
	Current.YearNo[i] = VAL(temp)
	dbGetData(hStmt, 2, temp)
	Current.YearComment[0,i] = temp
	RETURN
ENDSUB

'------------
SUB CloseDB()
'------------
	dbDisconnect(pDB)
	RETURN
ENDSUB

'------------
SUB WriteDB()
'------------
	MemberNo$ = LTRIM$(STR$(Current.MemberNo))
	Current.RecordUpdated = DATE$("yyyy-MM-dd")
	' Open DataBase
	OpenDB()
	' Delete members for current member
	stmt = "DELETE FROM members WHERE MemberNo=" + MemberNo$
	ProcDB()
	' Delete children for current member
	stmt = "DELETE FROM children WHERE MemberNo=" + MemberNo$
	ProcDB()
	' Delete cars for current member
	stmt = "DELETE FROM cars WHERE MemberNo=" + MemberNo$
	ProcDB()
	' Delete years for current member
	stmt = "DELETE FROM years WHERE MemberNo=" + MemberNo$
	ProcDB()
	' Insert members record
	WITH Current
		stmt = "INSERT INTO members VALUES(" + MemberNo$
		stmt += cq + .FName + qcq + .MName + qcq + .LName + qcq + .Suffix + qcq + .NewsLetter
		stmt += qcq + .AssocMember + qcq + .Addr1 + qcq + .Addr2 + qcq + .City + qcq + .State + qcq + .Zip
		stmt += qcq + .HomePhone + qcq + .CellPhone + qcq + .WorkPhone + qcq + .FaxPhone + qc + LTRIM$(STR$(.NatNo))
    stmt += cq + .NatDate + qcq + .Sponsor + qcq + .EMailMain + qcq + .EMailAssoc + qcq + .WebSite
		stmt += qcq + .SendNat + qcq + .RecordUpdated + qcq + .MiscNotes + qcq + .Active + "')"
	ENDWITH
	ProcDB()
	' Insert children records
	FOR i = 0 TO 3
		temp = Current.ChildName[0,i]
		IF temp <> ""
			stmt = "INSERT INTO children VALUES(" + MemberNo$
			stmt += c + LTRIM$(STR$(i+1)) + cq + temp + "')" 
			ProcDB()
		ENDIF
	NEXT i
	' Insert cars records
	FOR i = 0 TO 29
		IF Current.CarYear[i] <> 0
			stmt = "INSERT INTO cars VALUES(" + MemberNo$
			stmt += c + LTRIM$(STR$(i+1)) + c + LTRIM$(STR$(Current.CarYear[i])) + cq + Current.CarMake[i]
			temp = Current.CarModel[0,i]
			stmt += qcq + temp + "')"
			ProcDB()
		ENDIF
	NEXT i
	' Insert years records
	FOR i = 0 TO 29
		IF Current.YearNo[i] <> 0 AND Current.YearNo[i] < 2100
			stmt = "INSERT INTO years VALUES(" + MemberNo$
			temp = Current.YearComment[0,i]
			stmt += c + LTRIM$(STR$(Current.YearNo[i])) + cq + temp + "')"
			ProcDB()
		ENDIF
	NEXT i
	' Close DataBase
	CloseDB()
	RETURN
ENDSUB

'-----------
SUB ProcDB()
'-----------
	hStmt = dbExecSQL(pDb,stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1635) SQL Failed\n" + error + "-" + dbGetErrorText(hStmt) + "\n" + stmt,"Error"
	ENDIF
	dbFreeSQL(hStmt)
	RETURN
ENDSUB

'------------------
SUB CheckBoxRadio()
'------------------
	IF GETSTATE(w1,w1_CHECKBOX1)
		Current.Active = "N"
	ELSE
		Current.Active = "Y"
	ENDIF
	IF GETSTATE(w1,w1_CHECKBOX2)
		Current.SendNat = "Y"
	ELSE
		Current.SendNat = "N"
	ENDIF
	IF GETSTATE(w1,w1_RADIO1)
		Current.NewsLetter = "M"
	ELSE
		IF GETSTATE(w1,w1_RADIO2)
			Current.NewsLetter = "E"
		ELSE
			Current.NewsLetter = "B"
		ENDIF
	ENDIF
	RETURN
ENDSUB

'------------------
SUB MemberChanged()
'------------------
	CheckBoxRadio()
	IF Current <> Previous
		i = MESSAGEBOX(w1,"Previous record has been changed\nDo you want to update","Question",@MB_YESNO|@MB_ICONQUESTION)
		IF i = @IDYES
			WriteDB()
		ENDIF
		Previous = Current
	ENDIF
	RETURN
ENDSUB

'---------------
SUB LoadNewCar()
'---------------
	lviCarsE++
	indx = lviCarsE
	Current.CarNo[indx] = VAL(EDIT28)
	Current.CarYear[indx] = VAL(EDIT29)
	Current.CarMake[indx] = EDIT30
	Current.CarModel[indx] = EDIT31
	CONTROLCMD w1,w1_LISTVIEW1,@LVINSERTITEM,indx,""
	CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,1,EDIT28
	CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,2,EDIT29
	CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,3,EDIT30
	CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,4,EDIT31
	RETURN
ENDSUB

'--------------
SUB UpdateCar()
'--------------
	IF lviCarsC > -1
		indx = lviCarsC
		Current.CarNo[indx] = VAL(EDIT28)
		Current.CarYear[indx] = VAL(EDIT29)
		Current.CarMake[indx] = EDIT30
		Current.CarModel[indx] = EDIT31
		CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,1,EDIT28
		CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,2,EDIT29
		CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,3,EDIT30
		CONTROLCMD w1,w1_LISTVIEW1,@LVSETTEXT,indx,4,EDIT31
	ENDIF
	RETURN
ENDSUB

'--------------
SUB DeleteCar()
'--------------
	IF lviCarsC > -1
		SENDMESSAGE W1,@LVM_DeleteItem,0,lviCarsC,w1_LISTVIEW1
		Current.CarNo[lviCarsC] = 0
		Current.CarYear[lviCarsC] = 0
		Current.CarMake[lviCarsC] = ""
		Current.CarModel[lviCarsC] = ""
	ENDIF
	RETURN
ENDSUB

'---------------
SUB InsUpdYear()
'---------------
	IF lviYearC > -1
		IF VAL(EDIT32) = Current.YearNo[lviYearC]
			' Update Year info
			CONTROLCMD w1,w1_LISTVIEW2,@LVSETTEXT,lviYearC,2,EDIT33
			Current.YearComment[lviYearC] = EDIT33
		ELSE
			' Insert Year info
			lviYearE++
			indx = lviYearE
			IF UCASE$(EDIT32) = "LIFE"
				EDIT32 = "2999"
				EDIT33 = "**Lifetime Board Decision**"
			ENDIF
			Current.YearNo[indx] = VAL(EDIT32)
			Current.YearComment[indx] = EDIT33
			CONTROLCMD w1,w1_LISTVIEW2,@LVINSERTITEM,indx,EDIT32
			CONTROLCMD w1,w1_LISTVIEW2,@LVSETTEXT,indx,1,EDIT33
		ENDIF
	ENDIF
	RETURN
ENDSUB

'-----------------------------------
SUB FileExists(filename:STRING), INT
'-----------------------------------
IF (OPENFILE(dbFile,filename,"r") = 0)
	CLOSEFILE(dbFile)
	RETURN 1
ENDIF
RETURN 0
ENDSUB

'-----------------------------------------
SUB CompUDT(c:POINTER,p:POINTER,l:INT),INT
'-----------------------------------------
	DEF i:INT
	FOR i = 0 TO l-1
		IF #<char>c <> #<char>p THEN RETURN 0
		c++
		p++
	NEXT i
	RETURN 1
ENDSUB

'---------------------------
SUB ZeroUDT(c:POINTER,l:INT)
'---------------------------
	DEF i:INT
	FOR i = 0 TO l-1
		#<char>c = "\0x00"
		c++
	NEXT i
	RETURN
ENDSUB

'------------------
SUB DeleteZRecord()
'------------------
	OpenDB()
	IF pDB = NULL THEN RETURN
	' Delete Z records (basically blank new member)
	Stmt = "DELETE FROM members WHERE Active='Z'"
	hStmt = dbExecSQL(pDB,Stmt)
	error = dbGetErrorCode(hStmt)
	IF LEN(error)
		MESSAGEBOX w1,"(1795) Problem with DELETE Z - " + error + "\n" + Stmt,"Error"
		dbFreeSQL(hStmt)
		RETURN
	ENDIF
	dbFreeSQL(hStmt)
	hStmt = 0
	CloseDB()
	RETURN
ENDSUB

'----------------------------------------
SUB GetFolderLocation(nFolder:INT),STRING
'----------------------------------------
	DEF path[260]:ISTRING
	DEF pidl:POINTER
	DEF ppidl:POINTER
	ppidl = &pidl
	path = ""
	SHGetSpecialFolderLocation(NULL,nFolder,ppidl)
	SHGetPathFromIDList(pidl,path)
	CoTaskMemFree(pidl)
	RETURN path
ENDSUB