Modules & VBA :: Focus To Be Set To First Control Without Displayed Record Being Changed
Jul 31, 2013
On a form (default view: Single), I have a bunch of bound controls that display one record at a time from tblMain. I have a bunch of unbound controls as well (buttons).
If the user tabs through all the controls, reaches the last one (btnLast), and presses tab again, the focus is set to the first control (btnFirst) and the bound controls change to display the next record. I just want the focus to be set to the first control without the displayed record being changed.So I set up an "If" statement in Private Sub btnFirst_GotFocus()
Code:
If Screen.PreviousControl.Name = "btnLast" Then
[code to change record back to previous record]
End If
But btnFirst gets the focus when the form opens, so Screen.PreviousControl spits out an error.I've accommodated this like so:
Code:
On Error GoTo ErrorHandler
If Screen.PreviousControl.Name = "btnLast" Then
[code to change record back to previous record]
End If
Exit Sub
ErrorHandler:
Exit Sub
I have a continuous form populated with a pivot view from SQL. When I enter data in the form I send the data to SQL (ctrl after_update) and then re-populate the form. It works.
When I have entered data in a ctrl - then I have to bookmark the record so I can select it again (find_first). I can "save" the location of the control where I have entered data, but I want to select the location where the user has set focus - which triggered the ctrl after_update..My ctrl after_update looks like this:
I'm populating a report with a query which pulls criteria from a form. When the 'run' button is pressed it opens the report, running the query, to filter the data. What i'm attempting (and it works if there is data present).
The data is text, which is a filename, which populates an image control. Most of my records have an image present but for the ones that don't I think I need to turn the image control's picture property to 'blank'.
I'm just now encountering problems with the records with no pictures so when i came up with this it worked with my tests which at that time only had images present....
I have two problems.
1) When I run the code as below i get Run-Time Error 2185; you can't reference a property or method for a control unless the control has the focus.
2) when i try to set the focus on the picture control in the report to see if there is text/value present i get runtime error 2478; database doesn't allow you to use this method in the current view.
I assume this is talking about me opening the report in acViewPreview mode but i thought i needed to do this so the images are displayed in the image control.
Code: Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Dim strDBPath As String Dim strRelativePath As String Dim strPath As String 'rptOriginalOwnerCategoryItem!Picture.Text.SetFocus [B]Me!Picture.SetFocus[B] 'Test to see if the record has a relative path stored
After a lot of reading and consolidating VBA codes for audit trail.How My Audit Trail Works..A module was made for a function named as "Changes" .Then inserted into before update event of a form where I will do the editing of the records.Then I made a table named as Audit.Inside this table I made all the fields I needed such as:
*AuditRecordId[autonumbered] *FormName[The name of the form for editing] *Index[The record ID of the record being edited] *ControlName[The Field being edited] *DateChanged[Date change was done] *TimeChanged[Time change was done] *PriorInfo[for the old value of data being changed] *NewInfo[For the new value of data changed] *CurrentUser[The user base on log in form that was set to Global into another module] *Reason[The reason for changing for future references]
And Here is the Function Code:
Code:
Option Compare Database Option Explicit Function Changes() Dim db As Database Dim rs As Recordset Dim strSQL As String Dim strCtl As String Dim strReason As String
[code]....
This audit trail function is valid only for one(1) form, due to the limitation of
Code: Screen.ActiveForm.Controls("SUP ID").Value
where "SUP ID" is the primary key of the record being updated/Change, so if there are Five(5) tables that needs audit trail, there will be also Five(5) forms, as well as Five(5) Function Changes namely; Changes(), Changes1(),Changes2(),etc... because all the table do have their own sets of primary Key.
Is there a shortcut, in such a way that the "rs!Index" will automatically return a value, equivalent to the Primary Key/Record Id of the record being updated/change, given that there are different updating forms for each table to be updated?
I have a text filed on a tab control on a form. What I want to do is when the record is opened for viewing I am it changed the contents of that field. The reason that I am doing this is that I am auditing the changes in the database and any changes to any of the fields are recorded on the in this table along with the users windows username.
This would put an entry in the audit table for everytime a record was opened, even if no changes were made to the record and I want to use this information to create a last ten records form for the users to view there last ten records.
I tried hiding a list control by setting its visible property to Flase in VB; however, it keeps returning a message: You can't hide a control that has the focus.
I don't know who to move the focus from my list control before hiding it. I searched in the MSDN online, but with no luck.
I am trying to write simple code that undoes entering a new record and moves the focus to a mandatory field. I wrote the code below; however, I get this run time error message each time I run it.
DB can't move the focus to the control PlotNum.
My code: Private Sub cmbHouseType_BeforeUpdate(Cancel As Integer) Forms![frmHouse]![qryHouse2]![PlotNum].SetFocus If Forms![frmHouse]![qryHouse2]![PlotNum].Text = "" Then Cancel = True Me.Undo MsgBox "Please enter the Plot Number first, then enter the House Type" End If End Sub
I have a form with 2 tabs and a sub form on each of those tabs. form1, subformA, subformB on tab control - tabctrl - pageA, pageB. How can i set focus from one tab to another without actually clicking the tab?
I tried this:
TabCtl.Pages("page2").SetFocus
It's comming up with an error - "object required"
I also tried:
page.2.setfocus and that's comming up with an error that it's wrong syntax.
I also tried:
formMyForm.page2.setfocus and that says object required as well.
I have read the threads on this subject and I thought I had my coding fixed, but obviously not, beacause I still get the error, "You can't hide a control that has the focus". Maybe it is a form/subform thing.
Here is my code:
Private Sub txtAge_AfterUpdate() If Me.txtAge > 39 Then Me!subfrmVersion.Form.chkWellness.Visible = False End If End Sub
txtAge is on the main form and chkWellness is on the subform.
I have a tab control on my form. In the change event of the tab control I am trying to tell it to move to the first field on each page of the tab control whenever the page no. changes:
Private Sub TabScreenAssess_Change() 'when a new page gets the focus, set the focus to the first control on that page Dim PageNo As Integer
PageNo = Me!TabScreenAssess.Value Select Case PageNo Case "0": gynFemale.SetFocus Case "1": tbPriorHx.SetFocus Case "2": suSubUseAssess.SetFocus Case "3": mhaCognitiveFunct.SetFocus End Select
End Sub
This works when I am tabbing normally through the controls. But when I click back to the first tab, it says "Access can't move the focus to the control gynFemale" (gynFemale is the first control on the first tab.) It works for the other tabs. That is when I click on another tab, the focus goes to the first field on that tab. When I enter a value in the gynFemale field (it is a combobox, with options Yes or No), sometimes it appears to save the value, then I discover that it has been saved as record #0.
and two sub-forms called "frm_fabricator" & "frm_engineer"
On the sub form "frm_fabricator" I have a combo box and after updating this combo box (called fabricator) I would like the cursor to jump into a field called “ApllicationsEng” on the other sub form "frm_engineer"
I have a form that allows me to update entries in a table. When I select the line I need to update and hit the "edit" button I get a run time error '2164' You cant disable a control while it has the focus. when I debug the line in the code that is highlighted yellow is Me.cmdEdit.Enabled = False.
I developed the database in access 2013, and now I am forced to run the database on a computer that has Access 2003. I have changed the database base to access 2000-2003.
I have a toggle control on a form which depending on selection uses a loop and instr to make 'not visible' a set of controls on a subform.(forms! Mainform !subform.form)I get error 2165 but if I test immediatley before the make not visible process it returns the toggle frame as being the active control.
I cant seem to type after a couple of lines as the page moves to the top, i have to keep pressing shift and F2 to complete the typing. Even with Shift and F2 box im unable to click enter to go to the next line as the box closes.
So if i start typing in the pic FM2 then FM1 appears automatically. Basically i cant use the memo control like a word document for my users.
Im not sure if this is the right place to put this but I was wondering if you could help me:
Say I have database with forms that display records or people ie name, address, postcode, etc. What I want to do is display a list of Names then from that list I can double, single click and open the record details.
Id call my self and amatuer at access and am probably guessing this is done via vscript or something else, but any help will do.
On my data entry form I have a tab control with three pages
At the bottom of the first page I have a sub form with 3 fields
Currently, when tabbing, the focus runs through the fields as per the tab order
BUT
Once it gets to the subform (datasheet view) it jumps into the first field of the first record rather than the first 'empty cell' thereby starting a new record in the datasheet.
Once the three fields in the datasheet are completed the focus tabs back to the top of the first page of the form rather than onto the next page of the form
How to correctly reference controls using VBA so I could SetFocus where I want?
The Main form is called frm_Admissions
It has three pages called Patient, Treatment & Service Providers
Patient has a subform called sub_Cluster (which may or may not hold Cluster Information)
I would like the tab order to jump from the last textbox on the form into the first field of a new record in the datasheet (rather than the first field of any existing records)
Once it has finished in the datasheet I need to tab to the first field/textbox in the Treatment's page of the form rather than back to the first field/textbox in the Patient's page.
I have a form with a TAB control and four pages. Each control of each page has his TAB index set correctly (starting from 0 to n), some of controls are not enabled to be tabbed. The form's cycle is set on "Current page".
I have two kind of problems.
First: I am on the last control of the page, pressing TAB key the focus gets invisible. Press TAB key again and the focus moves on the first page's control. For each page happens this behaviour.
Second: clicking randomly on the TAB pages the focus is not always on the control with TAB index 0, but usually on the last.
I have read that clicking on a new page the focus should be automatically on the first control, but this does not happen in my experience.
I have an unbound form with a combobox which needs to be validated before the control is updated.In the Before Update event I check that the value is valid and need to reset the value back to the previous value if not valid and then change focus to another control.I thought that the following code would work but the selected value remains in the control and I cannot move the focus to another control.
Code: Private Sub cboYears_BeforeUpdate(Cancel As Integer) Dim dteNewDate As Date dteNewDate = DateSerial(Val(Me.cboYears), Month(Me.txtCalendarHeading), 1)