DoCmd.OpenForm Fails If Access Is Not The Active Window
Jun 13, 2006
I have an Access 2000 application which, on startup, always launches a 'switchboard' form and sometimes gets information from the user during the startup. Both forms are opened with VBA using DoCmd.OpenForm; the switchboard opens as acNormal and the input form (when used) as acDialog.
Under normal circumstances this works fine.
If, however, the Access window ceases to be the active window in Windows (e.g. the user selects another application's window in the taskbar) the forms do not open (all other VBA code runs correctly).
I have got an unbound access form, and in this form I gather 2 dates (i.e. through txt fields). Once I have these fields, I want to open a form that has one list box on it. This list box should populate based on the dates that I gather on the previous form. How do I specify this through the DoCmd.OpenForm arguments? Currently I have the following code, but it is not working:
Form 1: Dim whereClause As String whereClause = "SELECT * FROM qryInvoice WHERE tblInv.InvDate Between #" & txtStartDate & "# And #" & txtEndDate & "#" & ";" DoCmd.OpenForm "frmInvoiceFax", acNormal, , , , , whereClause
Form 2: public Sub Form_Load(args As String) MsgBox args lstInvoice.Rowsource = whereClause End Sub
I know I am not doing it the right way (because it is not working), but I can't actually find how to do it. Help!
I have a form(frmGetRecord) with a subform(frmSubGetRecord). frmGetRecord has a combobox cmbCNO to choose the patient. The subform displays the admit date and discharge date(if there is one). There can be multiple admit/Discharge dates for a patient. Based on the values from fields on the form and subform, I would like to open a data entry form(frmEvents) for the particular record. I have a command button to run the code to open frmEvents. I am having trouble with the criteria in the where condition.
When I click on the command button I get a type mismatch error. If I test the StLinkCriteria separately, the DoCmd.OpenForm will work for just the CNO field or just the AdmitDate field. If I test those two strings together, I get the type mismatch. Also, DischDate could be blank and I'm not sure how to add an IIf statement to the string to test for that in the where statement. I'm also not sure how to make sure it picks the correct record if there is more than one admit date. I would like to select the desired date record, then have the command button open the appropriate record.
Ok, I finally have it working the way I like. It's really slick - the main form (set to "PopUP" and with docmd.runcommand accmdappminimize line in the On_Open event) opens with customized icon (in titlebar and in windows taskbar) and behaves like a standalone program (you only see Access the first few seconds during opening before it's minimized).
The form can be minimized to windows taskbar and clicked to restore it (form's maximize button is disabled, for appearance sake). it can also be accessed via the alt-tab windows menu, where it also appears with a custom icon. so it's really slick, it behaves just like a standalone app. read on for the ", but..."
I also wrote 2 functions to handle reports.
1st (fnOpen, I also use it for forms, etc. via arguments, but only the reports have the following logic). This one closes my main form, maximizes Access (which has all menus/toolbars disabled, so it doesn't really look like Access, looks like a report viewer). This function is placed into all report buttons' On_Click event with report name as argument and object type (3 for report, because 0=table, 1=query, 2=form, 3=report in my fnOpen).
2nd. (fnCloseReport) is placed into all reports' On_Close event. This function opens my main form again on the tab from which report was called. It works, but herein lies the problem: after the form reopens, it no longer has the whole application's custom icon, but the Access "form" icon. And after this, if minimized to windows taskbar it actually minimizes as resized mini-window above the Start button (as has been described by others, just as it would within Access it it were visible) and Access appears minimized in the windows taskbar, so somehow the whole cool "standaloneness" is turned off.
I wonder if anyone has some suggestions for this. I spent some time researching and testing this and really like the functionality. When the form is displayed without Access, it cannot be right-clicked (at all), which is very useful (although I know there are other ways of protection).
BTW, all my other windows (all popup/modal) appear on top of the main form with no problems. I have "File Open" and "Save As" windows common dialogs that my app calls (via API) and I also have a custom form acting as dialog box (I use the acDialog intrinsic constant when I open it from code). so mutliple windows are not an issue as some have suggested.
I have created a form that will print the active report. I have managed to make it look for the active report, but it won't find it because there's no report active, even though I have the report open. How do I make my report be active when I open it? (In a way that whichever report I open will become the active window so that my form will e-mail the report that is currently open)
I am not a specialist, but am trying to create an application with Access 2000to manage our company’s orders. I have a table called ‘Service’ containing descriptive data on the type of service requested. This table is linked to several other tables, with ‘ServiceNo’ as the primary key linking most of them. The service number is not an autonumber, but a counter incremented through code, for specific reasons that I won’t develop here.
I have created two forms: one to consult all the service records (F_Service_Consult), with a button to open another form that allows the user to add a new service record (F_Service_Add).
When the new service form opens, the service number counter is incremented and this number is assigned as the new 'ServiceNo' in a new record added to the ‘Service’ table (using the SQL ‘Insert’ command). I would like this form (F_Service_Add) to open on this record only. In the code that creates ‘ServiceNo’, the correct value is contained in a variable called ‘lngServiceCount’. I have tried using this code to open my form:
Dim stDocName As String Dim stLinkCriteria As String stDocName = "F_Service_Add" stLinkCriteria = "Forms![F_Service_Add]![ServiceNo]='" & lngServiceCount & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria
When I run the code step-by-step, the correct value is shown for ‘lngServiceCount’ when the mouse hovers over the variable (for ex. ‘155’). When the form opens, I have 1 record (Filtered), but nothing shows in the ‘ServiceNo’ text box.
I have deactivated the code that is in the ‘OnCurrent’ event procedure of this form to avoid any interference.
There are many sub-forms on the main form, which also contain the ‘ServiceNo’ in text boxes.
When I use this command to open the form:
DoCmd.GoToRecord , , acLast
the form opens correctly, with the correct ‘ServiceNo’, but ALL the records are opened.
The variable type for ‘lngServiceCount’ is a long integer. (I hope that is the correct term in English, because I am using a French version of Access).
I would be very grateful if anyone could tell me what I’m doing wrong. I’ve tried to be clear, but if more information is required, I would of course provide what’s missing. Thanks in advance.
I have an Access database that sends an email to users when there is an exception in the query. It works fine when I run it from Windows 7, but when I use task scheduler I get an error message;
I'm working with an old database and I am getting this error. I have have access 2010. I starting to receive this error after I unlinked one of the tables.
Private Sub Command9_Click() On Error GoTo Err_Command9_Click
Dim stDocName As String Dim stLinkCriteria As String
My problem concerns importing a date from a txt file. I've been doing this for years with '97 and 2003 with no problem, but with 2007 I am now getting import errors which I can't resolve. The files, either fixed width or delimited, contain date information in the format ddmmyyyy (without any date separators). After importing I receive an import error message, and the relevant field in the table is blank.
In Access '97 or 2003 I can import date information directly into an Access date/time field by using an import specification where I have set the date delimiter to blank (by default this is set to "/" , so I simply delete this to leave the box empty). Using this method a file containing "25122007" (without the inverted commas) will be imported into Access as a date, and can be subsequently manipulated as date without having to resort to any fancy reformatting tricks. Obviously the import will not be sucessful if the date delimiter in the import spec is left as "/", or set to anything else, eg "." or ":".
But now that I've updated to Access 2007 this is just not possible no matter what I do or try. I can only import a date if the txt data has a separator, and that the same separator is set in the import specification.
In some new databases I have done a couple of workarounds, importing it as text into a text field, then using a CDate(Format(CLng([date]),"00/00/0000")) type expression in a subsequent query, but this is a pain having to do it, a really backward step.
But the real pain is older databases ('97 or 2003) which have been converted up to '07; they no longer work, and there is a lot of redesign to be done unless somone can tell me what I'm doing wrong.
Unfortunately I am not able to change the format of the dates in the data I receive, so the solution has to come from my end (ie Access). Surely Access 2007 should be able to recognise 25122007 as a date? All ideas gratefully received.
I've been happily using various versions of Access since 1994 and I've learnt lots along the way, and have always previously been able to sort out problems that I've come across without resorting to a forum, but I'm now really puzzled by a problem that I have come across in Access 2007. So although this is my first post I certainly wouldn't call myself a newbie. Hopefully I have described the problem accurately (it is realy simple in fact), but very happy to provide more information if required.
I am making my very first tentative steps to convert my most complex Access 2003 app to run under Access 2007. There are no obvious problems when simply opening my original MDB file in Access 2007 or running it after conversion to an ACCDB file. However, when I try to run the ACCDB file under the Access 2007 Runtime I get a "You can't carry out this action at the present time..." error. This is then followed by the "Execution of this application has stopped due to a runtime error..."
To be more specific, I only get that error when I deliberately hide the back end database and thus invoke code triggered via Autoexec to allow the user to browse for the missing database. This code works fine when running under normal Access 2007 so it appears to be a Runtime issue.
I want to link into the active directory to get a list of staff usernames, so it will update the user table as new members of staff are created etc. We currently have around 130 staff, so rather than manually updating the user table i want it to pick up the usernames from AD?
I have a database that, I would like to add a button that performs a active directory lookup. I would like it to check a username with Active Directory, and auto populate a few fields.
First Name Last Name Manager Department
This is my first database and I have very little exp using VBA.
how to restrict access to forms and reports using the Active Directory. It is a pretty simple method to pick up and easy to use in any database. My problem comes when I try to apply this same method to tables and queries as well.
Hi, I have been using "fSetAccessWindow (SW_HIDDEN)" in the open event of my main switchboard to hide the grey Access screen from being visible behind forms, reports, etc in this db. But when I started using a .vbs script file to launch the db, the Access window stopped being hidden. (The reason I use the script for launching is that it temporarily sets the db's security level to 1 which stops the macro security warning from coming up.) Apparently MS knows about this happening and released a technique to rectify the situation, but I don't understand their instructions. It looks like they expect one to have more understanding than I have. Could someone help me get this impliemented? Here is the article: http://support.microsoft.com/kb/167659/en-us Thanks!
I am trying to Hide or Show the Access Window by using two buttons on a Form. Running Access 2013 in Windows 7 64bit.
I have used code from the Internet as below but added the PtrSafe item to the Function Declaration as below:-
Option Compare Database 'Hide Access desktop screen and float Forms on pc desktop Private Declare PtrSafe Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Dim dwReturn As Long Const SW_HIDE = 0
[Code] ....
I then have two buttons on a form coded as below:-
Option Compare Database Private Sub cmd_Hide_dbw_Click() Call fSetAccessWindow("Minimize", False, False) DoCmd.OpenForm "frm_Test", acNormal End Sub
[Code] .....
I have attached a Test Database which demonstrates the problem I am experiencing.
Do the following sequence...............
Open the Test Database. DO NOT ENABLE CONTENT The Access 'Ribbon'Test_Database.accdb is active and usable Open frm_Test in Design View in order to inspect, all should be as shown above. Now click the Enable Content warning Switch frm_Test to Form View
Click button Hide dbw. Closes the Access Window Click button Show dbw. Opens the Access Window...HOWEVER....
Attachment 20252The Access Ribbon is locked and usable !!!
I have a parent window which upon clicking on a button will pop-up a child window containing a listbox. The listbox recordsource is a subset of the parent window. I want the user to select a record from the listbox which will load the selected record onto the parent window.
How does one pass argument back from child window to parent window?
From parent window to child window, I used docmd.openform ,,,,,,[argument] and me.openargs in the child window
doCmd.RunCommand acCmdAppMinimize in Form_Load (or Form_Open) events.
This works great to hide Access and only display the main form (like a standalone app).
But I have 2 issues:
1. The PopUp form (main or "switchboard" if you like) opens, then Access is minimized, but then the form looses focus. If there are other programs running, form will be behind them!
2. Access is first seen opening (for a moment) and THEN minimized (see 1.). Is there a way NOT TO SEE IT at all? :)
Back in 2004 a user (sbaxter) on this forum was offering to interrested members his utility for hiding Access window. Does anyone still have a copy of this utility handy that is willing to share? Thanks in advance. See reference post
I need to have Access open with a form that does not take up the entire screen and I don't want to see the Access stuff behind it. How can I make just the start up form appear when I open the db?
The clients use this app with their monitor resolution set to 800 x 600. Whenever I edit a form I need to set my screen resolution to 800 x 600 to make sure the form is within bounds.:mad:
I wan't a fast way to set the Main Access Window's size too 800 x 600 pixels.
Application.DoCmd.MoveSize(,,800,600) is supposed to work but I get a syntax error.
I have a VBA program that I wrote in access. My question is this: Is there anyway to eliminate or minimize the main Microsoft Access program window so all the user would see is my forms and the desktop? Not that ugly gray back drop? Thank you in advance for your help.