Solved

runsql error

Posted on 2006-10-28
21
403 Views
Last Modified: 2008-02-01
hi,

I have written this code that runs at form close event:

Private Sub Form_Close()
Dim db As Dao.Database
Dim rs As Dao.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("tblAMKCC71", dbOpenDynaset)
If Weekday(Date) = 7 Then
Dim str As String
str = "SELECT tblAMKCC71.SystemMO FROM tblAMKCC71 WHERE weekday(tdate)=4 And format(tdate,'wwww')=form(date()-6,'wwww');"
DoCmd.RunSQL (str)
Dim strup As String
strup = "UPDATE tblAMKCC71 SET tblAMKCC71.SystemMO = str WHERE (weekday(tdate)=4+1 And format(tdate,'mmwwww')=format(date()-5,'mmwwww'))Or (weekday(tdate)=4+2 And format(tdate,'mmwwww')=format(date()-4,'mmwwww'))Or (weekday(tdate)=4-1 And format(tdate,'mmwwww')=format(date()-7,'mmwwww')) Or (weekday(tdate)=4-2 And format(tdate,'mmwwww')=format(date()-8,'mmwwww')) Or (weekday(tdate)=4-3 And format(tdate,'mmwwww')=format(date()-9,'mmwwww'));"
DoCmd.RunSQL (strup)
End If
End Sub

It given me this error message: run-time error 2342

RunSQL action requires an argument consisting of an SQL statement.  I can't figure out any....  Please help.
0
Comment
Question by:sikan71
  • 12
  • 7
  • 2
21 Comments
 
LVL 65

Expert Comment

by:rockiroads
ID: 17825871
What do u want to do with the SELECT statement?

U cannot use SELECT statements in DoCmd.RunSQL

they are used for action queries only, add/update/del
0
 

Author Comment

by:sikan71
ID: 17825889
I want to select a value from table tblAMKCC71 where weekday is 4 and copy that value into rest of the days of that week from sunday-saturday except wednesday since it already has a value
0
 
LVL 9

Expert Comment

by:mpmccarthy
ID: 17826012
Rocki

Sorry for cross posting but if you get a minute could you look at cyber's last chain question.  The logic requires some kind of reiterative subfunction but because it needs a recordset its blowing the stack.

http://www.experts-exchange.com/Databases/MS_Access/Q_22036778.html

Mary
0
 

Author Comment

by:sikan71
ID: 17826141
Some help will be appreciated.....I am beginner programmer in ACCESS 2003.
0
 
LVL 9

Expert Comment

by:mpmccarthy
ID: 17826281
UPDATE tblAMKCC71
SET tblAMKCC71.SystemMO = Dlookup("[SystemMO]", "tblAMKCC71","weekday(tdate)=4 And format(tdate,'wwww')=form(date()-6,'wwww'))
WHERE (weekday(tdate)=4+1 And format(tdate,'mmwwww')=format(date()-5,'mmwwww'))Or (weekday(tdate)=4+2 And format(tdate,'mmwwww')=format(date()-4,'mmwwww'))Or (weekday(tdate)=4-1 And format(tdate,'mmwwww')=format(date()-7,'mmwwww')) Or (weekday(tdate)=4-2 And format(tdate,'mmwwww')=format(date()-8,'mmwwww')) Or (weekday(tdate)=4-3 And format(tdate,'mmwwww')=format(date()-9,'mmwwww'));"

Does this give you the result you want

Remove this bit:
------------------
Dim str As String
str = "SELECT tblAMKCC71.SystemMO FROM tblAMKCC71 WHERE weekday(tdate)=4 And format(tdate,'wwww')=form(date()-6,'wwww');"
DoCmd.RunSQL (str)
0
 

Author Comment

by:sikan71
ID: 17831769
Can someone explain what this query exact do?  When I run the query it's saying updating 5 rows.  But when I check the table no values are being updated why?
0
 

Author Comment

by:sikan71
ID: 17831773
what does this query give me:
weekday(tdate)=4 (Return what?)
And format(tdate,'wwww')=form(date()-6,'wwww'))(return what?)
0
 
LVL 9

Expert Comment

by:mpmccarthy
ID: 17831779
OK

What is the value in tdate

is it a date or a year or what?
0
 

Author Comment

by:sikan71
ID: 17831793
For example: My form is opened on daily basis so the date gets entered into the table on daily basis as well as data.  But one field value gets entered only on wednesday.
I have data in the table(tblAMKCC71)  in field name SystemMO tdate= 10/25/2006 the value is 228.  Now i want to update with same value of wednesday in sunday 22nd-saturday 28th except wednesday since it already has value.  This is done on weekly basis that is every saturday it gets updated.  The above query doesn't seem to give me the result.  
0
 

Author Comment

by:sikan71
ID: 17831795
tdate is month day year example: 10/25/2006
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 9

Expert Comment

by:mpmccarthy
ID: 17831849
weekday(tdate)=4  this returns 4 for dates where the day is Wednesday

