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