Hi guys. I got a unbounded form that is used to update/delete/add records. It also has navigation buttons called next and previous. I have the following problem and do not know how to fix it. I be happy if some one help me fix them. Thanks
http://i5.photobucket.com/albums/y18...7/editform.jpg
===> Picture of unbounded form
1) When I press add button and if I try not to add and press cancel. The old value does not get posted back into text box! But if I click on edit button and try not edit and press cancel button the old value get posted. I want the old values get posted to text box when a user presses cancel after he clicked on add button.
2) When I click on edit or add button then if I press next it tells me to either save or cancel. When I press on cancel button and then press next again. I get same prompt asking me to either save or cancel again!
Code:Option Compare Database Option Explicit Sub clearTextBoxes() ''clearing the tow texboxes txtCompanyName and txtCustomerId Me.customerNumber.Value = "" Me.customerName.Value = "" End Sub Sub getReadyForAnAddOperation() Me.cmdSave__.Enabled = True Me.cmdSave__.SetFocus Me.cmdCancel.Enabled = True Me.cmdAdd__.Enabled = False Me.cmdEdit.Enabled = False Me.cmdDelete.Enabled = False End Sub Sub stateOnLoad() Me.customerName.SetFocus Me.cmdCancel.Enabled = True Me.cmdSave__.Enabled = False Me.cmdEdit.Enabled = True Me.cmdAdd__.Enabled = True '''disableing the cancel and save button on load '''Me.cmdCancel.Enabled = False '''Me.cmdSave__.Enabled = False End Sub 'declaring subrotine Sub FillFeilds() Me.customerNumber = myRS.Fields("customerno") Me.customerName = myRS.Fields("customername") End Sub Private Sub cmdAdd___Click() clearTextBoxes getReadyForAnAddOperation pbAddingARecord = True '''changing the value of this boolean variable myRS.AddNew End Sub Private Sub cmdCancel_Click() FillFeilds stateOnLoad End Sub Private Sub cmdDelete_Click() Dim x As Variant x = MsgBox(" You are abut to delete " & Me.customerName & " from this table - proceed ? ", vbOKCancel) If x = 1 Then With myRS .Delete .MoveFirst FillFeilds stateOnLoad End With End If End Sub Private Sub cmdEdit_Click() ''clearTextBoxes getReadyForAnAddOperation pbEditingARecord = True '''changing the value of this boolean variable End Sub Private Sub cmdMoveFirst_Click() myRS.MoveFirst FillFeilds End Sub Private Sub cmdMoveLast_Click() myRS.MoveLast FillFeilds End Sub Private Sub cmdMoveNext_Click() If pbAddingARecord = True Or pbEditingARecord = True Then MsgBox ("Please save or cancel changes first ") Exit Sub End If myRS.MoveNext If myRS.EOF Then MsgBox ("Last Record") myRS.MovePrevious End If FillFeilds End Sub Private Sub cmdMovePreviouse_Click() myRS.MovePrevious If myRS.BOF Then MsgBox (" First record") myRS.MoveNext End If FillFeilds End Sub Private Sub cmdSave___Click() If pbAddingARecord = True Then myRS.AddNew End If If pbEditingARecord = True Then myRS.Edit End If '''inserting the value of textboxes to the table fields.feeding the date to record set myRS.Fields("customerno").Value = Me.customerNumber.Value myRS.Fields("customername").Value = Me.customerName.Value '''calling update method. it comittes the changes myRS.Update pbAddingARecord = False pbEditingARecord = False stateOnLoad End Sub Private Sub Form_Load() Set db = CurrentDb() '''Set myRS = db.OpenRecordset("select * from customer") Set myRS = db.OpenRecordset("customer", dbOpenTable) ''' need to learn how to add index to customer table '''myRS.Index = ("Company Name") 'calling subroutine stateOnLoad FillFeilds End Sub Private Sub lblFindIt_Click() With myRS Select Case Me.lblFindIt.Caption Case "Company Name" Me.lblFindIt.Caption = " First Name " ''' this indexcontactfirstname should already exist in the table ''' you can also create index trough code on tables. this method ''' not good in multi user evironment . best way to create indexes and ''' refere them trough code .Index = "CotactFirstName" Case "First Name" Me.lblFindIt.Caption = " Last Name " .Index = "CotactLastName" Case "Last Name " Me.lblFindIt.Caption = "Company Name " .Index = "CompanyName" End Select End With End End Sub Private Sub textFindIt_Change() Dim strSeek As Variant Dim posInmyRS As Variant ''' feeding it the value from text box strSeek = Me![textFindIt].Text With myRS posInmyRS = myRS.Bookmark .Seek ">=", strSeek If .NoMatch = True Then myRS.Bookmark = posInmyRS Exit Sub End If FillFeilds End With End Sub
my modul code
Code:Option Compare Database Option Explicit '''we declare publick variable in the module '''note we can oly declare public ariables insdie module '''not inside the function ''' we declare it here so that fillfeilds sub routine can see it. ''' we can not declare it public inside onload Public db As Database Public myRS As Recordset Public pbEditingARecord As Boolean Public frmName As String Public ctrlName As String Public pbAddingARecord As Boolean Public pbCurrentPos As Variant




Reply With Quote