Re: Need help with Code Please!!!
- From: Lisa <Lisa@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 9 Apr 2008 10:45:03 -0700
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
[Forms]![frmReportRebateParameters]![txtEndingDate]) "
sQ1 = sQ1 & "AND ((tblItemListVendor.BillBackDelivMethood)=e-mail))"
sQ1 = sQ1 & "tblVendors.Company,tblInvoiceHistALL.USF Product Number"
'
'#### Now we get to work using our new strings ####
'We rewrite the underlying SQL of the four queries that provide the
report recordsets
'with our newly constructed and slightly altered query strings -
1,2,3,4
Set qd = CurrentDb.QueryDefs(Qname1)
qd.SQL = sQ1
qd.Close
Set qd = Nothing
'#### NOTE!!! I don't know if we have to open the report when we
export?
'#### I'm guessing that we don't have to, since we've hard-coded the
query changes.
'#### You can easily uncomment the docmd report open and closing
statements below
'#### if you want to see the reports as they go by, or if the export
requires the
'#### form to be open and have focus.
'DoCmd.OpenReport myReport, acViewNormal
myFileName = Replace(Replace(myPath & myCompany & "_" & "Rebates" &
"_" & ".rtf", "/", ""), "'", "")
DoCmd.OutputTo acReport, myReport, "RichTextFormat(*.rtf)",
myFileName, False, ""
'DoCmd.Close acReport, myReport
'move to the next row of qryCompany\USFNumber data
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
MakeReports = True
End Function
Sub check()
Const Qname1 As String = "qryRebateE-Mail"
Dim qd As QueryDef, qdSource As QueryDef
Set qd = CurrentDb.QueryDefs(Qname1)
Set qdSource = CurrentDb.QueryDefs("original_" & Qname1)
qd.SQL = qdSource.SQL
Set qd = Nothing
Set qdSource = Nothing
End Sub
--
Lisa S.
"Dale Fye" wrote:
Lisa,.
Can you copy your current code and paste it into the thread again?
Also, post the error number, the text of the error message, the line that is
highlighted when the error occurs.
Lastly, post the text of the SQL string after the complete build. You can
do this by adding a Debug.Print SQ1 line immediately after the last line that
builds SQ1.
Dale
--
Don''t forget to rate the post if it was helpful!
email address is invalid
Please reply to newsgroup only.
"Lisa" wrote:
I made a typo yeaterday. The error highlights
qd.SQL = sQ1
I don't really know if that makes a difference. I have tried and corrected
some of you comments and am still have the same error message.
--
Lisa S.
"Dale Fye" wrote:
I was going to say that given that her first query that defines her recordset
only selects Company and USFSItemNo, that I think DISTINCT is what she
probably needed.
Then I copied the SQ1 code and pasted it into Word, and found that she never
references either of those recordsets fields in the query that she is
building inside the loop, so I don't know what she is doing. The only reason
I can think of for building the other query inside of the loop is to
reference the values in the recordset that is being looped through.
Additionally:
1. She has numerous lines where she needs to insert a space before the
"AND" or "WHERE" so that the spacing will be correct.
2. She has referenced the controls for txtBeginningDate and txtEndingDate
inside of the quotes in here WHERE clause, so that won't work. Should
probably look like:
SQ1 = SQ1 & " WHERE tblInvoiceHistAll.[Ship Date] BETWEEN #" _
& Forms![frmReportRebateParameters]!txtBeginningDate & "# AND #"
& Forms![frmReportRebateParameters]! & "# "
3. She also refers to a value 'e-mail' in her WHERE clause that is not a
declared variable, so it probably needs to be wrapped in quotes, like:
SQ1 = SQ1 & " AND tblItemListVendor.BillBackDelivMethod = 'e-mail'))"
Lisa, I hope some of these comments will help.
Dale
--
Don''t forget to rate the post if it was helpful!
email address is invalid
Please reply to newsgroup only.
"Stuart McCall" wrote:
"Dale Fye" <dale.fye@xxxxxxxxxx> wrote in message
news:9A40E978-A83D-426C-9CFB-C1C11B3582E8@xxxxxxxxxxxxxxxx
I would also recommend that you replace your DISTINCTROW with DISTINCT.<SNIP>
DISTINCTROW looks at all of the fields in the joined table, so it takes
longer than DISTINCT, which only looks at the fields in the query.
But DISTINCT returns unique values, unlike DISTINCTROW.
- Follow-Ups:
- Re: Need help with Code Please!!!
- From: Dale Fye
- Re: Need help with Code Please!!!
- References:
- Need help with Code Please!!!
- From: Lisa
- RE: Need help with Code Please!!!
- From: Lisa
- RE: Need help with Code Please!!!
- From: Klatuu
- RE: Need help with Code Please!!!
- From: Lisa
- RE: Need help with Code Please!!!
- From: Dale Fye
- Re: Need help with Code Please!!!
- From: Stuart McCall
- Re: Need help with Code Please!!!
- From: Dale Fye
- Re: Need help with Code Please!!!
- From: Lisa
- Re: Need help with Code Please!!!
- From: Dale Fye
- Need help with Code Please!!!
- Prev by Date: RE: SetFocus not working properly
- Next by Date: RE: Main form not refreshing...
- Previous by thread: Re: Need help with Code Please!!!
- Next by thread: Re: Need help with Code Please!!!
- Index(es):
Relevant Pages
|
Loading