cs 8628 – n-tier client-serverarchitectures, dr. guimaraes propman mark johnson cs 8628, summer...

29
CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

Upload: cassandra-hodges

Post on 23-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

PropMan

Mark JohnsonCS 8628, Summer 2003

A Property Management Database Interface

Page 2: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Sequence of Tasks

• The following are the steps that I took in designing and creating this project.– Formulate and design a 3 table database.– Create the ERD, logical schema, and DDL.– Create the schema using Ultralite Schema Painter.– Visualize the needs and layout of the application.– Create the four forms of the application.– Add the controls and code to the Main, Properties,

Tenants, and Payments forms.– Create the server database using Sybase Central.– Create the publication using Interactive SQL.– Create the synchronization user using Interactive

SQL.

Page 3: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Sequence of Tasks Continued

– Create the synchronization subscription using Interactive SQL.

– Proceed to test and debug the application from within VB.

– Deploy the application to the Pocket PC.– Proceed with testing and debugging.– Create the synchronization scripts using

Sybase Central.– More testing and debugging.– Project completion.

Page 4: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Project Description

• PropMan is an application for entering, viewing, and modifying property management information on the Pocket PC, allowing multiple agents, with multiple Pocket PC’s, to all synchronize their remote databases with a central database containing all properties, tenants, and payments.

• The remote database, pm.udb, is synchronized with the server database, PropManDB.db, using Mobilink.

• Three forms contain information on rental property, tenants, and payments.

• The Properties form contains the property number, rental amount, the street address, city, state, and zip code. Properties can be added and deleted using this form, and the rental amount for a property can be modified.

Page 5: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Project Description Continued

• The Tenants form contains the tenant number, property number, tenant name, and phone number. Tenants can be added and deleted using this form, and the tenant’s name and phone number can be modified.

• The Payments form contains the payment number, tenant number, payment amount, and payment date. Payments can be added and deleted, but not modified.

• The application’s fourth form, the Main form, is the access point to the other three forms and also the form from which synchronization takes place.

Page 6: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

E-R Diagram

Rent PropNumCity

Zip

StateAddress

Property

PropNum Name

Phone TenantNum

Tenant

PaymentNum

TenantNum PayDate

PayAmt

Payment

0:N1:1

0:N

1:1

Page 7: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Logical Schema

• The Property table contains PropNum (Primary Key), Address, City, State, Zip, and Rent.• The Tenant Table contains TenantNum (Primary Key), PropNum (Foreign Key to the Property table),

Name, and Phone.• The Payment table contains PaymentNum (Primary Key), TenantNum (Foreign Key to the Tenant

table), PayDate, and PayAmt.

PropNum Address City State Zip Rent

TenantNum PropNum Name Phone

PaymentNum TenantNum PayDate PayAmt

Property

Tenant

Payment

Page 8: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Physical Schema (DDL)

Describe PropertyPropNum char(3) Not Null Primary KeyAddress char(25) Not NullCity char(15) Not NullState char(2) Not NullZip char(7) Not NullRent double Not Null

• The DDL are represented on this page and the next as SQL describe statements. All of each table’s columns are represented with their respective data type and precision, and whether they accept null values. The primary keys for each table are also shown.

Page 9: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Physical Schema (DDL) Continued

Describe TenantTenantNumchar(3) Not Null Primary Key

PropNum char(3) Not NullName char(15) Not NullPhone char(12)

Describe PaymentPaymentNum char(3) Not Null

Primary KeyTenantNum char(3) Not NullPayAmt double Not NullPayDate char(8) Not Null

Page 10: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Matrix: Forms vs. Tables

• The Main form does not access any tables.• The Properties form can create, read, update, and delete from the Property table.• The Tenants form can create, read, update, and delete from the Tenant table.• The Payments form can create, read, and delete from the Payment table.

Tables Forms

Property Tenant Payment

Main

Properties CRUD

Tenants CRUD

Payments CRD

Page 11: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

• The publication script was created as PM_Pub for the Property, Tenant, and Payment tables.• The synchronization user PM_User was created.• The synchronization subscription was created for PN_User to the PM_Pub publication. The

connection protocol is TCP/IP and the address is the local host address.

Publication Script, etc.

CREATE PUBLICATION PM_Pub {TABLE Property,TABLE Tenant,TABLE Payment

};

CREATE SYNCHRONIZATION USER PM_User;

CREATE SYNCHRONIZATION SUBSCRIPTIONTO PM_PubFOR PM_UserTYPE ‘tcpip’ADDRESS ‘host-localhost’

Page 12: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Synchronization Scripts Property Table Upload Scripts

– Upload_cursor:SELECT PropNum, Address, City, State, Zip, Rent

FROM Property– Upload_insert:

INSERT INTO Property(PropNum, Address, City, State, Zip, Rent)VALUES(?, ?, ?, ?, ?,?)

