[AccessD] Two more issues on my Word document automation

Andy Lacey andy at minstersystems.co.uk
Fri Jun 27 01:33:39 CDT 2008


Hi again Tina
I'm on sticky ground on the technicalities of this but when you're using a
querydef you're using SQL in a more, I suppose, native way. It knows a lot
less about Access and doesn't recognise constructs like =Forms. The way to
overcome this is easy though. Change your query so that in place of
[Forms]![frmContributionAcknowledge]![txtDepositDate] as the criterion in
the query put something like [GetTheDate]. Anything will do, in [], just
avoid anything that might be a keyword. This just tells SQL there's a
parameter of that name that's needed. Then run the querydef like this:

set qdf=currentdb.QueryDefs("qryPrintListForContributionTypeOfMember_t")
Qdf.parameters("GetTheDate")=Forms![frmContributionAcknowledge]![txtDepositD
ate]
Qdf.Execute

What you're doing is resolving the parameter here and passing it as a value
to the query.

BTW if it's a Make Table you're going to have to delete it before running
every time. Is it actually necessary to have a Make Table. What I'd normally
do is keep the table the whole time and have a query which removes all
records then a second to append to it. So you'd go

Set qdf=Currentdb.Querydefs("MyDeleteQuery")
Qdf.Execute
Set Qdf=Currentdb.Querydefs("MyAppendQuery")
Qdf.Parameters...
Qdf.Execute


-- Andy Lacey
http://www.minstersystems.co.uk 