to be honest I didn't look at this I just took it form your code where did you get it.
format(tdate,'wwww')=form(date()-6,'wwww')

more to the point what date or date range are you trying to establish outside of it being wednesday.

If the update you describe is done every saturday for the prior week then you can use the following.

UPDATE tblAMKCC71
SET tblAMKCC71.SystemMO = Dlookup("[SystemMO]", "tblAMKCC71","weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4 And (tdate>date()-7);




0
 
LVL 65

Expert Comment

by:rockiroads
ID: 17832586
Hi Mary, will have a look
0
 

Author Comment

by:sikan71
ID: 17889957
hi,
No, I want update done for the current week(not previous week).  My week starts from sunday to saturday.  For example, this wednesday one of the field value(SystemMO) will be entered.  On saturday I want to run the query to update Sunday-Saturday(except wednesday) to have the value of wednesday. In the table I have data of previous year as well as current year.  That's why I think it is important to specify the week otherwise it will pick the data of all wednesdays of the year.  
This code was given to me by experts exchange.
format(tdate,'wwww')=format(date()-6,'wwww')
Thanks
0
 

Author Comment

by:sikan71
ID: 17890083
Hi,

When i run the query:
UPDATE tblAMKCC71
SET tblAMKCC71.SystemMO = Dlookup("[SystemMO]", "tblAMKCC71","weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4 And (tdate>date()-7);

It says 6 rows being updated.  But when I go to the table the values are not in the field.  Why?
0
 
LVL 9

Expert Comment

by:mpmccarthy
ID: 17894375
Run this select query and see what results you get...

SELECT SystemMO
FROM tblAMKCC71
WHERE weekday(tdate)=4
And (tdate>date()-7);
0
 

Author Comment

by:sikan71
ID: 17894691
yes i get value 229 that has tdate of 11/1/2006 which is wednesday of last week.  My update works but it puts value in the date 11/2/2006-11/7/2006(except wednesday).  I want the values in the table from 10/29/2006(sunday) to 11/4/2006(saturday) except wednesday. Is this query based on that i should run it on saturday to get the right result.  
0
 

Author Comment

by:sikan71
ID: 17894758
Is it possible to update more than one field in the table with Dlookup.

Example: i want to update SystemMO as well as SystemGP in table tblAMKCC71

Is this statement possible:
update tbleAMKCC71 set SystemMO, SystemGP = Dlookup("[SystemMO]", "[SystemGP]","tblAMKCC71", "weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4 And (tdate>date()-7);



0
 

Author Comment

by:sikan71
ID: 17894772
I have increased my points to 250.  Any help appreciated.
0
 
LVL 9

Expert Comment

by:mpmccarthy
ID: 17894953
The above only works if run on the Sunday.

You'll need something like this to decide what day the current date is:

UPDATE tblAMKCC71
SET tblAMKCC71.SystemMO = Dlookup("[SystemMO]", "tblAMKCC71","weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4
And (IIf(Weekday(tdate)=7,(tdate)>date()-6),
IIf(Weekday(tdate)=6,(tdate) BETWEEN date()-12 AND date()-5),
IIf(Weekday(tdate)=5,(tdate) BETWEEN date()-11 AND date()-4),
IIf(Weekday(tdate)=4,(tdate) BETWEEN date()-10 AND date()-3),
IIf(Weekday(tdate)=3,(tdate) BETWEEN date()-9 AND date()-2),
IIf(Weekday(tdate)=2,(tdate) BETWEEN date()-8 AND date()-1),
IIf(Weekday(tdate)=1,(tdate) BETWEEN date()-7 AND date()))))))));

I think I have the bracket count right, if you have any problems try adding or deleting a closing bracket at the end.

0
 

Author Comment

by:sikan71
ID: 17934403
Thank you it works.  But one more question:
Is it possible to update more than one field in the table with Dlookup.

Example: i want to update SystemMO as well as SystemGP in table tblAMKCC71

Is this statement possible:
update tbleAMKCC71 set SystemMO, SystemGP = Dlookup("[SystemMO]", "[SystemGP]","tblAMKCC71", "weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4 And (tdate>date()-7);
0
 
LVL 9

Accepted Solution

by:
mpmccarthy earned 250 total points
ID: 17935049
Is this statement possible:
update tbleAMKCC71 set SystemMO, SystemGP = Dlookup("[SystemMO]", "[SystemGP]","tblAMKCC71", "weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4 And (tdate>date()-7);

That won't work ... but this might.

update tbleAMKCC71
set SystemMO = Dlookup("[SystemMO]", "tblAMKCC71", "weekday(tdate)=4 And (tdate>date()-7"))
AND SystemGP = Dlookup("[SystemGP]","tblAMKCC71", "weekday(tdate)=4 And (tdate>date()-7"))
WHERE weekday(tdate)<>4 And (tdate>date()-7);
0

Featured Post

Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

Join & Write a Comment

When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now