home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / foxadr / adr.bas < prev    next >
Encoding:
BASIC Source File  |  1995-05-09  |  8.2 KB  |  432 lines

  1. Global adr_db As database
  2. Global adr_ds As dynaset
  3. Global newflag As Integer
  4. Global curr_ind As String
  5. Global first_list As Integer
  6. Global curr_rec As Integer
  7. Global ignore_click As Integer
  8.  
  9. Function chk_change ()
  10.  
  11. ' This is a routine to check if the current record has been edited
  12. ' and is therefore different from what is stored on disk.
  13.  
  14. ' Empty fields in the database are returned as nulls. This
  15. ' means we cannot compare them directly with entries on the
  16. ' form. Therefore, we use the isnull() function to convert null
  17. ' fields to empty strings.
  18.  
  19. Dim changed As Integer
  20. Dim notevar As String
  21. Dim adr1var As String
  22. Dim adr2var As String
  23. Dim adr3var As String
  24. Dim adr4var As String
  25. Dim adr5var As String
  26. Dim telvar As String
  27. Dim faxvar As String
  28. Dim actvar As Integer
  29. Dim forenamevar As String
  30. Dim surnamevar As String
  31.  
  32.  
  33. changed = 0
  34. chk_change = ""
  35.  
  36. If adr_ds("ACTION") = True Then
  37. actvar = 1
  38. Else
  39. actvar = 0
  40. End If
  41.  
  42. If IsNull(adr_ds("NOTES")) Then
  43. notevar = ""
  44. Else
  45. notevar = adr_ds("NOTES")
  46. End If
  47.  
  48. If IsNull(adr_ds("FORENAME")) Then
  49. forenamevar = ""
  50. Else
  51. fornamevar = adr_ds("FORENAME")
  52. End If
  53.  
  54. If IsNull(adr_ds("SURNAME")) Then
  55. surnamevar = ""
  56. Else
  57. surnamevar = adr_ds("SURNAME")
  58. End If
  59.  
  60. If IsNull(adr_ds("ADDRESS1")) Then
  61. adr1var = ""
  62. Else
  63. adr1var = adr_ds("ADDRESS1")
  64. End If
  65.  
  66. If IsNull(adr_ds("ADDRESS2")) Then
  67. adr2var = ""
  68. Else
  69. adr2var = adr_ds("ADDRESS2")
  70. End If
  71.  
  72. If IsNull(adr_ds("ADDRESS3")) Then
  73. adr3var = ""
  74. Else
  75. adr3var = adr_ds("ADDRESS3")
  76. End If
  77.  
  78. If IsNull(adr_ds("ADDRESS4")) Then
  79. adr4var = ""
  80. Else
  81. adr4var = adr_ds("ADDRESS4")
  82. End If
  83.  
  84. If IsNull(adr_ds("ADDRESS5")) Then
  85. adr5var = ""
  86. Else
  87. adr5var = adr_ds("ADDRESS5")
  88. End If
  89.  
  90. If IsNull(adr_ds("TELEPHONE")) Then
  91. telvar = ""
  92. Else
  93. telvar = adr_ds("TELEPHONE")
  94. End If
  95.  
  96. If IsNull(adr_ds("FAX")) Then
  97. faxvar = ""
  98. Else
  99. faxvar = adr_ds("FAX")
  100. End If
  101.  
  102. If adr_form.notes_box.Text <> notevar Then
  103. changed = 1
  104. End If
  105.  
  106. If adr_form.forename_box.Text <> fornamevar Then
  107. changed = 1
  108. End If
  109.  
  110. If adr_form.surname_box.Text <> surnamevar Then
  111. changed = 1
  112. End If
  113.  
  114. If adr_form.adr1_box.Text <> adr1var Then
  115. changed = 1
  116. End If
  117.  
  118. If adr_form.adr2_box.Text <> adr2var Then
  119. changed = 1
  120. End If
  121.  
  122. If adr_form.adr3_box.Text <> adr3var Then
  123. changed = 1
  124. End If
  125.  
  126. If adr_form.adr4_box.Text <> adr4var Then
  127. changed = 1
  128. End If
  129.  
  130. If adr_form.adr5_box.Text <> adr5var Then
  131. changed = 1
  132. End If
  133.  
  134. If adr_form.tel_box.Text <> telvar Then
  135. changed = 1
  136. End If
  137.  
  138. If adr_form.fax_box.Text <> faxvar Then
  139. changed = 1
  140. End If
  141.  
  142. If adr_form.Action_needed.Value <> actvar Then
  143. changed = 1
  144. End If
  145.  
  146. If changed = 1 Then
  147.  
  148. Dim decis As Integer
  149.  
  150. decis = MsgBox("Details have changed. Save changes?", 19)
  151.  
  152.     Select Case decis
  153.  
  154.     Case 6
  155.  
  156.     save_rec
  157.  
  158.     Case 7
  159.  
  160.     newflag = 0
  161.  
  162.     Case 2
  163.  
  164.     Rem cancel - do nothing
  165.  
  166.     chk_change = "Cancel"
  167.  
  168.     End Select
  169.  
  170. End If
  171.  
  172.  
  173. End Function
  174.  
  175. Sub filt_adr ()
  176. Rem this routine filters the records to show only
  177. Rem those where the "action" field is true
  178.  
  179. sql_stmnt = "SELECT * from address WHERE address.action=-1 order by ucase$(" + curr_ind + ")"
  180. Set adr_ds = adr_db.CreateDynaset(sql_stmnt)
  181.  
  182. If adr_ds.RecordCount = 0 Then
  183. Rem test for no records returned
  184.  
  185. MsgBox ("No outstanding action")
  186. sql_stmnt = "SELECT * from address ORDER BY ucase$(" + curr_ind + ")"
  187. Set adr_ds = adr_db.CreateDynaset(sql_stmnt)
  188.  
  189. ' reset check box without triggering code
  190.  
  191. ignore_click = 1
  192. adr_form.action_check.Value = 0
  193. End If
  194.  
  195. adr_ds.MoveFirst
  196.  
  197. End Sub
  198.  
  199. Sub main ()
  200. Set adr_db = OpenDatabase("C:\ADR", False, False, "FoxPro 2.5;")
  201.  
  202. curr_ind = "surname"
  203. sql_stmnt = "SELECT * from address"
  204. Set adr_ds = adr_db.CreateDynaset(sql_stmnt)
  205.  
  206. adr_form.Show
  207. upd_fields
  208. Rem update the form now to avoid triggering the
  209. Rem "record has changed" alert in the index routine
  210. adr_form.order_option(1).Value = True
  211. Rem setting this to true also runs the SQL that sets the
  212. Rem order to surname
  213. adr_ds.MoveFirst
  214. upd_fields
  215.  
  216. first_list = 1
  217.  
  218. End Sub
  219.  
  220. Sub refresh_sql ()
  221. ' The snag with viewing a dynaset
  222. ' rather than the underlying table is that if you add a record
  223. ' to the dynaset, or edit an indexed field, the dynaset
  224. ' will go out of order.
  225. ' Therefore, you need continually to refresh the dynaset
  226. ' which is what this routine does.
  227.  
  228. If adr_form.action_check.Value = 1 Then
  229. ' the database is restricted to those with action outstanding
  230.  
  231. filt_adr
  232.  
  233. Else
  234. ' show all records
  235.  
  236. sql_stmnt = "SELECT * from address ORDER BY ucase$(" + curr_ind + ")"
  237. Set adr_ds = adr_db.CreateDynaset(sql_stmnt)
  238.  
  239. End If
  240.  
  241. End Sub
  242.  
  243. Sub save_rec ()
  244.  
  245. curr_rec = adr_ds!recnum
  246.  
  247. If Not newflag Then
  248. adr_ds.Edit
  249. End If
  250.  
  251. upd_adr
  252. adr_ds.Update
  253.  
  254. newflag = 0
  255.  
  256. refresh_sql
  257.  
  258. criteria = "recnum = " + Str(curr_rec)
  259.  
  260. adr_ds.FindFirst criteria
  261.  
  262. upd_fields
  263.  
  264. End Sub
  265.  
  266. Sub upd_adr ()
  267. adr_ds("FORENAME") = adr_form.forename_box.Text
  268. adr_ds("SURNAME") = adr_form.surname_box.Text
  269. adr_ds("ADDRESS1") = adr_form.adr1_box.Text
  270. adr_ds("ADDRESS2") = adr_form.adr2_box.Text
  271. adr_ds("ADDRESS3") = adr_form.adr3_box.Text
  272. adr_ds("ADDRESS4") = adr_form.adr4_box.Text
  273. adr_ds("ADDRESS5") = adr_form.adr5_box.Text
  274. adr_ds("TELEPHONE") = adr_form.tel_box.Text
  275. adr_ds("FAX") = adr_form.fax_box.Text
  276. adr_ds("NOTES") = adr_form.notes_box.Text
  277. End Sub
  278.  
  279. Sub upd_fields ()
  280.  
  281. If adr_ds("FORENAME") <> "" Then
  282. adr_form.forename_box.Text = adr_ds("FORENAME")
  283. Else
  284. adr_form.forename_box.Text = ""
  285. End If
  286.  
  287. If adr_ds("SURNAME") <> "" Then
  288. adr_form.surname_box.Text = adr_ds("SURNAME")
  289. Else
  290. adr_form.surname_box.Text = ""
  291. End If
  292.  
  293. If adr_ds("ADDRESS1") <> "" Then
  294. adr_form.adr1_box.Text = adr_ds("ADDRESS1")
  295. Else
  296. adr_form.adr1_box.Text = ""
  297. End If
  298.  
  299. If adr_ds("ADDRESS2") <> "" Then
  300. adr_form.adr2_box.Text = adr_ds("ADDRESS2")
  301. Else
  302. adr_form.adr2_box.Text = ""
  303. End If
  304.  
  305. If adr_ds("ADDRESS3") <> "" Then
  306. adr_form.adr3_box.Text = adr_ds("ADDRESS3")
  307. Else
  308. adr_form.adr3_box.Text = ""
  309. End If
  310.  
  311. If adr_ds("ADDRESS4") <> "" Then
  312. adr_form.adr4_box.Text = adr_ds("ADDRESS4")
  313. Else
  314. adr_form.adr4_box.Text = ""
  315. End If
  316.  
  317. If adr_ds("ADDRESS5") <> "" Then
  318. adr_form.adr5_box.Text = adr_ds("ADDRESS5")
  319. Else
  320. adr_form.adr5_box.Text = ""
  321. End If
  322.  
  323. If adr_ds("TELEPHONE") <> "" Then
  324. adr_form.tel_box.Text = adr_ds("TELEPHONE")
  325. Else
  326. adr_form.tel_box.Text = ""
  327. End If
  328.  
  329. If adr_ds("FAX") <> "" Then
  330. adr_form.fax_box.Text = adr_ds("FAX")
  331. Else
  332. adr_form.fax_box.Text = ""
  333. End If
  334.  
  335. If adr_ds("NOTES") <> "" Then
  336. adr_form.notes_box.Text = adr_ds("NOTES")
  337. Else
  338. adr_form.notes_box.Text = ""
  339. End If
  340.  
  341. If adr_ds("ACTION") = True Then
  342. adr_form.Action_needed.Value = 1
  343.  
  344. Else
  345. adr_form.Action_needed.Value = 0
  346.  
  347. End If
  348.  
  349.  
  350. End Sub
  351.  
  352. Sub upd_list ()
  353.  
  354. screen.MousePointer = 11
  355. list_form.list_grid.Visible = False
  356.  
  357. Rem busy
  358.  
  359. ' now update grid
  360. ' note that you cannot see the 3rd column,
  361. ' which is used to store the record number
  362.  
  363. Dim gridname As String
  364. Dim forevar As String
  365. Dim survar As String
  366. Dim recstr As String
  367.  
  368. list_form.list_grid.FixedRows = 0
  369. list_form.list_grid.FixedCols = 0
  370. list_form.list_grid.Rows = 1
  371. list_form.list_grid.Cols = 3
  372.  
  373. list_form.list_grid.ColWidth(0) = (list_form.list_grid.Width - 301) / 2
  374. list_form.list_grid.ColWidth(1) = (list_form.list_grid.Width - 301) / 2
  375. Rem column width allows for scroll bar
  376.  
  377. rowcount = 0
  378.  
  379. adr_ds.MoveFirst
  380.  
  381. Do While adr_ds.EOF = False
  382. list_form.list_grid.Rows = rowcount + 1
  383. list_form.list_grid.Row = rowcount
  384. list_form.list_grid.Col = 0
  385.  
  386. If IsNull(adr_ds!forename) Then
  387. forevar = ""
  388. Else
  389. forevar = adr_ds!forename
  390. End If
  391.  
  392. If IsNull(adr_ds!surname) Then
  393. survar = ""
  394. Else
  395. survar = adr_ds!surname
  396. End If
  397.  
  398. recstr = Str(adr_ds!recnum)
  399.  
  400. list_form.list_grid.Text = forevar
  401. list_form.list_grid.Col = 1
  402. list_form.list_grid.Text = survar
  403. list_form.list_grid.Col = 2
  404. list_form.list_grid.Text = recstr
  405.  
  406. rowcount = rowcount + 1
  407. adr_ds.MoveNext
  408. Loop
  409.  
  410. adr_ds.MoveFirst
  411.  
  412. Do While rowcount < 20
  413. Rem fills the grid with spaces when there are very few rows
  414. Rem for a cosmetic improvement
  415.  
  416. list_form.list_grid.Rows = rowcount + 1
  417. list_form.list_grid.Row = rowcount
  418. list_form.list_grid.Col = 0
  419. list_form.list_grid.Text = ""
  420.  
  421. rowcount = rowcount + 1
  422.  
  423. Loop
  424.  
  425. list_form.list_grid.Visible = True
  426.  
  427. screen.MousePointer = 0
  428. Rem done
  429.  
  430. End Sub
  431.  
  432.