>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com 
>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of 
>Tina Norris Fields
>Sent: 26 June 2008 23:23
>To: Access Developers discussion and problem solving
>Subject: Re: [AccessD] Two more issues on my Word document automation
>
>
>Joe,
>Thank you for that thought.  I will play with that, too.  There is 
>something I don't get, though - why is it good to use a function that 
>references the textbox on the form, but not good to reference that 
>textbox on the form in a query?  What am I accomplishing by 
>making this 
>change?
>Thanks again,
>Tina
>
>Joe O'Connell wrote:
>> Tina,
>>
>> Instead of referencing the form in your query, try using a 
>function to 
>> return the value:
>>
>> Instead of
>> ... WHERE somefield =
>> [Forms]![frmContributionAcknowledge]![txtDepositDate]
>>
>> Use this
>> ... WHERE somefield = GetDepositDate()
>>
>>
>> In a module put this function
>>
>> Public Function GetDepositDate() as Date
>>   GetDepositDate = 
>> [Forms]![frmContributionAcknowledge]![txtDepositDate]
>> Exit Sub
>>
>> Joe O'Connell
>>
>> -----Original Message-----
>> From: accessd-bounces at databaseadvisors.com
>> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of 
>Tina Norris 
>> Fields
>> Sent: Thursday, June 26, 2008 5:36 PM
>> To: Access Developers discussion and problem solving
>> Subject: Re: [AccessD] Two more issues on my Word document automation
>>
>> Hi Andy,
>>
>> The query makes a table of the records matching a date 
>criterion - the
>> DepositDate field criterion is 
>> [Forms]![frmContributionAcknowledge]![txtDepositDate].  So 
>the answers 
>> are yes and yes.
>>
>> The first try with this code gave the message that the table already
>> existed.  I deleted the temporary table and ran the code 
>again.  This 
>> time it said there were too few parameters, that it expected 
>1.  I do 
>> not know what that was about.  I'll watch for your reply, and while 
>> waiting I will read up on querydef.  Thanks again for all your
>> assistance.
>>
>> Tina
>>
>> Andy Lacey wrote:
>>   
>>> Mm well it rather depends what's in that query. Is it appending to a
>>>     
>> table
>>   
>>> or something? Does it use anything like =Forms!etc as criteria?
>>>
>>> If the answrs are yes and no then try this
>>>
>>> Dim qdf as querydef
>>>
>>> Set
>>>     
>> qdf=currentdb.QueryDefs("qryPrintListForContributionTypeOfMember_t")
>>   
>>> qdf.Execute
>>> If qdf.recordsAffected=0 then
>>> 	MsgBox "No records found"
>>> Else
>>> 	MsgBox "Done"
>>> End If
>>> Qdf.close
>>> Set qdf=Nothing
>>>
>>> Give that a try first.
>>>
>>> -- Andy Lacey
>>> http://www.minstersystems.co.uk
>>>
>>>   
>>>     
>>>> -----Original Message-----
>>>> From: accessd-bounces at databaseadvisors.com
>>>> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of 
>>>> Tina Norris Fields
>>>> Sent: 26 June 2008 19:21
>>>> To: Access Developers discussion and problem solving
>>>> Subject: Re: [AccessD] Two more issues on my Word document 
>automation
>>>>
>>>>
>>>> Hi Andy,
>>>>
>>>> The OnClick event procedure of the button 
>btnMakeTableContribs is as
>>>> follows:
>>>> = = = = =
>>>> Private Sub btnMakeTableContribs_Click()
>>>> On Error GoTo Err_btnMakeTableContribs_Click
>>>>
>>>>    Dim stDocName As String
>>>>
>>>>    stDocName = "qryPrintListForContributionTypeOfMember_t"
>>>>    DoCmd.SetWarnings False
>>>>    DoCmd.OpenQuery stDocName, acNormal, acEdit
>>>>    DoCmd.SetWarnings True
>>>>    MsgBox "Done"
>>>>   
>>>> Exit_btnMakeTableContribs_Click:
>>>>    Exit Sub
>>>>
>>>> Err_btnMakeTableContribs_Click:
>>>>    MsgBox Err.Description
>>>>    DoCmd.SetWarnings True
>>>>    Resume Exit_btnMakeTableContribs_Click
>>>>   
>>>> End Sub
>>>> = = = = =
>>>>
>>>> As you see, it does use the DoCmd.OpenQuery.  What would be a
>>>> better way 
>>>> to do it?  Isn't there a 'no data' sort of property or 
>result I could
>>>>       
>>
>>   
>>>> use?  (Don't know what it's called.)
>>>>
>>>> Teach me - I'm eager to learn!  Thanks,
>>>>
>>>> Tina
>>>>
>>>>
>>>> Andy Lacey wrote:
>>>>     
>>>>       
>>>>> Hi Tina
>>>>> Don't know about point 1 but point 2 shouldn't be too hard.
>>>>>       
>>>>>         
>>>> What's the
>>>>     
>>>>       
>>>>> code look like that runs the query? If you're using a 
>querydef then
>>>>> that gives you a .RecordsAffected property after executing 
>>>>>       
>>>>>         
>>>> and you can
>>>>     
>>>>       
>>>>> test for that being zero. You can't do that if you're sing
>>>>> Docmd.Openquery. So how're you doing it at the moment?
>>>>>
>>>>> Is point 1 some security setting in Word perhaps?
>>>>>
>>>>> -- Andy Lacey
>>>>> http://www.minstersystems.co.uk
>>>>>
>>>>>   
>>>>>       
>>>>>         
>>>>>> -----Original Message-----
>>>>>> From: accessd-bounces at databaseadvisors.com
>>>>>> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
>>>>>> Tina Norris Fields
>>>>>> Sent: 25 June 2008 21:45
>>>>>> To: AccessD at databaseadvisors.com
>>>>>> Subject: [AccessD] Two more issues on my Word document automation
>>>>>>
>>>>>>
>>>>>> Hi again,
>>>>>>
>>>>>> First, thanks for the wonderful help so far.  My form is
>>>>>>         
>>>>>>           
>>>> coming along
>>>>     
>>>>       
>>>>>> very nicely.  The user selects the date from a calendar control 
>>>>>> for
>>>>>>           
>>
>>   
>>>>>> records to be processed and clicks a button to set that date.
>>>>>> The user 
>>>>>> then clicks a button to run the make-table query, a message 
>>>>>> box appears 
>>>>>> to let the user know that is completed, and the user 
>clicks OK to 
>>>>>> dismiss message box.  The user then clicks a button to 
>>>>>>         
>>>>>>           
>>>> launch Word and
>>>>     
>>>>       
>>>>>> open the contributions merge letter.  So far, so good.
>>>>>>
>>>>>> Two issues:
>>>>>>
>>>>>> 1.  The Word document is a merge form letter expecting data from
>>>>>>           
>> the
>>   
>>>>>> temporary table in the database.  I would like to dismiss
>>>>>>         
>>>>>>           
>>>> the message
>>>>     
>>>>       
>>>>>> box that pops up asking the user to confirm that he (or
>>>>>>         
>>>>>>           
>>>> she) wants the
>>>>     
>>>>       
>>>>>> form letter to accept the data from the database - that is, I
>>>>>> don't want 
>>>>>> that message box to appear, but I don't see where in the 
>>>>>>         
>>>>>>           
>>>> Word document
>>>>     
>>>>       
>>>>>> to turn it off.  If it's something I can set for this
>>>>>>         
>>>>>>           
>>>> document, does
>>>>     
>>>>       
>>>>>> anybody know where that setting is?  If I can't set it 
>in the Word
>>>>>> document, is there a way for me to turn off that message box 
>>>>>> programmatically from the database?
>>>>>>
>>>>>> 2.  Other issue - if a user selects a date for which 
>there are no 
>>>>>> records, and clicks the button to run the query, I want the 
>>>>>> message box to tell the user there are no records for that date.
>>>>>>
>>>>>> If all this works well, a user will get into the Word document, 
>>>>>> ready to complete the merge, with 4 mouse-clicks.  That 
>will make 
>>>>>> my
>>>>>>         
>>>>>>           
>>>> friends at
>>>>     
>>>>       
>>>>>> Habitat very happy.  Down the road, when I am confident the
>>>>>>         
>>>>>>           
>>>> automation
>>>>     
>>>>       
>>>>>> is working right, and the BE and FE are properly in place,
>>>>>>         
>>>>>>           
>>>> I want to
>>>>     
>>>>       
>>>>>> combine the actions of the buttons on the form so that the
>>>>>>         
>>>>>>           
>>>> user will
>>>>     
>>>>       
>>>>>> simply pick the appropriate date and click a GO button.  
>But, as I
>>>>>> mentioned earlier, we are trying to live in this house 
>>>>>>         
>>>>>>           
>>>> while we gut it
>>>>     
>>>>       
>>>>>> and totally remodel it - so I will be very happy with incremental
>>>>>> improvements.
>>>>>>
>>>>>> Thanks again for all the help,
>>>>>> Tina
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> AccessD mailing list
>>>>>> AccessD at databaseadvisors.com
>>>>>> http://databaseadvisors.com/mailman/listinfo/accessd
>>>>>> Website: http://www.databaseadvisors.com
>>>>>>
>>>>>>
>>>>>>     
>>>>>>         
>>>>>>           
>>>>>   
>>>>>       
>>>>>         
>>>> --
>>>> AccessD mailing list
>>>> AccessD at databaseadvisors.com 
>>>> http://databaseadvisors.com/mailman/listinfo/accessd
>>>> Website: http://www.databaseadvisors.com
>>>>
>>>>
>>>>     
>>>>       
>>>   
>>>     
>-- 
>AccessD mailing list
>AccessD at databaseadvisors.com 
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>
>






More information about the AccessD mailing list