– Upload_delete:DELETE

FROM Property WHERE PropNum = ?– Upload_update:

UPDATE Property SET Rent = ?

WHERE PropNum = ?

The upload scripts for the Property table do the following during synchronization:• For Property inserts, PropNum, Address, City, Stat, Zip, and Rent are uploaded to the server database.• For Property deletes, the table entry associated with the primary key is deleted.• For Property updates, the Rent associated with the primary key is updated.

Page 13: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Synchronization Scripts Property Table Download Scripts

– Download_cursor:SELECT PropNum, Address, City, State, Zip, Rent

FROM Property– Download_insert:

INSERT INTO Property(PropNum, Address, City, State, Zip, Rent)VALUES(?, ?, ?, ?, ?,?)

– Download_delete:DELETE

FROM Property WHERE PropNum = ?– Download_update:

UPDATE Property SET Rent = ?

WHERE PropNum = ?

The download scripts for the Property table do the following during synchronization:• For Property inserts, PropNum, Address, City, Stat, Zip, and Rent are downloaded to the remote database.• For Property deletes, the table entry associated with the primary key is deleted.• For Property updates, the Rent associated with the primary key is updated.

Page 14: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Synchronization Scripts Tenant Table Upload Scripts

– Upload_cursor:SELECT TenantNum, Name, Phone, PropNum

FROM Tenant– Upload_insert:

INSERT INTO Tenant(TenantNum, Name, Phone, PropNum)VALUES(?, ?, ?, ?)

– Upload_delete:DELETE

FROM Tenant WHERE TenantNum = ?– Upload_update:

UPDATE Property SET Name = ?, Phone = ?

WHERE TenantNum = ?

The upload scripts for the Tenant table do the following during synchronization:• For Tenant inserts, TenantNum, PropNum, Name, and Phone are uploaded to the server database.• For Tenant deletes, the table entry associated with the primary key is deleted.• For Tenant updates, the Name and Phone associated with the primary key is updated.

Page 15: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Synchronization Scripts Tenant Table Download Scripts

– Download_cursor:SELECT TenantNum, Name, Phone, PropNum

FROM Tenant– Download_insert:

INSERT INTO Tenant(TenantNum, Name, Phone, PropNum)VALUES(?, ?, ?, ?)

– Download_delete:DELETE

FROM Tenant WHERE TenantNum = ?– Download_update:

UPDATE Property SET Name = ?, Phone = ?

WHERE TenantNum = ?

The download scripts for the tenant table do the following during synchronization:• For Tenant inserts, TenantNum, PropNum, Name, and Phone are downloaded to the remote database.• For Tenant deletes, the table entry associated with the primary key is deleted.• For Tenant updates, the Name and Phone associated with the primary key is updated.

Page 16: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Synchronization Scripts Payment Table Upload

– Upload_cursor:SELECT PaymentNum, PayAmt, PayDate, TenantNum

FROM Payment– Upload_insert:

INSERT INTO Payment(PaymentNum, PayAmt, PayDate, TenantNum)VALUES(?, ?, ?, ?)

– Upload_delete:DELETE

FROM Payment WHERE PaymentNum = ?

The upload scripts for the Payment table do the following during synchronization:• For Payment inserts, PaymentNum, TenantNum, PayAmt, and PayDate are uploaded to the server database.• For Payment deletes, the table entry associated with the primary key is deleted.

Page 17: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Synchronization Scripts Payment Table Download

– Download_cursor:SELECT PaymentNum, PayAmt, PayDate, TenantNum

FROM Payment– Download_insert:

INSERT INTO Payment(PaymentNum, PayAmt, PayDate, TenantNum)VALUES(?, ?, ?, ?)

– Download_delete:DELETE

FROM Payment WHERE PaymentNum = ?

The download scripts for the Payment table do the following during synchronization:• For Payment inserts, PaymentNum, TenantNum, PayAmt, and PayDate are downloaded to the remote database.• For Payment deletes, the table entry associated with the primary key is deleted.

Page 18: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Difficulties Encountered

• The majority of the difficulties that I encountered were because of my unfamiliarity with Visual Basic.

• Trying to format a double as currency, I added a component that is not supported by MobileVB. This led to MobileVB validation errors later because I had not removed the component even though I didn’t use it.

• I also had a complication error from reading a double in from a text box. Realizing that the string should be cast as a double, it took me a while to figure out the Visual Basic syntax for casting.

• I had one major difficulty that I spent a couple of days on. After my application was complete and working when run within Visual Basic, I deployed it to the Pocket PC. The application started on the Pocket PC, but quit when any of the buttons were clicked. By a process of elimination, commenting out sections of code and creating test applications, I was able to determine that the application failed when trying to connect to any of the tables in the remote database. I sought support from AppForge. They did not see anything wrong with the code and suggested that I put bebugging code into the application.

