Need help with Code Please!!!

L

Lisa

When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


Dale Fye said:
Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


Dale Fye said:
Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
'of the export file

Dim myCompany As String 'current row Company name



myDataSource = "SELECT DISTINCTROW tblVendors.Company,
tblItemListVendor.USFSItemNo"
myDataSource = myDataSource & " FROM tblItemListVendor INNER JOIN
tblVendors ON tblItemListVendor.Company = tblVendors.ID"




Set rs = CurrentDb.OpenRecordset(myDataSource, dbOpenDynaset,
dbReadOnly)

'movelast moves to the last record in the recordset
'as a side effect this updates the RecordCount property
'which is why we are doing it
rs.MoveLast

'move back to row one, the first record before we start working
rs.MoveFirst

If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'Populate the recordset and reposition to the beginning
rs.MoveLast
rs.MoveFirst

'make sure we have at least one row / store to work with
If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'build the batch export timestamp string


'keep doing this section until qryCompany\USFNumber runs out of data
Do While Not rs.EOF

'collect the store name of the current row
myCompany = rs.Fields("Company")

'#### QUERY ONE ####
'make the altered query SQL strings with the current row location
as
criteria
sQ1 = "SELECT DISTINCT tblVendors.Company,tblInvoiceHistALL.USF
Product Number, "
sQ1 = sQ1 & "tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number], tblInvoiceHistALL.District, "
sQ1 = sQ1 & "tblInvoiceHistALL.[Customer Name],
tblInvoiceHistALL.[Customer Number], tblInvoiceHistALL.[Address Line 1] "
sQ1 = sQ1 & "tblInvoiceHistALL.City, tblInvoiceHistALL.State,
tblInvoiceHistALL.Zip,"
sQ1 = sQ1 & "tblInvoiceHistALL.[Class Description],
tblInvoiceHistALL.[Order Date], tblInvoiceHistALL.[Ship Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Product Description],
tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Eaches Ordered],
tblInvoiceHistALL.[Cases Shipped], tblInvoiceHistALL.[Eaches Shipped],"
sQ1 = sQ1 & "tblRebateExpanded.RebatePdPer,
tblRebateExpanded.RebateAmount, IIf([RebatePdPer]=case,(([Cases
Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,"
sQ1 = sQ1 & "IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER
JOIN tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company) ON
tblItemListLedo.LIN = tblItemListVendor.VListLedoItemDescription),"
sQ1 = sQ1 & "INNER JOIN tblInvoiceHistALL "
sQ1 = sQ1 & " ON tblItemListVendor.USFSItemNo =
tblInvoiceHistALL.[USF Product Number]) "
sQ1 = sQ1 & " INNER JOIN tblRebateExpanded ON
(tblInvoiceHistALL.[Ship Date] = tblRebateExpanded.RebateDate) AND
(tblInvoiceHistALL.[USF Product Number] = tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
 
D

Dale Fye

Lisa,

I really need to see what the final SQ1 string looks like.

Are you familiar with the debug (immediate) window? If not, in the VBA
Editor, select View and then "Immediate Window". This should open a new
window at the bottom of the page, below the code window (where the line is
highlighted).

In the Immediate window, type: ?SQ1
then hit return. It will print the value of SQ1 into the immediate window.
Copy all of that text and paste it back into your response.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


Dale Fye said:
Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


:

Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
'of the export file

Dim myCompany As String 'current row Company name



myDataSource = "SELECT DISTINCTROW tblVendors.Company,
tblItemListVendor.USFSItemNo"
myDataSource = myDataSource & " FROM tblItemListVendor INNER JOIN
tblVendors ON tblItemListVendor.Company = tblVendors.ID"




Set rs = CurrentDb.OpenRecordset(myDataSource, dbOpenDynaset,
dbReadOnly)

'movelast moves to the last record in the recordset
'as a side effect this updates the RecordCount property
'which is why we are doing it
rs.MoveLast

'move back to row one, the first record before we start working
rs.MoveFirst

If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'Populate the recordset and reposition to the beginning
rs.MoveLast
rs.MoveFirst

'make sure we have at least one row / store to work with
If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'build the batch export timestamp string


'keep doing this section until qryCompany\USFNumber runs out of data
Do While Not rs.EOF

'collect the store name of the current row
myCompany = rs.Fields("Company")

'#### QUERY ONE ####
'make the altered query SQL strings with the current row location
as
criteria
sQ1 = "SELECT DISTINCT tblVendors.Company,tblInvoiceHistALL.USF
Product Number, "
sQ1 = sQ1 & "tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number], tblInvoiceHistALL.District, "
sQ1 = sQ1 & "tblInvoiceHistALL.[Customer Name],
tblInvoiceHistALL.[Customer Number], tblInvoiceHistALL.[Address Line 1] "
sQ1 = sQ1 & "tblInvoiceHistALL.City, tblInvoiceHistALL.State,
tblInvoiceHistALL.Zip,"
sQ1 = sQ1 & "tblInvoiceHistALL.[Class Description],
tblInvoiceHistALL.[Order Date], tblInvoiceHistALL.[Ship Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Product Description],
tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Eaches Ordered],
tblInvoiceHistALL.[Cases Shipped], tblInvoiceHistALL.[Eaches Shipped],"
sQ1 = sQ1 & "tblRebateExpanded.RebatePdPer,
tblRebateExpanded.RebateAmount, IIf([RebatePdPer]=case,(([Cases
Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,"
sQ1 = sQ1 & "IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER
 
D

Dale Fye

Lisa,

In the line where you start your IIF statements, it starts out:

IIF([RebatePdPer] = case,

Well, I believe Case is a reserved word (as in SELECT CASE).
My guess is that you want to test for the literal "case", in which case you
should write:

IIF([RebatePdPer] = 'case',

--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


Dale Fye said:
Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


:

Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
'of the export file

Dim myCompany As String 'current row Company name



myDataSource = "SELECT DISTINCTROW tblVendors.Company,
tblItemListVendor.USFSItemNo"
myDataSource = myDataSource & " FROM tblItemListVendor INNER JOIN
tblVendors ON tblItemListVendor.Company = tblVendors.ID"




Set rs = CurrentDb.OpenRecordset(myDataSource, dbOpenDynaset,
dbReadOnly)

'movelast moves to the last record in the recordset
'as a side effect this updates the RecordCount property
'which is why we are doing it
rs.MoveLast

'move back to row one, the first record before we start working
rs.MoveFirst

If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'Populate the recordset and reposition to the beginning
rs.MoveLast
rs.MoveFirst

'make sure we have at least one row / store to work with
If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'build the batch export timestamp string


'keep doing this section until qryCompany\USFNumber runs out of data
Do While Not rs.EOF

'collect the store name of the current row
myCompany = rs.Fields("Company")

'#### QUERY ONE ####
'make the altered query SQL strings with the current row location
as
criteria
sQ1 = "SELECT DISTINCT tblVendors.Company,tblInvoiceHistALL.USF
Product Number, "
sQ1 = sQ1 & "tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number], tblInvoiceHistALL.District, "
sQ1 = sQ1 & "tblInvoiceHistALL.[Customer Name],
tblInvoiceHistALL.[Customer Number], tblInvoiceHistALL.[Address Line 1] "
sQ1 = sQ1 & "tblInvoiceHistALL.City, tblInvoiceHistALL.State,
tblInvoiceHistALL.Zip,"
sQ1 = sQ1 & "tblInvoiceHistALL.[Class Description],
tblInvoiceHistALL.[Order Date], tblInvoiceHistALL.[Ship Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Product Description],
tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Eaches Ordered],
tblInvoiceHistALL.[Cases Shipped], tblInvoiceHistALL.[Eaches Shipped],"
sQ1 = sQ1 & "tblRebateExpanded.RebatePdPer,
tblRebateExpanded.RebateAmount, IIf([RebatePdPer]=case,(([Cases
Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,"
sQ1 = sQ1 & "IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER
 
L

Lisa

I did what you said with the immediate window and this is the text that came up

?sQ1
SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],tblInvoiceHistALL.District,
tblInvoiceHistALL.[Customer Name], tblInvoiceHistALL.[Customer
Number],tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],tblInvoiceHistALL.[Ship Date],
tblInvoiceHistALL.[USF Product Number], tblInvoiceHistALL.[Product
Description],tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped],
tblRebateExpanded.RebatePdPer,tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,IIf([RebatePdPer]='case',(([CasesShipped])+([EachesSh
ipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,FROM ((tblItemListLedo INNER JOIN
(tblVendors INNER JOIN tblItemListVendor ON tblVendors.ID =
tblItemListVendor.Company)ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL
ONtblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF Product Number])
INNER JOIN tblRebateExpanded ON(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)WHERE tblInvoiceHistALL.[Ship Date] Between
#1/1/08# And #3/31/08# AND tblItemListVendor.BillBackDelivMethood='e-mail'
AND tblVendors.Company = 'Advance Food Company' AND tblInvoiceHistALL.[USF
Product Number] = 441481
--
Lisa S.


Dale Fye said:
Lisa,

I really need to see what the final SQ1 string looks like.

Are you familiar with the debug (immediate) window? If not, in the VBA
Editor, select View and then "Immediate Window". This should open a new
window at the bottom of the page, below the code window (where the line is
highlighted).

In the Immediate window, type: ?SQ1
then hit return. It will print the value of SQ1 into the immediate window.
Copy all of that text and paste it back into your response.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


Dale Fye said:
Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


:

Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
'of the export file

Dim myCompany As String 'current row Company name



myDataSource = "SELECT DISTINCTROW tblVendors.Company,
tblItemListVendor.USFSItemNo"
myDataSource = myDataSource & " FROM tblItemListVendor INNER JOIN
tblVendors ON tblItemListVendor.Company = tblVendors.ID"




Set rs = CurrentDb.OpenRecordset(myDataSource, dbOpenDynaset,
dbReadOnly)

'movelast moves to the last record in the recordset
'as a side effect this updates the RecordCount property
'which is why we are doing it
rs.MoveLast

'move back to row one, the first record before we start working
rs.MoveFirst

If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'Populate the recordset and reposition to the beginning
rs.MoveLast
rs.MoveFirst

'make sure we have at least one row / store to work with
If rs.RecordCount = 0 Then
MsgBox "The qryCompany\USFNumber query returned no records?",
vbCritical, "NOTHING TO REPORT"
MakeReports = False
Exit Function
End If

'build the batch export timestamp string


'keep doing this section until qryCompany\USFNumber runs out of data
Do While Not rs.EOF

'collect the store name of the current row
myCompany = rs.Fields("Company")

'#### QUERY ONE ####
'make the altered query SQL strings with the current row location
as
criteria
sQ1 = "SELECT DISTINCT tblVendors.Company,tblInvoiceHistALL.USF
Product Number, "
sQ1 = sQ1 & "tblItemListLedo.LedoItemDescription,
 
D

Dale Fye

I think if you resolve the "case" issue from my other post, you may have it.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I did what you said with the immediate window and this is the text that came up

?sQ1
SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],tblInvoiceHistALL.District,
tblInvoiceHistALL.[Customer Name], tblInvoiceHistALL.[Customer
Number],tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],tblInvoiceHistALL.[Ship Date],
tblInvoiceHistALL.[USF Product Number], tblInvoiceHistALL.[Product
Description],tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped],
tblRebateExpanded.RebatePdPer,tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,IIf([RebatePdPer]='case',(([CasesShipped])+([EachesSh
ipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,FROM ((tblItemListLedo INNER JOIN
(tblVendors INNER JOIN tblItemListVendor ON tblVendors.ID =
tblItemListVendor.Company)ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL
ONtblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF Product Number])
INNER JOIN tblRebateExpanded ON(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)WHERE tblInvoiceHistALL.[Ship Date] Between
#1/1/08# And #3/31/08# AND tblItemListVendor.BillBackDelivMethood='e-mail'
AND tblVendors.Company = 'Advance Food Company' AND tblInvoiceHistALL.[USF
Product Number] = 441481
--
Lisa S.


Dale Fye said:
Lisa,

I really need to see what the final SQ1 string looks like.

Are you familiar with the debug (immediate) window? If not, in the VBA
Editor, select View and then "Immediate Window". This should open a new
window at the bottom of the page, below the code window (where the line is
highlighted).

In the Immediate window, type: ?SQ1
then hit return. It will print the value of SQ1 into the immediate window.
Copy all of that text and paste it back into your response.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


:

Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


:

Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
'of the export file

Dim myCompany As String 'current row Company name



myDataSource = "SELECT DISTINCTROW tblVendors.Company,
tblItemListVendor.USFSItemNo"
myDataSource = myDataSource & " FROM tblItemListVendor INNER JOIN
tblVendors ON tblItemListVendor.Company = tblVendors.ID"




Set rs = CurrentDb.OpenRecordset(myDataSource, dbOpenDynaset,
dbReadOnly)

'movelast moves to the last record in the recordset
'as a side effect this updates the RecordCount property
'which is why we are doing it
rs.MoveLast
 
L

Lisa

I tried putt "" around case but it would not allow me to do so, it will allow
me to use a single' and I did that and that did not work.
--
Lisa S.


Dale Fye said:
I think if you resolve the "case" issue from my other post, you may have it.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I did what you said with the immediate window and this is the text that came up

?sQ1
SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],tblInvoiceHistALL.District,
tblInvoiceHistALL.[Customer Name], tblInvoiceHistALL.[Customer
Number],tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],tblInvoiceHistALL.[Ship Date],
tblInvoiceHistALL.[USF Product Number], tblInvoiceHistALL.[Product
Description],tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped],
tblRebateExpanded.RebatePdPer,tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,IIf([RebatePdPer]='case',(([CasesShipped])+([EachesSh
ipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,FROM ((tblItemListLedo INNER JOIN
(tblVendors INNER JOIN tblItemListVendor ON tblVendors.ID =
tblItemListVendor.Company)ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL
ONtblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF Product Number])
INNER JOIN tblRebateExpanded ON(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)WHERE tblInvoiceHistALL.[Ship Date] Between
#1/1/08# And #3/31/08# AND tblItemListVendor.BillBackDelivMethood='e-mail'
AND tblVendors.Company = 'Advance Food Company' AND tblInvoiceHistALL.[USF
Product Number] = 441481
--
Lisa S.


Dale Fye said:
Lisa,

I really need to see what the final SQ1 string looks like.

Are you familiar with the debug (immediate) window? If not, in the VBA
Editor, select View and then "Immediate Window". This should open a new
window at the bottom of the page, below the code window (where the line is
highlighted).

In the Immediate window, type: ?SQ1
then hit return. It will print the value of SQ1 into the immediate window.
Copy all of that text and paste it back into your response.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


:

Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


:

Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
'of the export file

Dim myCompany As String 'current row Company name



myDataSource = "SELECT DISTINCTROW tblVendors.Company,
tblItemListVendor.USFSItemNo"
 
D

Dale Fye

It looks like you also have a comma right in front of the FROM clause, you
need to remove that from your code as well.

what do you mean "did not work"?

Did you get an error message? If so what was the message?

What type of data is in your [RebatePdPer] field? Is it text? If so, what
are the values in that field.

Post your latest code (after you make the comma change mentioned above), and
the value of the SQ1 string at the end of the build.

Dale

--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I tried putt "" around case but it would not allow me to do so, it will allow
me to use a single' and I did that and that did not work.
--
Lisa S.


Dale Fye said:
I think if you resolve the "case" issue from my other post, you may have it.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



Lisa said:
I did what you said with the immediate window and this is the text that came up

?sQ1
SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],tblInvoiceHistALL.District,
tblInvoiceHistALL.[Customer Name], tblInvoiceHistALL.[Customer
Number],tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],tblInvoiceHistALL.[Ship Date],
tblInvoiceHistALL.[USF Product Number], tblInvoiceHistALL.[Product
Description],tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped],
tblRebateExpanded.RebatePdPer,tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS
Rebate,IIf([RebatePdPer]='case',(([CasesShipped])+([EachesSh
ipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,FROM ((tblItemListLedo INNER JOIN
(tblVendors INNER JOIN tblItemListVendor ON tblVendors.ID =
tblItemListVendor.Company)ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL
ONtblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF Product Number])
INNER JOIN tblRebateExpanded ON(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)WHERE tblInvoiceHistALL.[Ship Date] Between
#1/1/08# And #3/31/08# AND tblItemListVendor.BillBackDelivMethood='e-mail'
AND tblVendors.Company = 'Advance Food Company' AND tblInvoiceHistALL.[USF
Product Number] = 441481
--
Lisa S.


:

Lisa,

I really need to see what the final SQ1 string looks like.

Are you familiar with the debug (immediate) window? If not, in the VBA
Editor, select View and then "Immediate Window". This should open a new
window at the bottom of the page, below the code window (where the line is
highlighted).

In the Immediate window, type: ?SQ1
then hit return. It will print the value of SQ1 into the immediate window.
Copy all of that text and paste it back into your response.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

When I run the module i get Run Time Error 3141 and it says The SELECT
statement includes a reserved word or an argument name that is misspelled or
missing or the punctuation is incorrect. When I hit debug it highlights this
part of the module
qd.SQL = sQ1
--
Lisa S.


:

Lisa,

You posted two items, and I'm not sure how they relate. The first item you
posted in response to my last post was some SQL, but this is not the SQL that
should show up after the code changes I recommended, and still discusses the
3045 error.

The second post, the one I am responding to, appears to have the code
changes, and is now giving you a new error 3141 (do us a favor and add the
"exact" text of the error message when you post here) which implies that a
reserved word, spelling error, or punction error has occurred.

Insert a line immediately below the last line of SQ1 code:

Debug.print SQ1

try to run the code, then copy the text from the debug window and paste it
back in a reply, so I can see exactly what Access/Jet is trying to run.


--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

I have rewritten the code and now am getting an error 3141 the statements has
reserved word spelling error or punctuation error


sQ1 = "SELECT tblVendors.Company, tblItemListLedo.LedoItemDescription,
tblInvoiceHistALL.[Invoice Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.District, tblInvoiceHistALL.[Customer
Name], tblInvoiceHistALL.[Customer Number],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Address Line 1], tblInvoiceHistALL.City,
tblInvoiceHistALL.State,"
sQ1 = sQ1 & "tblInvoiceHistALL.Zip, tblInvoiceHistALL.[Class
Description], tblInvoiceHistALL.[Order Date],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Ship Date], tblInvoiceHistALL.[USF
Product Number], tblInvoiceHistALL.[Product Description],"
sQ1 = sQ1 & "tblInvoiceHistALL.Brand, tblInvoiceHistALL.[Cases Ordered],
tblInvoiceHistALL.[Eaches Ordered],"
sQ1 = sQ1 & "tblInvoiceHistALL.[Cases Shipped],
tblInvoiceHistALL.[Eaches Shipped], tblRebateExpanded.RebatePdPer,"
sQ1 = sQ1 & "tblRebateExpanded.RebateAmount,
IIf([RebatePdPer]=case,(([Cases Shipped])+([Eaches
Shipped]/[tblItemListVendor]![CaseEachCount]))*[RebateAmount],(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))*[RebateAmount]) AS Rebate,"
sQ1 = sQ1 &
"IIf([RebatePdPer]=case,(([CasesShipped])+([EachesShipped]/[tblItemListVendor]![CaseEachCount])),(([Cases
Shipped]*[tblItemListVendor]![RebateCaseWgtLBS])+([Eaches
Shipped]*[tblItemListVendor]![RebateEachWgtLBS]))) AS [Total CS/LBS],
tblItemListVendor.BillBackDelivMethood,"
sQ1 = sQ1 & "FROM ((tblItemListLedo INNER JOIN (tblVendors INNER JOIN
tblItemListVendor ON tblVendors.ID = tblItemListVendor.Company)"
sQ1 = sQ1 & "ON tblItemListLedo.LIN =
tblItemListVendor.VListLedoItemDescription) INNER JOIN tblInvoiceHistALL ON"
sQ1 = sQ1 & "tblItemListVendor.USFSItemNo = tblInvoiceHistALL.[USF
Product Number]) INNER JOIN tblRebateExpanded ON"
sQ1 = sQ1 & "(tblInvoiceHistALL.[Ship Date] =
tblRebateExpanded.RebateDate)"
sQ1 = sQ1 & "AND (tblInvoiceHistALL.[USF Product Number] =
tblRebateExpanded.USFSItemNo)"
sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" &
[Forms]![frmReportRebateParameters]![txtBeginningDate] & "# And #" &
[Forms]![frmReportRebateParameters]![txtEndingDate] & "# AND
tblItemListVendor.BillBackDelivMethood='e-mail' " & " AND tblVendors.Company
= '" & rs("Company") & "'" & " AND tblInvoiceHistALL.[USF Product Number] = "
& rs("USFSItemNo")
--
Lisa S.


:

Just noticed a mistake in my replacement WHERE clause, forgot to delete one
of the ) at the end. I've incorporated that part about the company and
product number in this correction.

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate] _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail' " _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " _
& rs("USFSItemNo")

