Recording LARGE SQL script Into a macro

Jarrod

New Member
Joined
Oct 13, 2005
Messages
19
Hi all, I've scored the forums and are yet to find any other instances of this problem. So here goes...

The company I work for is going though a growth spurt with regard to reporting requirments. I've recently been tailoring reports to suit as many as 30 new types of report. As our management team prefer using Excel, i've created many automated worksheets which run a various of SQL scripts in the background.

Currently im faced with the task of creating a worksheet in which staff would manually enter product barcodes (as many as 80 products) , for my script to pick up and collect sales data upon.

While I managed to successfully create a small version allowing the use 25 products, any more lines caused the macro to fail as there were too many characters in the unbroken line or something.

The data I collect is captured from many tables and are aften quite long in length. I normally simply record the macro while i connect to ODBC and edit the query in MS Query. It won't even record the full query. I've tried writing the code manually with the correct syntax but it stops me at a certain point because the script again contains too many characters.

I'd like to know...
1) is there an easier way connect to ODBC and run a specific query regardless of its size?

2) is there a better way to collect variable data (like my 80 products) from a range in excel.


I would so greatly appreciate assistance with this issue. It's really doing my head in now.

Thank you for all your great work. This site helps many of us keep our jobs and sometimes look really clever to boot.

example scripts below:




In this (recorded) macro i am collecting barcodes for randomly entered products...

myvar01 = Range("Promo_Items!A2")
myvar02 = Range("Promo_Items!A3")
myvar03 = Range("Promo_Items!A4")
myvar04 = Range("Promo_Items!A5")
myvar05 = Range("Promo_Items!A6")
myvar06 = Range("Promo_Items!A7")
myvar07 = Range("Promo_Items!A8")
myvar08 = Range("Promo_Items!A9")
myvar09 = Range("Promo_Items!A10")
myvar10 = Range("Promo_Items!A11")
myvar11 = Range("Promo_Items!A12")
myvar12 = Range("Promo_Items!A13")
myvar13 = Range("Promo_Items!A14")
myvar14 = Range("Promo_Items!A15")
myvar15 = Range("Promo_Items!A16")
myvar16 = Range("Promo_Items!A17")
myvar17 = Range("Promo_Items!A18")
myvar18 = Range("Promo_Items!A19")
myvar19 = Range("Promo_Items!A20")
myvar20 = Range("Promo_Items!A21")
myvar21 = Range("Promo_Items!A22")
myvar22 = Range("Promo_Items!A23")
myvar23 = Range("Promo_Items!A24")
myvar24 = Range("Promo_Items!A25")
myvar25 = Range("Promo_Items!A26")