Page 19: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Difficulties Encountered Continued

• Meanwhile, I created more test applications and a new, totally different schema. These applications worked as expected on the Pocket PC. At that point, I recreated my original schema and tried it on the Pocket PC with the original application. The application did not work. I then created a new schema and tried it on the Pocket PC with the original application and it worked. Then I renamed the new schema to the name of the original schema and the application failed. That is when I realized that the name of the schema was causing the application to fail. I changed the name of the schema, originally PropMan.usm to pm.usm and the application worked as expected. On following up with Appforge, they could not explain the behavior, but thought that maybe PropMan was a reserved word for Mobilink. I am not certain that I agree with that explanation.

Page 20: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Screen Snapshot # 1

• The Main form contains buttons for accessing the other forms. It also contains buttons for exiting the application and synchronizing the database.

• The Properties form is for viewing, inserting, updating, and deleting property information. There is also a button for returning to the Main form.

• The Tenants form is for viewing, inserting, updating, and deleting tenant information. There is also a button for returning to the Main form.

• The Payments form is for viewing, inserting, and deleting payment information. There is also a button for returning to the Main form.

Page 21: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Screen Snapshot # 2

• Here are screen captures of Adaptive Server Anywhere and Mobilink running on the server.• The bottom picture is Mobilink during synchronization.

Page 22: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Screen Snapshot # 3

• Here are the different forms viewed on the PDA.

Page 23: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Code - Main Form

• btnDone_Click() – Closes the tables and then the connection to the database and ends the application.• btnPayments_Click() – Hides the Main form and shows the Payments form.• btnProp_Click() – Hides the Main form and shows the Properties form.• btnSync_Click() – Specifies the synchronization parameters and synchronizes the databases.• btnTenants_Click() – Hides the Main form and shows the Tenants form.• Form_Load() – Calls InitDB from the mdlPropMan module.

Option Explicit

Private Sub btnDone_Click() PropertyTable.Close TenantTable.Close PaymentTable.Close Connection.Close EndEnd Sub

Private Sub btnPayments_Click() MainForm.Hide PayForm.ShowEnd Sub

Private Sub btnProp_Click() MainForm.Hide PropForm.ShowEnd Sub

Private Sub btnSync_Click() With Connection.SyncParms .UserName = "PM_User" .Stream = ULStreamType.ulTCPIP .Version = "PM_Pub" .SendColumnNames = True End With Connection.Synchronize End Sub

Private Sub btnTenants_Click() MainForm.Hide TenForm.ShowEnd Sub

Sub Form_Load() InitDB End Sub

Page 24: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Code - mdlPropMan Module

• InitDB() – Sets the database connection parameters, uid, password, database name and schema name and connects to the database. If the database is not present, it creates it using the schema. It then opens the Payment, Tenant, and Property tables.

• GetError() – Gets the error number in case of connection error.

Option ExplicitPublic DatabaseMgr As New ULDatabaseManagerPublic Connection As ULConnectionPublic PropertyTable As ULTablePublic PaymentTable As ULTablePublic TenantTable As ULTable

Public Sub InitDB() Dim conn_parms As String Dim open_parms As String Dim schema_parms As String

Let conn_parms = "uid=dba;pwd=sql" Let open_parms = conn_parms & ";" & "FILE_NAME=\msacs\8628\project\pm.udb" Let schema_parms = open_parms & ";" & "SCHEMA_FILE=\msacs\8628\project\pm.usm" On Error Resume Next Set Connection = DatabaseMgr.OpenConnection(open_parms) If GetError = ulSQLE_DATABASE_NOT_FOUND Then MsgBox "Database Not Found!" MsgBox "Parms = " & open_parms Err.Clear Set Connection = DatabaseMgr.CreateDatabase(schema_parms)

If GetError <> ulSQLE_NOERROR Then MsgBox "Error creating database file: " & Err.Description MsgBox "Parms = " & schema_parms End End If End If

Set PaymentTable = Connection.GetTable("Payment") PaymentTable.Open Set TenantTable = Connection.GetTable("Tenant") TenantTable.Open Set PropertyTable = Connection.GetTable("Property") PropertyTable.OpenEnd Sub

Public Function GetError() As ULSQLCode GetError = Err.NumberEnd Function

Page 25: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Code Property, Tenant, and Payment Forms

• The code for the Property, Tenant, and Payment forms are almost the same, except for working with different tables and different columns.

• btnInsert_Click() – inserts values input from the form into the appropriate columns of the table.

Option ExplicitPrivate Sub btnInsert_Click() Dim PropNum As String Dim Rent As Double Dim Address As String Dim city As String Dim State As String Dim Zip As String Let PropNum = txtPNum.Text Let Rent = CDbl(txtRent.Text) Let Address = txtAddr.Text Let city = txtCity.Text Let State = txtState.Text Let Zip = txtZip.Text

