View Full Version : Have to enter Value Twice to Run Append/Delete Queries
rhounsome 03-21-2002, 02:24 PM I have created an append query and delete query which upon a click of a button runs a macro which requests a record number to be entered. At present the append query requests the record number to append a record to a USED TABLE. The delete query asks for the record number to be entered again so it can delete it from the CURRENT TABLE.
Do I really need it to ask twice or will the append query retain the selected record for it to be deleted by the delete query.
Also can anyone show the VBA Code to do this because when the form is replicated the macros suddenly stop working
Fornatian 03-21-2002, 11:14 PM You are better using unbound text/combo controls as criteria as they can be re-referenced.
So in your query where you currently have
[Criteria Question?]
you can replace that with
Forms!MyForm!FormControl
which takes the value of an unbound control on the form MyForm and uses that as criteria instead.
Doing this in both queries will prevent any duplicate questions being asked as the criteria will be there on both requests.
Ian
rhounsome 04-13-2002, 03:55 PM Sorry this has taken sooooooooo long to respond back to.
You say use an unbound text field as the source as these can be linked to any part of a database.
The query I am trying to run is based on the form the button that the append / delete queries operate from. Could I use that instead of creating a new form just for this function?
Also I assume that if I click this button the focus is taken away from this field I am wanting to append/delete and hence is entered into the database?
rhounsome 04-13-2002, 03:59 PM Forgot this might help you
Field name I am
3_Letter_ID (Function is drop down list)
At present the Conirm Button runs a macro which consists of 2 queries
Append 3_Letter_ID and Delete 3_Letter_ID
It wasn't so much of an issue until we tried replicating the database and suddenly found Macros cease to function. Hence the long delay in getting back
Jack Cowley 04-13-2002, 04:33 PM On the form with the command button create a combo box that looks up the record you want to append. Do another combo for the record to delete. (Use one combo box if it is the same ID). In the Append query use code like this in the Criteria line of fields ID:
[Forms]![NameOfFormWithComboBox]![ComboBoxName]
Do this for the other query.
In the On Click event of your command button select [Event Procedure] and then add code similar to this:
DoCmd.OpenQuery "AppendQueryName"
DoCmd.OpenQuery "DeleteQueryName"
Convert your macros to code using the Convert menu in Access and you will be happier in the long run....
Fornatian 04-14-2002, 05:57 AM Nice One Jack, I was about to say that, saved me a few brain cells burning out http://www.access-programmers.co.uk/ubb/smile.gif
rhounsome 04-15-2002, 01:34 AM Thanks for the answers and it now works based on everyones answers and some looking around, I managed to create some code which is based on the information from the form you are looking at.
It is inserted on Click
Dim SQL As String
SQL = "INSERT INTO [3 Letter Lookup Used DO NOT AMEND] ( 3LETREF )SELECT [3 Letter Lookup DO NOT AMEND].[3LETREF]FROM [3 Letter Lookup DO NOT AMEND]"
SQL = SQL & "WHERE ((([3 Letter Lookup DO NOT AMEND].[3LETREF])=[Forms]![Company]![3 Letter Reference]));"
On Error Resume Next
DoCmd.RunSQL SQL
Dim SQL1 As String
SQL1 = "Delete [3 Letter Lookup DO NOT AMEND].[3LETREF]FROM [3 Letter Lookup DO NOT AMEND]"
SQL1 = SQL1 & "WHERE ((([3 Letter Lookup DO NOT AMEND].[3LETREF])=[Forms]![Company]![3 Letter Reference]));"
On Error Resume Next
DoCmd.RunSQL SQL1
As I am new to this and making it up as I go. This site of unlimited knowledge is great, far better than books keep those Q and A's coming http://www.access-programmers.co.uk/ubb/smile.gif
Fornatian 04-15-2002, 09:06 AM There is no benefit to using an SQL statement in code over a predefined query in your case as you are not building the query dynamically. Queries are 'pre-optimised', so run faster.
If you are going to leave it how it is, you can recycle the SQL string variable and use it for both statements by re-assignning t after running the first query, thus saving the memory space used by SQL1.
Personally I'd use queries as Jack explained.
HTH
Ian
rhounsome 04-17-2002, 02:07 AM Thanks for the info.
As mentioned being a novice to all this, I guess there is a lot to learn.
Still on the append/delete issue. Notification can be turned off on the toolbars on the top, so it never asks but if the user is not aware of this is there anyway to turn it off when the database is first opened by using a bit of code.
Harry 04-17-2002, 02:40 AM Wouldn't suggest turning it off when you open the db. Would suggest turning notification off and then on purely for the append / delete code.
Insert this line at the beginning of the OnClick event:
Docmd.SetWarnings False
and this line at the end:
DoCmd.SetWarnings True
HTH
rhounsome 04-18-2002, 03:25 AM I know its going to sound a bit thick but you are stating to just turn off the notification for a period of time to get through an issue.
Is this because notification relates to every on screen pop up message?
David R 04-18-2002, 07:43 AM Correct. If you turn off warnings in general then NO error messages/confirmations will be displayed for your entire use of the database and that can lead to Very Bad Things[tm].
David R
|