Forms :: Force Update Of Field Before Record Is Saved
Aug 1, 2013
How can I force a field in a form to be updated before the record is saved / changed?
For instance I have a form with information on it and I want to ensure that any time the form is updated the user fills in a section providing the date and by who it has been updated by. I dont want the record to save unless that information has been filled out, and I also want it to take you to the field if you press save and it hasnt been filled out along with an error message.
To try and be a bit clearer. At current I have a Save and New button. This saves the form if dirty and opens a new record.
I want to add in the step that if record has been changed and FieldA has not just been updated then go to fieldA (Showing a message box). If FieldA has just been updated then save record and open new as normal.
My current save & new button properties are as follows (in Macro Editor)
On error Go To Next
If [form].[dirty]
RunMenuCommand Command SaveRecord
End If
If [MacroError].[Number}< >0
Message =[MacroError].[Description]
Beep Yes
Type None
Stop macro
On Error
Go To Fail
Go To Record
Record New
Go To Control
Control name Resort Code
Hopefully there's someone who can help me with this!!! I've had several unsuccesfull attempts and don't know what else to try...
We're trying to force users to make entries in a field called txtComments in the frmQuestionnaire form if they provide negative responses and to stay on that record until the comments are changed. Inside the form is an option group (fraResponses) which contains options (OptA, OptB..etc.) valued from 1 through 7, based on a likert 7 scale. We're only using a likert 6 scale, so the respondents will only see 2-7 on the form. If they options B-D (valued 2-4), they are considered negative, so we want to make sure they enter a comment.
I tried to enter the italicized code under the form on BeforeUpdate, AfterUpdate, CmdUp (click to next question) and CmdDown (click to previous question), with frmQuestionnaire but nothing happens:
There is a module called clsUser which contains the following and where I tried to insert the code:
Set myForm = Forms!frmQuestionnaire ' ================================================== == ' First, set the value of the variables ' ================================================== == lngQuestion = arrQ(lngArray, 0) lngSession = GetCustomInfo("TestSession") lngUser = UserID lngBillet = BilletID
strComment = Nz(myForm.txtComment, "")
strComment = "None"
'If user selects negative responses If Form_frmQuestionnaire.fraResponses.OptionValue = 2 Or 3 Or 4 And strComment = "None" Then MsgBox "Please explain the problems you encountered with the system which " & _ "caused you to select an unfavorable response." Form_frmQuestionnaire.txtComment.SetFocus
End If
lngResponse = myForm.fraResponses
When I place the code there, the dialog box appears for all values and goes to the next record. This is what appears for the CmdUp (click to next question):
If cUser.blnDirty = False And Me.fraResponses = 153 (this is default value for the entire option group) And cUser.blnNew = True Then cUser.blnDirty = True End If
cUser.CaptureAnswer If cUser.lngArray < cUser.UBound_ArrQ() Then cUser.lngArray = cUser.lngArray + 1 Else cUser.lngArray = cUser.UBound_ArrQ() End If cUser.FillQuestions cUser.blnDirty = False
I've tried to enter the line of code with the form and the module, but no luck.
I also want it to remain on the same record until the field is changed. The form is unbound and has the following:
GetResponseSet lngRG FillAnswers If lngArray = 0 Then myForm.txtComment.SetFocus myForm.cmdDown.Enabled = False Else myForm.cmdDown.Enabled = True End If
If lngArray >= UBound(arrQ) Then myForm.txtComment.SetFocus myForm.cmdUp.Enabled = False Else myForm.cmdUp.Enabled = True End If End Sub
Public Sub FillAnswers() '************************************************* **** ' Purpose: Fill out the user's previous responses ' ' Assumptions: N/A ' ' Effects: N/A ' ' Inputs: ' None ' ' Returns: ' None '************************************************* ****
Dim strSQL As String Dim recAnswer As New ADODB.Recordset
If Not recAnswer.EOF Then myForm.fraResponses = recAnswer!reDatResponseSetID myForm.txtComment = recAnswer!reComment blnNew = False Else If myForm.fraResponses <> 152 Then myForm.fraResponses = 153 myForm.txtComment = "" blnNew = True End If End If
What i want to do is if a user forgets to put lets say Address or Zip Will not allow user to save record but instead will highlight the text boxs that are required. Once data is put in will allow user to save record.
I've created a form based on table DeliveryHeader with a subform based on table DeliveryDetail. The two are linked by Delivery# Supplier#.
On the form, Supplier# is a combobox that lists all suppliers from table Supplier. On the subform, Material# is a combobox that lists only the materials supplied by the supplier selected with form's Supplier#.
The problem is that this second list always shows the materials of the first listed supplier. For instance, when the form is loaded, it shows delivery #1 with all its details on the subform. Suppose supplier loaded to form is #1.
1) If I use subform combobox, it shows correctly supplier's #1 materials. But then, whatever delivery I navigate, it always shows supplier's #1 materials.
2) If I navigate to another delivery without using subform combobox, suppose I stop on a delivery where the supplier is #4, then subform combobox shows correctly supplier's #4 materials. But then, once again, whatever delivery I navigate, it always shows supplier's #4 materials.
I've spread Me.Requery here and there but without any success. What trick must I apply to force the execution of the query of the subform combobox Material# each time I navigate to a new record on the form?
I have designed a database that has two forms as inputs to a table. The first form is a checklist and when it is completed it saves all fields except the ManagerID field. I then use the blank ManagerID, clientID and Date to pull onto a form for the manager to complete. On completion I want the ManagerID to save into the current records so they do not show up in the manager checklist forms and I then have a complete record. I have been searching online and cant seem to see how the best avenue is. I have an append query, see below
Code: INSERT INTO ChecklistResults ( ManagerID ) SELECT ChecklistResults.ManagerID, ChecklistResults.ClientID, ChecklistResults.DateCompleted FROM ChecklistResults WHERE (((ChecklistResults.ClientID)=[Forms]![TeamLeader]![ComClientNotFin]) AND ((ChecklistResults.DateCompleted)=[Forms]![TeamLeader]![ComDateSelect]));
Code: Private Sub CmdAppend_Click() Dim dbsNorthwind As dao.Database Dim rstAmend As dao.Recordset Dim qdfAmend As dao.QueryDef
I'm working on a "Product Details" form somewhat similar to form in northwind, which the record source in "Products" table. what i'm trying to do is after clicking "save and new" command button to go to new record in form, i would like all text boxes to automatically retrieve the value from last saved record set as default value.
after google searching this subject i found the LastModified Syntax but i just don't understand whether i use it in VB or marco, or even how to implicate this. Should I make macro on each txtbox or should i create module? if i have to create either macro or module.
Is there any way to force a field value to be unique and of a set length, but with exceptions?
Let me explain... I have a text field in my table called "employee_number" and this value is always one of the following:
NULL an 8-digit number the word "External"
What I want to do is to force that field to either be NULL, the word "External", or a unique 8-digit number.
Is this possible? Obviously I can't set the source field in SQL to accept unique values only but I wondered if there was any way around it at form level?
If the query returns no results, like it should, but I want to force a row with zeroes in it, can that be done? how? i have tried an if statment in all the fields to fill something in if the field is null but that didnt work. i tried using nz but that didnt work. any suggestions would be appreciated! Thanks!
I have an issue with my subform, that when opened inside the main form, I want the form to be opened on its last record (which works) and then I want the subform to be opened on the first record regarding that record ID coming from from the main form. The relationship is many to one, coming from the form to the subform. I have tried several code on many events on the subform so it can goes to the first record, but it sometimes goes to the first, othe times ot goes to the third, i don't know why. I have tried the following:
Private Sub Form_Load() DoCmd.GoToRecord , , acGoTo, 1 En Sub
or DoCmd.GoToRecord , idsPreguntas, acFirst 'idsPreguntas is the control name of the record
How can I force a form to open at "New (Blank) Record"? What I want is when a person opens the database it will take them to a default form (I have figured this part out already) but at the "New (Blank) Record".
I need a way to dynamically store a particular value in "field_2" of the CURRENT record depending on whether or not the value of "field_1" of the CURRENT record is identical to the value of "field_1" of the PREVIOUS record within the same table. The table is sorted on "field_1".
So, if the value of "field_1" in the CURRENT record is "ABC" and the value of "field_1" in the PREVIOUS record is also "ABC", then store a value of "PPP" in "field_2" of the current record. IF on the other hand, the value of "field_1" in the CURRENT record is "ABC" and the value of "field_1" in the PREVIOUS record is "XYZ", then store a value of "WWW" in "field_2" of the current record.
I have a report that will use these results to count only the number of records that have a "WWW" in "field_2".
Is this doable, maybe in a query somehow?
I should add that whatever the solution, it needs to be compatible with Access 2000.
I'm writing a course registration Db. I have a have 3 tables at the moment tblContacts [ContactID], [FName], [SName], [Etc..] tblCourseRegistration[RegID] [ContactID][CourseID] and tblCourses[CourseID] [CourseName] [Etc...]
These are all linked on a tabbed form. I have found that the same Contact can sign up for the same course twice. I need to stop this happening. Is there an easy way to prevent this or do I have to write a query that runs before the save command to prevent this?
I have a split database (A2000) on a server; many people use the database at many different terminals. I would like to save the computers identification to the record being created. Any ideas on how to accomplish this? Thanks gMAC
I have a Multi user Access Database which has been split into a Front and Back end. What I am noticing is sometimes when the user enters data into the Front end form, it is not being saved in the Backend tables....
How to confirm when the user clicks save that the data is actually being saved in the backend tables.
When using Access 2007, I have a new record button, but that record is only written to the db once you navigate away from it. How do I write immediately to the DB, so that record is saved without navigating away from it. I believe I can use ADO or DAO but I'm having difficulties.
i want to have a button where the operator can cancel when on a current record. i want an if. if form has changes made but not saved then undo else close.
I have a DB where I want text entry of the primary key to adhere to a certain format. I'm already using a mask of >LL000000 to force two capital letter and 6 numbers. Is there any way I can force extra restrictions, by making for example the first 3 characters to have to be AB1, thus making every entry follow format: AB1<number><number><number><number><number>
I have a form with my own navigation buttons. The problem is a AddNew button is clicked for a new record, but it automatically adds into the relevant table when I click on the MovePrevious and MoveFirst button without data entry.
Has anyone encountered such problem? Kindly help me.
Hi all, I've got a subform, fed by a query which contains a lot of calculated fields. All the calculations use the contents of a field on the main form.
What i want to do is have a live update, so that if i change the value of the field on the main form, the subform is requeried and the fields recalculated using the new value.
I've put a subform requery on the On Change event, but the requeried fields are coming out the same, presumably because the new value i have put in is not saved until i change record.
I'm using the control name in my calculations, and yet it's still picking up the old (saved) value from the underlying table - is there no way to tell Access to look at what resides in the control right now?
Ive got a database with a combo box, called "combo1" (with 2 columns). It is unbound but uses a query as its row source. When i select a value in combo1 is places the data from combo1.column(1) into a textbox (text1). I then click the next record button (button1) and it then keeps the same value in combo1 because it is unbound. So i need it that when i go to the next record it displays the value in combo1 that relates to text1.
I have a piece of code that I'm using to display an image on a report based on a path saved to each record. the code is:
Code: Option Compare Database Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) If IsNull(Me.ImagePath) Then Me.ImgPic.Picture = "O:BellinghamIntranetProductionLabelsNo Label.bmp" Else Me.ImgPic.Picture = Me.ImagePath End If End Sub
It seems like every few months the code crashes access and then never works again. When I debug, the part that is highlighted is:
Code: Me.ImgPic.Picture = Me.ImagePath
The only way i've found to correct it is to delete the report and the module and copy them back in from a backup database. What could be causing this code to crash or how to stabalize my database to prevent this from happening again.