home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Programmer'…arterly (Limited Edition) / Visual_Basic_Programmers_Journal_VB-CD_Quarterly_Limited_Edition_1995.iso / code / ch08code / listings / 08list01.txt next >
Text File  |  1995-08-10  |  6KB  |  184 lines

  1. Listing 8.1[em]The Address Book Application
  2. ' Since all fields are in a control array
  3. ' I will setup defines for accessing them
  4. Const NAME_FLD = 1
  5. Const STREET_FLD = 2
  6. Const STREET2_FLD = 3
  7. Const CITY_FLD = 4
  8. Const STATE_FLD = 5
  9. Const ZIP_FLD = 6
  10. Const PHONE_FLD = 7
  11. Const WORK_FLD = 8
  12. Const FAX_FLD = 9
  13. Const NOTES_FLD = 10
  14. Const FIRST_FLD = NAME_FLD
  15. Const LAST_FLD = NOTES_FLD
  16.  
  17. ' Objects and variables used in this module
  18. Dim Ws As Workspace
  19. Dim Db As Database
  20. Dim Tbl As Recordset
  21. Dim SearchSet As Recordset
  22. Dim MemoSet As Recordset
  23. Dim AddInfoAdd As Recordset
  24. Dim SrchValue As String
  25.  
  26. Sub Add_Click ()
  27.     If Not (AddressCtl(NAME_FLD) = "") Then
  28. Tbl.AddNew
  29.      Tbl.Fields("Name").Value = AddressCtl(NAME_FLD)
  30.      Tbl.Fields("Street").Value = AddressCtl(STREET_FLD)
  31.      Tbl.Fields("Street2").Value = AddressCtl(STREET2_FLD)
  32.      Tbl.Fields("City").Value = AddressCtl(CITY_FLD)
  33.      Tbl.Fields("State").Value = AddressCtl(STATE_FLD)
  34.      Tbl.Fields("ZipCode").Value = AddressCtl(ZIP_FLD)
  35.      Tbl.Fields("Phone").Value = AddressCtl(PHONE_FLD)
  36.      Tbl.Fields("WorkPhone").Value = AddressCtl(WORK_FLD)
  37.      Tbl.Fields("Fax").Value = AddressCtl(FAX_FLD)
  38.      Tbl.Update
  39.      'Tbl.Fields("Notes").Value = AddressCtl(NOTES_FLD)
  40.      'Tbl.Update
  41.  
  42.      AddInfoAdd.AddNew
  43.      AddInfoAdd.Fields("Name").Value = AddressCtl(NAME_FLD)
  44.      AddInfoAdd.Fields("Notes").Value = AddressCtl(NOTES_FLD)
  45.      AddInfoAdd.Update
  46.     End If
  47. End Sub
  48.  
  49. Sub Command1_Click ()
  50.     Dim i As Integer
  51.     For i = FIRST_FLD To LAST_FLD Step 1
  52.      AddressCtl(i) = ""
  53.     Next i
  54. End Sub
  55.  
  56. Sub Delete_Click ()
  57.     If Not SearchSet.NoMatch Then
  58.        SearchSet.Delete
  59.        If Not MemoSet.NoMatch Then
  60.      MemoSet.Delete
  61.        End If
  62.        Command1_Click
  63.        FindFirst_Click
  64.     End If
  65. End Sub
  66.  
  67. Sub FillFormfromImport ()
  68.     If Not SearchSet.NoMatch Then
  69.      AddressCtl(NAME_FLD) = ValidateRecordField("Name")
  70.      AddressCtl(STREET_FLD) = ValidateRecordField("Street")
  71.      AddressCtl(STREET2_FLD) = ValidateRecordField("Street2")
  72.      AddressCtl(CITY_FLD) = ValidateRecordField("City")
  73.      AddressCtl(STATE_FLD) = ValidateRecordField("State")
  74.      AddressCtl(ZIP_FLD) = ValidateRecordField("ZipCode")
  75.      AddressCtl(PHONE_FLD) = ValidateRecordField("Phone")
  76.      AddressCtl(WORK_FLD) = ValidateRecordField("WorkPhone")
  77.      AddressCtl(FAX_FLD) = ValidateRecordField("Fax")
  78.      AddressCtl(NOTES_FLD) = ValidateRecordField("Notes")
  79.     End If
  80.  
  81. End Sub
  82.  
  83. Sub FillFormfromRecord ()
  84.     If Not SearchSet.NoMatch Then
  85.      AddressCtl(NAME_FLD) = ValidateRecordField("Name")
  86.      AddressCtl(STREET_FLD) = ValidateRecordField("Street")
  87.      AddressCtl(STREET2_FLD) = ValidateRecordField("Street2")
  88.      AddressCtl(CITY_FLD) = ValidateRecordField("City")
  89.      AddressCtl(STATE_FLD) = ValidateRecordField("State")
  90.      AddressCtl(ZIP_FLD) = ValidateRecordField("ZipCode")
  91.      AddressCtl(PHONE_FLD) = ValidateRecordField("Phone")
  92.      AddressCtl(WORK_FLD) = ValidateRecordField("WorkPhone")
  93.      AddressCtl(FAX_FLD) = ValidateRecordField("Fax")
  94.  
  95.      Dim AttachStatement As String
  96.      AttachStatement = "SELECT * FROM Addinfo WHERE Name = '" +
  97.       AddressCtl(NAME_FLD) + "'"
  98.      Set MemoSet = Db.OpenRecordset(AttachStatement, dbOpenDynaset)
  99.      If MemoSet.BOF = False Then
  100.          If MemoSet.Fields("Notes").Value > "" Then
  101.           AddressCtl(NOTES_FLD) = MemoSet.Fields("Notes").Value
  102.          Else
  103.           AddressCtl(NOTES_FLD) = ""
  104.          End If
  105.      End If
  106.     End If
  107. End Sub
  108.  
  109. Sub FindFirst_Click ()
  110.     Dim Statement As String
  111.     Statement = "SELECT * FROM Address WHERE Name >= '" +
  112.      AddressCtl(NAME_FLD) + "'"
  113.     Set SearchSet = Db.OpenRecordset(Statement, dbOpenDynaset)
  114.     FillFormfromRecord
  115. End Sub
  116.  
  117. Sub FindNext_Click ()
  118.     SearchSet.FindNext "Name > ' '"
  119.     FillFormfromRecord
  120. End Sub
  121.  
  122. Sub FindPrevious_Click ()
  123.     SearchSet.FindPrevious "Name > ' '"
  124.     FillFormfromRecord
  125. End Sub
  126.  
  127. Sub Form_Load ()
  128.     Dim TblDef As New TableDef
  129.     ' first create the default workspace
  130.      Set Ws = DBEngine.Workspaces(0)
  131.     ' second open the access database
  132.     Set Db = Ws.OpenDatabase("c:\vb\address.mdb")
  133.  
  134.     ' now attach the dbase IV table to the open db
  135.     TblDef.Connect = "dBASE IV;DATABASE=C:\VB\ADDINFO"
  136.     TblDef.SourceTableName = "ADDINFO"   ' The name of the file.
  137.     TblDef.Name = "Addinfo"    ' The name in your database.
  138.     Db.TableDefs.Append TblDef  ' Create the link.
  139.  
  140.     ' now open a table info the main database
  141.     Set Tbl = Db.OpenRecordset("Address", dbOpenTable)
  142.  
  143.     ' now we need to create a dynaset from the attached table
  144.     Statement = "SELECT * FROM Address WHERE Name >= '" +
  145.      AddressCtl(NAME_FLD) + "'"
  146. Set AddInfoAdd = Db.OpenRecordset("SELECT * FROM Addinfo",
  147.      dbOpenDynaset)
  148. End Sub
  149.  
  150. Sub Form_Unload (Cancel As Integer)
  151.     Tbl.Close
  152.     AddInfoAdd.Close
  153.     Db.TableDefs.Delete "Addinfo"
  154. End Sub
  155.  
  156. Sub ImportDbase_Click ()
  157.     Dim dbdb As Database
  158.     Dim DTable As RecordSet
  159.     Dim Statement As String
  160.  
  161.     Set dbdb = Ws.OpenDatabase("c:\vb", False, False, "dBase IV")
  162.     Set DTable = dbdb.OpenRecordSet("Address", dbOpenTable)
  163.  
  164.     Statement = "SELECT * FROM Address"
  165.     Set SearchSet = dbdb.OpenRecordset(Statement, dbOpenRecordset)
  166.     While Not SearchSet.EOF
  167.      FillFormfromImport
  168.      Add_Click
  169.      Command1_Click
  170.      SearchSet.MoveNext
  171.     Wend
  172. End Sub
  173.  
  174. Function ValidateRecordField (Field As String) As String
  175.     If SearchSet.BOF = False Then
  176.      If SearchSet.Fields(Field).Value > "" Then
  177.          ValidateRecordField = SearchSet.Fields(Field).Value
  178.      Else
  179.          ValidateRecordField = ""
  180.      End If
  181.     End If
  182. End Function
  183.  
  184.