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 / ch10code / address.frm < prev    next >
Text File  |  1994-10-10  |  14KB  |  451 lines

  1. VERSION 4.00
  2. Begin VB.Form Address 
  3.    Caption         =   "Sample Address Book Application"
  4.    ClientHeight    =   5235
  5.    ClientLeft      =   660
  6.    ClientTop       =   1530
  7.    ClientWidth     =   8325
  8.    BeginProperty Font 
  9.       name            =   "MS Sans Serif"
  10.       charset         =   0
  11.       weight          =   700
  12.       size            =   8.25
  13.       underline       =   0   'False
  14.       italic          =   0   'False
  15.       strikethrough   =   0   'False
  16.    EndProperty
  17.    Height          =   5640
  18.    Left            =   600
  19.    LinkMode        =   1  'Source
  20.    LinkTopic       =   "Address"
  21.    ScaleHeight     =   5235
  22.    ScaleWidth      =   8325
  23.    Top             =   1185
  24.    Width           =   8445
  25.    Begin VB.CommandButton ImportDbase 
  26.       Caption         =   "Import Dbase"
  27.       Height          =   255
  28.       Left            =   120
  29.       TabIndex        =   26
  30.       Top             =   3960
  31.       Width           =   1935
  32.    End
  33.    Begin VB.TextBox AddressCtl 
  34.       Height          =   375
  35.       Index           =   1
  36.       Left            =   1320
  37.       LinkItem        =   " "
  38.       TabIndex        =   25
  39.       Top             =   120
  40.       Width           =   3375
  41.    End
  42.    Begin VB.CommandButton Command1 
  43.       Caption         =   "Clear"
  44.       Height          =   615
  45.       Left            =   2280
  46.       TabIndex        =   1
  47.       Top             =   4440
  48.       Width           =   1095
  49.    End
  50.    Begin VB.CommandButton FindPrevious 
  51.       Caption         =   "Find Previous"
  52.       Height          =   615
  53.       Left            =   6840
  54.       TabIndex        =   24
  55.       Top             =   4440
  56.       Width           =   1335
  57.    End
  58.    Begin VB.CommandButton FindNext 
  59.       Caption         =   "Find Next"
  60.       Height          =   615
  61.       Left            =   5520
  62.       TabIndex        =   23
  63.       Top             =   4440
  64.       Width           =   1335
  65.    End
  66.    Begin VB.CommandButton FindFirst 
  67.       Caption         =   "Find First"
  68.       Height          =   615
  69.       Left            =   4200
  70.       TabIndex        =   22
  71.       Top             =   4440
  72.       Width           =   1335
  73.    End
  74.    Begin VB.CommandButton Delete 
  75.       Caption         =   "Delete"
  76.       Height          =   615
  77.       Left            =   1200
  78.       TabIndex        =   21
  79.       Top             =   4440
  80.       Width           =   1095
  81.    End
  82.    Begin VB.CommandButton Add 
  83.       Caption         =   "Add"
  84.       Height          =   615
  85.       Left            =   120
  86.       TabIndex        =   20
  87.       Top             =   4440
  88.       Width           =   1095
  89.    End
  90.    Begin VB.TextBox AddressCtl 
  91.       Height          =   975
  92.       Index           =   10
  93.       Left            =   960
  94.       TabIndex        =   19
  95.       Top             =   2640
  96.       Width           =   6735
  97.    End
  98.    Begin VB.TextBox AddressCtl 
  99.       Height          =   375
  100.       Index           =   9
  101.       Left            =   6120
  102.       TabIndex        =   18
  103.       Top             =   2160
  104.       Width           =   1935
  105.    End
  106.    Begin VB.TextBox AddressCtl 
  107.       Height          =   375
  108.       Index           =   8
  109.       Left            =   3840
  110.       TabIndex        =   17
  111.       Top             =   2160
  112.       Width           =   1455
  113.    End
  114.    Begin VB.TextBox AddressCtl 
  115.       Height          =   375
  116.       Index           =   7
  117.       Left            =   960
  118.       TabIndex        =   16
  119.       Top             =   2160
  120.       Width           =   1575
  121.    End
  122.    Begin VB.TextBox AddressCtl 
  123.       Height          =   375
  124.       Index           =   6
  125.       Left            =   4920
  126.       TabIndex        =   15
  127.       Top             =   1560
  128.       Width           =   1935
  129.    End
  130.    Begin VB.TextBox AddressCtl 
  131.       Height          =   375
  132.       Index           =   5
  133.       Left            =   3120
  134.       TabIndex        =   14
  135.       Top             =   1560
  136.       Width           =   615
  137.    End
  138.    Begin VB.TextBox AddressCtl 
  139.       Height          =   375
  140.       Index           =   4
  141.       Left            =   840
  142.       TabIndex        =   13
  143.       Top             =   1560
  144.       Width           =   1575
  145.    End
  146.    Begin VB.TextBox AddressCtl 
  147.       Height          =   375
  148.       Index           =   3
  149.       Left            =   1320
  150.       TabIndex        =   12
  151.       Top             =   1080
  152.       Width           =   3375
  153.    End
  154.    Begin VB.TextBox AddressCtl 
  155.       Height          =   375
  156.       Index           =   2
  157.       Left            =   1320
  158.       LinkItem        =   " "
  159.       TabIndex        =   11
  160.       Top             =   600
  161.       Width           =   3375
  162.    End
  163.    Begin VB.Label Label11 
  164.       Caption         =   "Notes:"
  165.       Height          =   255
  166.       Left            =   240
  167.       TabIndex        =   10
  168.       Top             =   2760
  169.       Width           =   615
  170.    End
  171.    Begin VB.Label Label10 
  172.       Caption         =   "Work Phone:"
  173.       Height          =   255
  174.       Left            =   2640
  175.       TabIndex        =   9
  176.       Top             =   2280
  177.       Width           =   1215
  178.    End
  179.    Begin VB.Label Label9 
  180.       Caption         =   "Fax:"
  181.       Height          =   255
  182.       Left            =   5400
  183.       TabIndex        =   8
  184.       Top             =   2280
  185.       Width           =   495
  186.    End
  187.    Begin VB.Label Label8 
  188.       Caption         =   "Phone:"
  189.       Height          =   255
  190.       Left            =   240
  191.       TabIndex        =   7
  192.       Top             =   2280
  193.       Width           =   735
  194.    End
  195.    Begin VB.Label Label7 
  196.       Caption         =   "Zip Code:"
  197.       Height          =   255
  198.       Left            =   3840
  199.       TabIndex        =   6
  200.       Top             =   1680
  201.       Width           =   975
  202.    End
  203.    Begin VB.Label Label6 
  204.       Caption         =   "State:"
  205.       Height          =   255
  206.       Left            =   2520
  207.       TabIndex        =   5
  208.       Top             =   1680
  209.       Width           =   615
  210.    End
  211.    Begin VB.Label Label5 
  212.       Caption         =   "City:"
  213.       Height          =   255
  214.       Left            =   240
  215.       TabIndex        =   4
  216.       Top             =   1680
  217.       Width           =   495
  218.    End
  219.    Begin VB.Label Label4 
  220.       Caption         =   "Street 2:"
  221.       Height          =   255
  222.       Left            =   240
  223.       TabIndex        =   3
  224.       Top             =   1200
  225.       Width           =   975
  226.    End
  227.    Begin VB.Label Label3 
  228.       Caption         =   "Street:"
  229.       Height          =   255
  230.       Left            =   240
  231.       TabIndex        =   2
  232.       Top             =   720
  233.       Width           =   975
  234.    End
  235.    Begin VB.Label Label1 
  236.       Caption         =   "Name:"
  237.       Height          =   255
  238.       Left            =   240
  239.       TabIndex        =   0
  240.       Top             =   240
  241.       Width           =   975
  242.    End
  243. End
  244. Attribute VB_Name = "Address"
  245. Attribute VB_Creatable = False
  246. Attribute VB_Exposed = False
  247. Attribute VB_Description = "Main Form for the Address Book Application"
  248.     ' Since all fields are in a control array
  249. ' I will setup defines for accessing them
  250. Const NAME_FLD = 1
  251. Const STREET_FLD = 2
  252. Const STREET2_FLD = 3
  253. Const CITY_FLD = 4
  254. Const STATE_FLD = 5
  255. Const ZIP_FLD = 6
  256. Const PHONE_FLD = 7
  257. Const WORK_FLD = 8
  258. Const FAX_FLD = 9
  259. Const NOTES_FLD = 10
  260. Const FIRST_FLD = NAME_FLD
  261. Const LAST_FLD = NOTES_FLD
  262.  
  263. ' Objects and variables global to the application
  264. Dim Ws As Workspace
  265. Dim Db As Database
  266. Dim Tbl As Recordset
  267. Dim SearchSet As Recordset
  268. Dim MemoSet As Recordset
  269. Dim AddInfoAdd As Recordset
  270. Dim SrchValue As String
  271.  
  272. Private Sub Add_Click()
  273.     If Not AddressCtl(NAME_FLD) = "" Then
  274.         Tbl.AddNew
  275.         Tbl.Fields("Name").Value = AddressCtl(NAME_FLD)
  276.         Tbl.Fields("Street").Value = AddressCtl(STREET_FLD)
  277.         Tbl.Fields("Street2").Value = AddressCtl(STREET2_FLD)
  278.         Tbl.Fields("City").Value = AddressCtl(CITY_FLD)
  279.         Tbl.Fields("State").Value = AddressCtl(STATE_FLD)
  280.         Tbl.Fields("ZipCode").Value = AddressCtl(ZIP_FLD)
  281.         Tbl.Fields("Phone").Value = AddressCtl(PHONE_FLD)
  282.         Tbl.Fields("WorkPhone").Value = AddressCtl(WORK_FLD)
  283.         Tbl.Fields("Fax").Value = AddressCtl(FAX_FLD)
  284.         Tbl.Update
  285.         'Tbl.Fields("Notes").Value = AddressCtl(NOTES_FLD)
  286.         'Tbl.Update
  287.  
  288.         AddInfoAdd.AddNew
  289.         AddInfoAdd.Fields("Name").Value = AddressCtl(NAME_FLD)
  290.         AddInfoAdd.Fields("Notes").Value = AddressCtl(NOTES_FLD)
  291.         AddInfoAdd.Update
  292.     End If
  293. End Sub
  294.  
  295.  
  296.  
  297. Public Sub Command1_Click()
  298.     Dim i As Integer
  299.     For i = FIRST_FLD To LAST_FLD Step 1
  300.         AddressCtl(i) = ""
  301.     Next i
  302. End Sub
  303.  
  304. Private Sub Delete_Click()
  305.     If Not SearchSet.NoMatch Then
  306.        SearchSet.Delete
  307.        If Not MemoSet.NoMatch Then
  308.         MemoSet.Delete
  309.        End If
  310.        Command1_Click
  311.        FindFirst_Click
  312.     End If
  313. End Sub
  314.  
  315. Private Sub FillFormfromImport()
  316.     If Not SearchSet.NoMatch Then
  317.         AddressCtl(NAME_FLD) = ValidateRecordField("Name")
  318.         AddressCtl(STREET_FLD) = ValidateRecordField("Street")
  319.         AddressCtl(STREET2_FLD) = ValidateRecordField("Street2")
  320.         AddressCtl(CITY_FLD) = ValidateRecordField("City")
  321.         AddressCtl(STATE_FLD) = ValidateRecordField("State")
  322.         AddressCtl(ZIP_FLD) = ValidateRecordField("ZipCode")
  323.         AddressCtl(PHONE_FLD) = ValidateRecordField("Phone")
  324.         AddressCtl(WORK_FLD) = ValidateRecordField("WorkPhone")
  325.         AddressCtl(FAX_FLD) = ValidateRecordField("Fax")
  326.         AddressCtl(NOTES_FLD) = ValidateRecordField("Notes")
  327.     End If
  328.  
  329. End Sub
  330.  
  331. Private Sub FillFormfromRecord()
  332.     If Not SearchSet.NoMatch Then
  333.         AddressCtl(NAME_FLD) = ValidateRecordField("Name")
  334.         AddressCtl(STREET_FLD) = ValidateRecordField("Street")
  335.         AddressCtl(STREET2_FLD) = ValidateRecordField("Street2")
  336.         AddressCtl(CITY_FLD) = ValidateRecordField("City")
  337.         AddressCtl(STATE_FLD) = ValidateRecordField("State")
  338.         AddressCtl(ZIP_FLD) = ValidateRecordField("ZipCode")
  339.         AddressCtl(PHONE_FLD) = ValidateRecordField("Phone")
  340.         AddressCtl(WORK_FLD) = ValidateRecordField("WorkPhone")
  341.         AddressCtl(FAX_FLD) = ValidateRecordField("Fax")
  342.  
  343.         Dim AttachStatement As String
  344.         AttachStatement = "SELECT * FROM AddInfo WHERE Name = '" + AddressCtl(NAME_FLD) + "'"
  345.         Set MemoSet = Db.OpenRecordSet(AttachStatement, dbOpenDynaset)
  346.         If MemoSet.BOF = False Then
  347.             If MemoSet.Fields("Notes").Value > "" Then
  348.                 AddressCtl(NOTES_FLD) = MemoSet.Fields("Notes").Value
  349.             Else
  350.                 AddressCtl(NOTES_FLD) = ""
  351.             End If
  352.         End If
  353.     End If
  354. End Sub
  355.  
  356. Public Sub FindFirst_Click()
  357.     Dim Statement As String
  358.     Statement = "SELECT * FROM Address WHERE Name >= '" + AddressCtl(NAME_FLD) + "'"
  359.     Set SearchSet = Db.OpenRecordSet(Statement, dbOpenDynaset)
  360.     FillFormfromRecord
  361. End Sub
  362.  
  363. Private Sub FindNext_Click()
  364.     SearchSet.FindNext "Name > ' '"
  365.     FillFormfromRecord
  366. End Sub
  367.  
  368. Private Sub FindPrevious_Click()
  369.     SearchSet.FindPrevious "Name > ' '"
  370.     FillFormfromRecord
  371. End Sub
  372.  
  373. Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
  374.     Dim LWord, Msg, RWord, SpcPos   ' Declare variables.
  375.     SpcPos = InStr(1, CmdStr, " ")  ' Find space.
  376.     If SpcPos Then
  377.         LWord = Left(CmdStr, SpcPos - 1)    ' Get left word.
  378.         RWord = Right(CmdStr, Len(CmdStr) - SpcPos) ' Get right word.
  379.     End If
  380.     If 0 = StrComp(LWord, "Name", 1) Then
  381.       AddressCtl(NAME_FLD) = RWord
  382.       FindFirst_Click
  383.     End If
  384. End Sub
  385.  
  386.  
  387. Private Sub Form_Load()
  388.     Dim TblDef As New TableDef
  389.  
  390.     ' The first step is to create a default workspace to use for the app
  391.     Set Ws = DBEngine.Workspaces(0)
  392.     ' second open the access database
  393.     Set Db = Ws.OpenDatabase("\vb4\address\address.mdb")
  394.  
  395.     ' now attach the dbase IV table to the open db
  396.     TblDef.Connect = "dBASE IV;DATABASE=\VB4\ADDress"
  397.     TblDef.SourceTableName = "ADDINFO"   ' The name of the file.
  398.     TblDef.Name = "AddInfo"    ' The name in your database.
  399.     Db.TableDefs.Append TblDef  ' Create the link.
  400.  
  401.     ' now open a table info the main database
  402.     Set Tbl = Db.OpenRecordSet("Address", dbOpenTable)
  403.  
  404.     ' now we need to create a dynaset from the attached table
  405.     Statement = "SELECT * FROM Address WHERE Name >= '" + AddressCtl(NAME_FLD) + "'"
  406.     Set AddInfoAdd = Db.OpenRecordSet("SELECT * FROM AddInfo", dbOpenDynaset)
  407. End Sub
  408.  
  409.  
  410. Private Sub Form_Unload(Cancel As Integer)
  411.     Tbl.Close
  412.     AddInfoAdd.Close
  413.     Db.TableDefs.Delete "AddInfo"
  414. End Sub
  415.  
  416.  
  417.  
  418.  
  419. Private Sub ImportDbase_Click()
  420.     Dim dbdb As Database
  421.     Dim DTable As Recordset
  422.     Dim Statement As String
  423.  
  424.     Set dbdb = Ws.OpenDatabase("\vb4\address", False, False, "dBase IV")
  425.     Set DTable = dbdb.OpenRecordSet("Address", dbOpenTable)
  426.  
  427.     Statement = "SELECT * FROM Address"
  428.     Set SearchSet = dbdb.OpenRecordSet(Statement, dbOpenDynaset)
  429.     While Not SearchSet.EOF
  430.         FillFormfromImport
  431.         Add_Click
  432.         Command1_Click
  433.         SearchSet.MoveNext
  434.     Wend
  435.     dbdb.Close
  436.     DTable.Close
  437. End Sub
  438.  
  439. Private Function ValidateRecordField(Field As String) As String
  440.     If SearchSet.BOF = False Then
  441.         If SearchSet.Fields(Field).Value > "" Then
  442.             ValidateRecordField = SearchSet.Fields(Field).Value
  443.         Else
  444.             ValidateRecordField = ""
  445.         End If
  446.     End If
  447. End Function
  448.  
  449.  
  450.  
  451.