This assumes that [Company] is a text field and that [USF Product Number] is
not.

HTH
Dale

The fix for this was mentioned early on, I think by Dave.

Whenever you put spaces in your field names (I never do this, I always
separate words with an underscore), you must wrap the field name in [ ]'s
every time you use the field name. You appear to have done that for most
of
your fields, but not for this one [USF Product Number], so go through your
code and do that for every field that contains a space.

I can tell by a cursory glance that there is still a major problem with
the
WHERE clause. These lines, which currently look like:

sQ1 = sQ1 & "WHERE (((tblInvoiceHistALL.[Ship Date]) Between
[Forms]![frmReportRebateParameters]![txtBeginningDate] "
sQ1 = sQ1 & " And
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND
((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product
Number"

Should look something like:

sQ1 = sQ1 & "WHERE tblInvoiceHistALL.[Ship Date] Between #" _
& [Forms]![frmReportRebateParameters]![txtBeginningDate] _
& "# And #" _
& [Forms]![frmReportRebateParameters]![txtEndingDate]) _
& "# AND tblItemListVendor.BillBackDelivMethood='e-mail'"

As I posted in my previous post, the references to the controls on the
form
for beginning and ending date have to be outside the quotes, and need to
be
wrapped in #'s. Also, I assume that the field [BillBackDelivMethod] is a
text field, and that it contains some records where the value in that
field
is 'e-mail'. If that is correct, then the code above should work.

I'm not sure what the last line in your original code is meant to do, but
it
is definately not part of the WHERE clause, unless it is supposed to look
like:

sQ1 = sQ1 _
& " AND tblVendors.Company = '" & rs("Company") & "'" _
& " AND tblInvoiceHistALL.[USF Product Number] = " &
rs("USFSItemNo")

Addition of this last part to the SQL would make sense, as there are no
other references in your SQL string to the Company and USFSItemNo values
that
show up in your original query.

Make these changes, and try it again. We'll get there eventually. If it
is
still not working, post back with the modified code, and if it gets that
far,
the actual string that gets built at the end of the SQ1 build process.

Dale
--
Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



:

Here is the module I have created
The error is Run time error 3075
The message says Syntax error (missing operation) in query expression
'tblInvoiceHistAll.USF Procuct Number'
When I debug it highlights the qd.SQL = sQ1

Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1

I hope this helps you help me.

Option Compare Database
Option Explicit


Public Function MakeReports() As Boolean
'### v 7.0

'Const myPath As String = "C:\tmpWork\"
Const myPath As String = "S:\Product Info\REBATES\Rebates 2008\"
Const Qname1 As String = "qryRebateE-Mail"


'#### Should be correct - pasted this in from your email
Const myReport As String = "rptRebateE-Mail"

Dim rs As Recordset 'object ref to qryCompany\USFNumber
Dim qd As QueryDef 'object ref to query item
Dim myDataSource As String

Dim sQ1 As String 'query SQL text 1
Dim myFileName As String 'the string var we target with the
'concatenated full path and file name
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top