On Error GoTo InsertError

PropertyTable.InsertBegin PropertyTable.Column("PropNum").StringValue = _ PropNum PropertyTable.Column("Rent").DoubleValue = _ Rent PropertyTable.Column("Address").StringValue = _ Address PropertyTable.Column("City").StringValue = _ city PropertyTable.Column("State").StringValue = _ State PropertyTable.Column("Zip").StringValue = _ Zip

PropertyTable.Insert PropertyTable.MoveLast DisplayCurrentRow Exit Sub

InsertError: MsgBox "Error: " & CStr(Err.Description)End Sub

Page 26: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Code - ContinuedProperty, Tenant, and Payment Forms

• btnReturn_Click() – Hides the current form and shows the Main form.• Form_Load() – Moves to the first row in the table or moves before the first row if there are zero rows.• Form_Activiate() – Displays the current row.• btnNext_Click() – Moves to the next row.• btnPrevious_Click() – Moves to the previous row.• BtnDelete_Click() – Deletes the current row.

Private Sub btnReturn_Click() PropForm.Hide MainForm.ShowEnd Sub

Sub Form_Load() PropertyTable.MoveBeforeFirst If PropertyTable.RowCount > 0 Then PropertyTable.MoveFirst End If If Err.Number <> ULSQLCode.ulSQLE_NOERROR Then MsgBox Err.Description End IfEnd Sub

Private Sub Form_Activate() DisplayCurrentRowEnd Sub

Private Sub btnNext_Click() If Not PropertyTable.MoveNext Then PropertyTable.MoveLast End If DisplayCurrentRowEnd Sub

Private Sub btnPrevious_Click() If Not PropertyTable.MovePrevious Then PropertyTable.MoveFirst End If DisplayCurrentRowEnd Sub

Private Sub btnDelete_Click() If PropertyTable.RowCount = 0 Then Exit Sub End If PropertyTable.Delete PropertyTable.MoveRelative 0 DisplayCurrentRowEnd Sub

Page 27: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Code - ContinuedProperty, Tenant, and Payment Forms

• btnUpdate_Click() - updates values input from the form in the appropriate columns of the table.– The Payment form does not have the ability to update.

Private Sub btnUpdate_Click() Dim PropNum As String Dim Rent As Double Dim Address As String Dim city As String Dim State As String Dim Zip As String Let PropNum = txtPNum.Text Let Rent = CDbl(txtRent.Text) Let Address = txtAddr.Text Let city = txtCity.Text Let State = txtState.Text Let Zip = txtZip.Text On Error GoTo UpdateError

PropertyTable.UpdateBegin PropertyTable.Column("PropNum").StringValue = _ PropNum PropertyTable.Column("Rent").DoubleValue = _ Rent PropertyTable.Column("Address").StringValue = _ Address PropertyTable.Column("City").StringValue = _ city PropertyTable.Column("State").StringValue = _ State PropertyTable.Column("Zip").StringValue = _ Zip PropertyTable.Update DisplayCurrentRow Exit Sub

UpdateError: MsgBox "Error: " & CStr(Err.Description)End Sub

Page 28: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Code - ContinuedProperty, Tenant, and Payment Forms

• DisplayCurrentRow() – Displays columns from the database in the appropriate text boxes on the form. If there are no rows in the table, the text boxes are displayed as blank.

Private Sub DisplayCurrentRow() If PropertyTable.RowCount = 0 Then txtPNum.Text = "" txtRent.Text = "" txtAddr.Text = "" txtCity.Text = "" txtState.Text = "" txtZip.Text = ""

Else txtPNum.Text = _ PropertyTable.Column("PropNum").StringValue txtRent.Text = _ PropertyTable.Column("Rent").DoubleValue txtAddr.Text = _ PropertyTable.Column("Address").StringValue txtCity.Text = _ PropertyTable.Column("City").StringValue txtState.Text = _ PropertyTable.Column("State").StringValue txtZip.Text = _ PropertyTable.Column("Zip").StringValue End IfEnd Sub

Page 29: CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes PropMan Mark Johnson CS 8628, Summer 2003 A Property Management Database Interface

CS 8628 – n-tier Client-ServerArchitectures, Dr. Guimaraes

Conclusion

• Mobilink is a flexible and fairly straight forward means of synchronizing databases between a remote PDA and a server. Although at times confusing, the tools integrated into Visual Basic by Appforge vastly simplify development for the Pocket PC. With these tools, and the ease of development, we are likely to see a great number of applications being developed for PDA’s and the number of PDA’s produced and sold should vastly rise.

• My experience with these programs has shown that the development time for mobile applications can be greatly reduced by the simplicity of use that they provide. I had no experience with VB or DBMS and was able to develop the PropMan application in a reasonable timeframe with limited instruction.