With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
.Connection = _
"ODBC;DSN=WHSE;Description=RMS Sales;APP=Microsoft Office 2003;WSID=ITUSER;DATABASE=WHSE;Trusted_Connection=Yes"
.CommandType = xlCmdSql
.CommandText = Array( _
"SELECT dbo.RMS_DailySales.ItemNumber, dbo.ItemMaster.ItemDescription AS Description, dbo.ItemMaster.ItemClassDescription AS Department, " & Chr(13) & "" & Chr(10) & " dbo.ItemMaster.ItemCategory1 AS Cate" _
, _
"gory, dbo.ItemMaster.CurrentCost AS Cost, dbo.RMS_DailySales.StoreCode AS [Store ID], dbo.RMS_DailySales.QtySold, " & Chr(13) & "" & Chr(10) & " dbo.RMS_DailySales.SoldPrice" & Chr(13) & "" & Chr(10) & "FROM dbo.RMS_DailySales" _
, _
" INNER JOIN" & Chr(13) & "" & Chr(10) & " dbo.ItemMaster ON dbo.RMS_DailySales.ItemNumber = dbo.ItemMaster.ItemNumber" & Chr(13) & "" & Chr(10) & "WHERE (dbo.RMS_DailySales.TransactionDate BETWEEN CONVERT(DATETIME, " _
, _
"" & Range("calcs!$E$25") & ", 102) AND CONVERT(DATETIME, " & Range("calcs!$E$26") & ", " & Chr(13) & "" & Chr(10) & " 102))" & Chr(13) & "" & Chr(10) & "AND(dbo.RMS_DailySales.ItemNumber = '" & myvar01 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar02 & "')" & Chr(13) & "" & Chr(10) & "or (db" _
, _
"o.RMS_DailySales.ItemNumber = '" & myvar03 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar04 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar05 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar06 & "" _
, _
"')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar07 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar08 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar09 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber =" _
, _
" '" & myvar10 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar11 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar12 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar13 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales." _
, _
"ItemNumber = '" & myvar14 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar15 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar16 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar17 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS" _
, _
"_DailySales.ItemNumber = '" & myvar18 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar19 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar20 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar21 & "')" & Chr(13) & "" _
, _
"" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar22 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar23 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar24 & "')" & Chr(13) & "" & Chr(10) & "or (dbo.RMS_DailySales.ItemNumber = '" & myvar25 & "" _
, _
"')" & Chr(13) & "" & Chr(10) & "" & Chr(13) & "" & Chr(10) & "GROUP BY dbo.RMS_DailySales.ItemNumber, dbo.ItemMaster.ItemDescription, dbo.RMS_DailySales.StoreCode, dbo.RMS_DailySales.QtySold, " & Chr(13) & "" & Chr(10) & " dbo.ItemMaster.ItemClassDescrip" _
, _
"tion, dbo.ItemMaster.CurrentCost, dbo.ItemMaster.ItemCategory1, dbo.RMS_DailySales.SoldPrice" _
)
.CreatePivotTable TableDestination:= _
"'[" & Range("workbookname") & "]ToDate'!R3C1", TableName:="ToDate", _
DefaultVersion:=xlPivotTableVersion10
End With









In this I am simply trying to save this SQL script into a macro so I can allow the user to alter the date ranges before its run.


StartDate = Range("calcs!B1")
EndDate = Range("calcs!B2")


SELECT
dbo.RMS_DailySales.ItemNumber, dbo.ItemMaster.ItemDescription AS Description,
dbo.ItemMaster.ItemClassDescription AS Department, dbo.ItemMaster.ItemCategory1 AS Category, dbo.ItemMaster.CurrentCost AS Cost, dbo.RMS_DailySales.StoreCode AS [Store ID], dbo.RMS_DailySales.QtySold, dbo.RMS_DailySales.SoldPrice FROM dbo.RMS_DailySales

INNER JOIN dbo.ItemMaster ON dbo.RMS_DailySales.ItemNumber = dbo.ItemMaster.ItemNumber

WHERE dbo.RMS_DailySales.TransactionDate BETWEEN

CONVERT(DATETIME, " & StartDate & ", 102) AND
CONVERT(DATETIME, " & EndDate & ", 102) AND

dbo.RMS_DailySales.ItemNumber = '9315626006338' or
dbo.RMS_DailySales.ItemNumber = '9315626006352' or
dbo.RMS_DailySales.ItemNumber = '9315626006345' or
dbo.RMS_DailySales.ItemNumber = '9315626006314' or
dbo.RMS_DailySales.ItemNumber = '9315626009896' or
dbo.RMS_DailySales.ItemNumber = '9315626006642' or
dbo.RMS_DailySales.ItemNumber = '9315626009421' or
dbo.RMS_DailySales.ItemNumber = '9315626009438' or
dbo.RMS_DailySales.ItemNumber = '9315626011509' or
dbo.RMS_DailySales.ItemNumber = '9315626006369' or
dbo.RMS_DailySales.ItemNumber = '9315626006307'

GROUP BY
dbo.RMS_DailySales.ItemNumber, dbo.ItemMaster.ItemDescription,
dbo.RMS_DailySales.StoreCode, dbo.RMS_DailySales.QtySold,
dbo.ItemMaster.ItemClassDescription, dbo.ItemMaster.CurrentCost,
dbo.ItemMaster.ItemCategory1, dbo.RMS_DailySales.SoldPrice






Thanks again
 

Excel Facts

Lock one reference in a formula
Need 1 part of a formula to always point to the same range? use $ signs: $V$2:$Z$99 will always point to V2:Z99, even after copying

Forum statistics

Threads
1,215,066
Messages
6,122,948
Members
449,095
Latest member
nmaske

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top