|
Subject:
|
save, edit, and delete
|
|
Posted By:
|
sime_tyres
|
Post Date:
|
8/24/2006 1:40:42 PM
|
i need help to save, edit, and delete from database, using form in VB 6.0. the type of database is MS Access. my database name voting.mdb, locate C:\Voting system\voting.mdb.please help me, how i want to add n save the data from the texfield into the attribute in the voting.mdb.
|
|
Reply By:
|
jorgefejr
|
Reply Date:
|
9/1/2006 9:45:29 PM
|
Hi sime tyres!
I hope this will be of help. Below is a sample vb6 class called clsDrivers. It is part of the DB_Server.vbp (when compiled becomes DB_Server.dll). I write vb6 programs using the 3-tier approach. The following functions are called by the procedures in the DB_Client.vbp (when compiled becomes the DB_Client.exe).
Option Explicit Dim strSQL As String ' declare a string Dim conDB As ADODB.Connection ' declare a database connection
Private Sub Class_Initialize() Set conDB = New ADODB.Connection 'conDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ ' "Data Source =C:\LUECO\MotorPool.mdb" conDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source =D:\LUECO\MotorPool.mdb" End Sub
Private Sub Class_Terminate() Set conDB = Nothing End Sub
Public Function Add_Driver(strID As String, strLast As String, strFirst As _ String, strLicense As String, dtExpiry As Date) As Boolean Dim rsDrivers As New ADODB.Recordset
On Error GoTo ErrHandler
conDB.Open conDB.CursorLocation = adUseServer
strSQL = "SELECT * FROM drivers WHERE 1=2" rsDrivers.LockType = adLockOptimistic rsDrivers.CursorType = adOpenKeyset rsDrivers.Open strSQL, conDB
conDB.BeginTrans With rsDrivers .AddNew .Fields("Driver_ID") = strID .Fields("Last_Name") = strLast .Fields("First_Name") = strFirst .Fields("License_No") = strLicense .Fields("Expiry_Date") = dtExpiry .Update End With conDB.CommitTrans Add_Driver = True conDB.Close Exit Function
ErrHandler: Debug.Print "Error No. : " & Err.Number Debug.Print "Description: " & Err.Description conDB.RollbackTrans conDB.Close Add_Driver = False End Function
Public Function Update_Driver(strID As String, strLast As String, strFirst As _ String, strLicense As String, dtExpiry As Date) As Boolean Dim rsDrivers As New ADODB.Recordset
On Error GoTo ErrHandler
conDB.Open conDB.CursorLocation = adUseServer
strSQL = "SELECT * FROM drivers WHERE Driver_ID ='" & strID & "'" rsDrivers.LockType = adLockOptimistic rsDrivers.CursorType = adOpenKeyset rsDrivers.Open strSQL, conDB
conDB.BeginTrans With rsDrivers .Fields("Last_Name") = strLast .Fields("First_Name") = strFirst .Fields("License_No") = strLicense .Fields("Expiry_Date") = dtExpiry .Update End With conDB.CommitTrans Update_Driver = True conDB.Close Exit Function
ErrHandler: Debug.Print "Error No. : " & Err.Number Debug.Print "Description: " & Err.Description conDB.RollbackTrans conDB.Close Update_Driver = False End Function
Public Function Delete_Driver(strID As String) As Boolean On Error GoTo ErrHandler
conDB.Open conDB.CursorLocation = adUseServer
strSQL = "DELETE FROM drivers WHERE Driver_ID ='" & strID & "'" conDB.BeginTrans conDB.Execute strSQL conDB.CommitTrans Delete_Driver = True conDB.Close Exit Function
ErrHandler: Debug.Print "Error No. : " & Err.Number Debug.Print "Description: " & Err.Description conDB.RollbackTrans conDB.Close Delete_Driver = False End Function
Public Function Select_Driver(Optional strID As String) As ADODB.Recordset Dim rsDrivers As New ADODB.Recordset
On Error GoTo ErrHandler
conDB.Open conDB.CursorLocation = adUseServer
strSQL = "SELECT * FROM drivers" If Trim("" & strID) <> "" Then strSQL = strSQL & " WHERE Driver_ID ='" & strID & "'" End If strSQL = strSQL & " ORDER BY Last_Name, First_Name" rsDrivers.LockType = adLockOptimistic rsDrivers.CursorType = adOpenKeyset rsDrivers.Open strSQL, conDB Set Select_Driver = rsDrivers Exit Function
ErrHandler: Debug.Print "Error No. : " & Err.Number Debug.Print "Description: " & Err.Description conDB.Close Set Select_Driver = Nothing End Function
Public Function Select_Driver_ByName(strLast As String, strFirst As String) As _ ADODB.Recordset Dim rsDrivers As New ADODB.Recordset
On Error GoTo ErrHandler
conDB.Open conDB.CursorLocation = adUseServer
strSQL = "SELECT * FROM drivers" strSQL = strSQL & " WHERE Last_Name ='" & strLast & "'" strSQL = strSQL & " AND First_Name ='" & strFirst & "'" strSQL = strSQL & " ORDER BY Last_Name, First_Name" rsDrivers.LockType = adLockOptimistic rsDrivers.CursorType = adOpenKeyset rsDrivers.Open strSQL, conDB Set Select_Driver_ByName = rsDrivers Exit Function
ErrHandler: Debug.Print "Error No. : " & Err.Number Debug.Print "Description: " & Err.Description conDB.Close Set Select_Driver_ByName = Nothing End Function
'------------------------------------------ this is the frmDrivers of the DB_Client.vbp it uses the clsDrivers of the DB_Server.vbp to perform the tasks. ------------------------------------------- Option Explicit Dim iCurrentState As Integer
Private Sub cmdAdd_Click() iCurrentState = NOW_ADDING clearFields lockFields (False) txtDriverID.SetFocus cmdAdd.Enabled = False cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = False cmdOK.Enabled = True cmdCancel.Enabled = True End Sub
Private Sub cmdCancel_Click() iCurrentState = NOW_IDLE clearFields lockFields (True) cmdAdd.Enabled = True cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = True cmdOK.Enabled = False cmdCancel.Enabled = False End Sub
Private Sub cmdDelete_Click() Dim strWarning As String
strWarning = "Deleting this record will remove it permanently" & vbCrLf & _ "from the database. Are you sure you want to proceed?" If MsgBox(strWarning, vbYesNo, progname) = vbYes Then deleteDriver End If End Sub
Private Sub cmdEdit_Click() iCurrentState = NOW_EDITING lockFields (False) txtDriverID.Locked = True txtDriverID.BackColor = vbCyan txtLastName.SetFocus cmdAdd.Enabled = False cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = False cmdOK.Enabled = True cmdCancel.Enabled = True End Sub
Private Sub cmdExit_Click() Unload Me End Sub
Private Sub cmdOK_Click() If validEntries() Then If iCurrentState = NOW_ADDING Then If noDupe() Then saveNewDriver Else MsgBox "Duplicate driver record id found.", vbInformation, progname txtDriverID.SetFocus Exit Sub End If ElseIf iCurrentState = NOW_EDITING Then updateDriver End If End If End Sub
Private Sub Form_Activate() iCurrentState = NOW_IDLE clearFields lockFields (True) populateDrivers cmdAdd.Enabled = True cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = True cmdOK.Enabled = False cmdCancel.Enabled = False End Sub
Private Sub Form_Load() iCurrentState = NOW_IDLE End Sub
Private Sub lvDrivers_Click() If lvDrivers.ListItems.Count >= 1 Then getDriver Else MsgBox "There are no driver records listed yet.", vbInformation, progname End If End Sub
Private Sub txtDriverID_GotFocus() If iCurrentState = NOW_EDITING Then MsgBox "This is locked when program is in edit mode." & vbCrLf & _ "Change/modification not allowed.", vbInformation, progname Exit Sub End If hiLite End Sub
Private Sub txtDriverID_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub
Private Sub txtFirstName_GotFocus() hiLite End Sub
Private Sub txtFirstName_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub
Private Sub txtLastName_GotFocus() hiLite End Sub
Private Sub txtLastName_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub
Private Function noDupe() As Boolean Dim objMpool As New MPool_Server.clsDrivers Dim rsRec As New ADODB.Recordset
Set rsRec = objMpool.Select_Driver(Trim(txtDriverID.Text)) If rsRec.EOF And rsRec.BOF Then Set rsRec = Nothing Set objMpool = Nothing noDupe = True Else Set rsRec = Nothing Set objMpool = Nothing noDupe = False End If End Function
Private Function validEntries() As Boolean validEntries = True If iCurrentState = NOW_ADDING Then If txtDriverID.Text = "" Then validEntries = False txtDriverID.SetFocus MsgBox "Driver id must not be blank or empty.", vbInformation, progname Exit Function End If End If If txtLastName.Text = "" Then validEntries = False txtLastName.SetFocus MsgBox "Driver last name must not be blank or empty.", vbInformation, progname Exit Function End If If txtFirstName.Text = "" Then validEntries = False txtFirstName.SetFocus MsgBox "Driver first name must not be blank or empty.", vbInformation, progname Exit Function End If End Function
Private Sub saveNewDriver() Dim objMpool As New MPool_Server.clsDrivers Dim bSaved As Boolean
iCurrentState = NOW_SAVING bSaved = objMpool.Add_Driver(Trim(txtDriverID.Text), Trim(txtLastName.Text), _ Trim(txtFirstName.Text), Trim(txtLicNum.Text), CDate(txtLicExpiry.Text)) If bSaved = True Then MsgBox "Driver record added to database.", vbInformation, progname Else MsgBox "Driver record was not added to database.", vbInformation, progname End If Set objMpool = Nothing
iCurrentState = NOW_IDLE clearFields lockFields (True) populateDrivers cmdAdd.Enabled = True cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = True cmdOK.Enabled = False cmdCancel.Enabled = False End Sub
Private Sub updateDriver() Dim objMpool As New MPool_Server.clsDrivers Dim bSaved As Boolean
iCurrentState = NOW_SAVING bSaved = objMpool.Update_Driver(Trim(txtDriverID.Text), Trim(txtLastName.Text), _ Trim(txtFirstName.Text), Trim(txtLicNum.Text), CDate(txtLicExpiry.Text)) If bSaved = True Then MsgBox "Driver record successfullly updated.", vbInformation, progname Else MsgBox "Driver record update failed.", vbInformation, progname End If Set objMpool = Nothing
iCurrentState = NOW_IDLE clearFields lockFields (True) populateDrivers cmdAdd.Enabled = True cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = True cmdOK.Enabled = False cmdCancel.Enabled = False End Sub
Private Sub deleteDriver() Dim objMpool As New MPool_Server.clsDrivers Dim bDeleted As Boolean
iCurrentState = NOW_DELETING bDeleted = objMpool.Delete_Driver(Trim(txtDriverID.Text)) If bDeleted = True Then MsgBox "Driver record successfullly removed.", vbInformation, progname Else MsgBox "Driver record delete failed.", vbInformation, progname End If Set objMpool = Nothing
iCurrentState = NOW_IDLE clearFields lockFields (True) populateDrivers cmdAdd.Enabled = True cmdEdit.Enabled = False cmdDelete.Enabled = False cmdExit.Enabled = True cmdOK.Enabled = False cmdCancel.Enabled = False End Sub
Private Sub populateDrivers() Dim objMpool As New MPool_Server.clsDrivers Dim rsRec As New ADODB.Recordset Dim itmRec As ListItem
lvDrivers.ListItems.Clear
Set rsRec = objMpool.Select_Driver If rsRec.EOF And rsRec.BOF Then Set rsRec = Nothing Set objMpool = Nothing MsgBox "No driver records found.", vbInformation, progname Exit Sub End If
rsRec.MoveFirst While Not rsRec.EOF Set itmRec = lvDrivers.ListItems.Add _ (, , rsRec("Driver_ID")) itmRec.SubItems(1) = rsRec("Last_Name") itmRec.SubItems(2) = rsRec("First_Name") rsRec.MoveNext Wend
Set rsRec = Nothing Set objMpool = Nothing End Sub
Private Sub getDriver() Dim objMpool As New MPool_Server.clsDrivers Dim rsRec As New ADODB.Recordset
Set rsRec = objMpool.Select_Driver(lvDrivers.SelectedItem.Text) If rsRec.EOF And rsRec.BOF Then Set rsRec = Nothing Set objMpool = Nothing MsgBox "Selected driver record not found.", vbInformation, progname Exit Sub End If
txtDriverID.Text = rsRec("Driver_ID") txtLastName.Text = rsRec("Last_Name") txtFirstName.Text = rsRec("First_Name") txtLicNum.Text = rsRec("License_No") txtLicExpiry.Text = Format(rsRec("Expiry_Date"), "Short Date")
Set rsRec = Nothing Set objMpool = Nothing
showPic
cmdAdd.Enabled = False cmdEdit.Enabled = True cmdDelete.Enabled = True cmdExit.Enabled = True cmdOK.Enabled = False cmdCancel.Enabled = False End Sub
Private Sub txtLicExpiry_GotFocus() If IsDate(txtLicExpiry.Text) Then txtLicExpiry.Text = Format(CDate(txtLicExpiry.Text), "Short Date") End If hiLite End Sub
Private Sub txtLicExpiry_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub
Private Sub txtLicExpiry_LostFocus() If IsDate(txtLicExpiry.Text) Then txtLicExpiry.Text = Format(CDate(txtLicExpiry.Text), "Short Date") End If End Sub
Private Sub txtLicNum_GotFocus() hiLite End Sub
Private Sub txtLicNum_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub
Private Sub showPic() Dim objFS As New FileSystemObject Dim strFile As String Dim strPath As String
strFile = App.Path & "\DriverPics\" & Trim(txtDriverID.Text) & ".JPG"
If objFS.FileExists(strFile) Then imgDriverPic.Picture = LoadPicture(strFile) lblDriverPic.Caption = "Driver's Picture" Else imgDriverPic.Picture = LoadPicture(App.Path & "\DriverPics\NoPic.JPG") lblDriverPic.Caption = "No Picture" End If End Sub
Go through the code, you will see how the task is done.
If yuu are not familiar with the 3-tier approach, let me know. I'll try to help.
JFe'
|
|