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 (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1994-10-10  |  13.4 KB  |  417 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. Attribute VB_Name = "Address"
  244. Attribute VB_Creatable = False
  245. Attribute VB_Exposed = False
  246. Attribute VB_Description = "Main Form for the Address Book Application"
  247.     ' Since all fields are in a control array
  248. ' I will setup defines for accessing them
  249. Const NAME_FLD = 1
  250. Const STREET_FLD = 2
  251. Const STREET2_FLD = 3
  252. Const CITY_FLD = 4
  253. Const STATE_FLD = 5
  254. Const ZIP_FLD = 6
  255. Const PHONE_FLD = 7
  256. Const WORK_FLD = 8
  257. Const FAX_FLD = 9
  258. Const NOTES_FLD = 10
  259. Const FIRST_FLD = NAME_FLD
  260. Const LAST_FLD = NOTES_FLD
  261. ' Objects and variables global to the application
  262. Dim Ws As Workspace
  263. Dim Db As Database
  264. Dim Tbl As Recordset
  265. Dim SearchSet As Recordset
  266. Dim MemoSet As Recordset
  267. Dim AddInfoAdd As Recordset
  268. Dim SrchValue As String
  269. Private Sub Add_Click()
  270.     If Not AddressCtl(NAME_FLD) = "" Then
  271.         Tbl.AddNew
  272.         Tbl.Fields("Name").Value = AddressCtl(NAME_FLD)
  273.         Tbl.Fields("Street").Value = AddressCtl(STREET_FLD)
  274.         Tbl.Fields("Street2").Value = AddressCtl(STREET2_FLD)
  275.         Tbl.Fields("City").Value = AddressCtl(CITY_FLD)
  276.         Tbl.Fields("State").Value = AddressCtl(STATE_FLD)
  277.         Tbl.Fields("ZipCode").Value = AddressCtl(ZIP_FLD)
  278.         Tbl.Fields("Phone").Value = AddressCtl(PHONE_FLD)
  279.         Tbl.Fields("WorkPhone").Value = AddressCtl(WORK_FLD)
  280.         Tbl.Fields("Fax").Value = AddressCtl(FAX_FLD)
  281.         Tbl.Update
  282.         'Tbl.Fields("Notes").Value = AddressCtl(NOTES_FLD)
  283.         'Tbl.Update
  284.         AddInfoAdd.AddNew
  285.         AddInfoAdd.Fields("Name").Value = AddressCtl(NAME_FLD)
  286.         AddInfoAdd.Fields("Notes").Value = AddressCtl(NOTES_FLD)
  287.         AddInfoAdd.Update
  288.     End If
  289. End Sub
  290. Public Sub Command1_Click()
  291.     Dim i As Integer
  292.     For i = FIRST_FLD To LAST_FLD Step 1
  293.         AddressCtl(i) = ""
  294.     Next i
  295. End Sub
  296. Private Sub Delete_Click()
  297.     If Not SearchSet.NoMatch Then
  298.        SearchSet.Delete
  299.        If Not MemoSet.NoMatch Then
  300.         MemoSet.Delete
  301.        End If
  302.        Command1_Click
  303.        FindFirst_Click
  304.     End If
  305. End Sub
  306. Private Sub FillFormfromImport()
  307.     If Not SearchSet.NoMatch Then
  308.         AddressCtl(NAME_FLD) = ValidateRecordField("Name")
  309.         AddressCtl(STREET_FLD) = ValidateRecordField("Street")
  310.         AddressCtl(STREET2_FLD) = ValidateRecordField("Street2")
  311.         AddressCtl(CITY_FLD) = ValidateRecordField("City")
  312.         AddressCtl(STATE_FLD) = ValidateRecordField("State")
  313.         AddressCtl(ZIP_FLD) = ValidateRecordField("ZipCode")
  314.         AddressCtl(PHONE_FLD) = ValidateRecordField("Phone")
  315.         AddressCtl(WORK_FLD) = ValidateRecordField("WorkPhone")
  316.         AddressCtl(FAX_FLD) = ValidateRecordField("Fax")
  317.         AddressCtl(NOTES_FLD) = ValidateRecordField("Notes")
  318.     End If
  319. End Sub
  320. Private Sub FillFormfromRecord()
  321.     If Not SearchSet.NoMatch Then
  322.         AddressCtl(NAME_FLD) = ValidateRecordField("Name")
  323.         AddressCtl(STREET_FLD) = ValidateRecordField("Street")
  324.         AddressCtl(STREET2_FLD) = ValidateRecordField("Street2")
  325.         AddressCtl(CITY_FLD) = ValidateRecordField("City")
  326.         AddressCtl(STATE_FLD) = ValidateRecordField("State")
  327.         AddressCtl(ZIP_FLD) = ValidateRecordField("ZipCode")
  328.         AddressCtl(PHONE_FLD) = ValidateRecordField("Phone")
  329.         AddressCtl(WORK_FLD) = ValidateRecordField("WorkPhone")
  330.         AddressCtl(FAX_FLD) = ValidateRecordField("Fax")
  331.         Dim AttachStatement As String
  332.         AttachStatement = "SELECT * FROM AddInfo WHERE Name = '" + AddressCtl(NAME_FLD) + "'"
  333.         Set MemoSet = Db.OpenRecordSet(AttachStatement, dbOpenDynaset)
  334.         If MemoSet.BOF = False Then
  335.             If MemoSet.Fields("Notes").Value > "" Then
  336.                 AddressCtl(NOTES_FLD) = MemoSet.Fields("Notes").Value
  337.             Else
  338.                 AddressCtl(NOTES_FLD) = ""
  339.             End If
  340.         End If
  341.     End If
  342. End Sub
  343. Public Sub FindFirst_Click()
  344.     Dim Statement As String
  345.     Statement = "SELECT * FROM Address WHERE Name >= '" + AddressCtl(NAME_FLD) + "'"
  346.     Set SearchSet = Db.OpenRecordSet(Statement, dbOpenDynaset)
  347.     FillFormfromRecord
  348. End Sub
  349. Private Sub FindNext_Click()
  350.     SearchSet.FindNext "Name > ' '"
  351.     FillFormfromRecord
  352. End Sub
  353. Private Sub FindPrevious_Click()
  354.     SearchSet.FindPrevious "Name > ' '"
  355.     FillFormfromRecord
  356. End Sub
  357. Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
  358.     Dim LWord, Msg, RWord, SpcPos   ' Declare variables.
  359.     SpcPos = InStr(1, CmdStr, " ")  ' Find space.
  360.     If SpcPos Then
  361.         LWord = Left(CmdStr, SpcPos - 1)    ' Get left word.
  362.         RWord = Right(CmdStr, Len(CmdStr) - SpcPos) ' Get right word.
  363.     End If
  364.     If 0 = StrComp(LWord, "Name", 1) Then
  365.       AddressCtl(NAME_FLD) = RWord
  366.       FindFirst_Click
  367.     End If
  368. End Sub
  369. Private Sub Form_Load()
  370.     Dim TblDef As New TableDef
  371.     ' The first step is to create a default workspace to use for the app
  372.     Set Ws = DBEngine.Workspaces(0)
  373.     ' second open the access database
  374.     Set Db = Ws.OpenDatabase("\vb4\address\address.mdb")
  375.     ' now attach the dbase IV table to the open db
  376.     TblDef.Connect = "dBASE IV;DATABASE=\VB4\ADDress"
  377.     TblDef.SourceTableName = "ADDINFO"   ' The name of the file.
  378.     TblDef.Name = "AddInfo"    ' The name in your database.
  379.     Db.TableDefs.Append TblDef  ' Create the link.
  380.     ' now open a table info the main database
  381.     Set Tbl = Db.OpenRecordSet("Address", dbOpenTable)
  382.     ' now we need to create a dynaset from the attached table
  383.     Statement = "SELECT * FROM Address WHERE Name >= '" + AddressCtl(NAME_FLD) + "'"
  384.     Set AddInfoAdd = Db.OpenRecordSet("SELECT * FROM AddInfo", dbOpenDynaset)
  385. End Sub
  386. Private Sub Form_Unload(Cancel As Integer)
  387.     Tbl.Close
  388.     AddInfoAdd.Close
  389.     Db.TableDefs.Delete "AddInfo"
  390. End Sub
  391. Private Sub ImportDbase_Click()
  392.     Dim dbdb As Database
  393.     Dim DTable As Recordset
  394.     Dim Statement As String
  395.     Set dbdb = Ws.OpenDatabase("\vb4\address", False, False, "dBase IV")
  396.     Set DTable = dbdb.OpenRecordSet("Address", dbOpenTable)
  397.     Statement = "SELECT * FROM Address"
  398.     Set SearchSet = dbdb.OpenRecordSet(Statement, dbOpenDynaset)
  399.     While Not SearchSet.EOF
  400.         FillFormfromImport
  401.         Add_Click
  402.         Command1_Click
  403.         SearchSet.MoveNext
  404.     Wend
  405.     dbdb.Close
  406.     DTable.Close
  407. End Sub
  408. Private Function ValidateRecordField(Field As String) As String
  409.     If SearchSet.BOF = False Then
  410.         If SearchSet.Fields(Field).Value > "" Then
  411.             ValidateRecordField = SearchSet.Fields(Field).Value
  412.         Else
  413.             ValidateRecordField = ""
  414.         End If
  415.     End If
  416. End Function
  417.