Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / New Users / April 2007

Tip: Looking for answers? Try searching our database.

Dynamic List Box using VBA

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Doctorjones_md - 16 Apr 2007 04:02 GMT
I wasn't really sure how to phrase this one -- this isn't your Typical
Drop-Down List.

I have a SELECT statement which queries SQL Server 2005 and displays the
data in Excel.

Let's say that a database lists products that have been delivered to 4
different cities, on 3 seperate days -- without knowing (in advance) the
delivery dates, how could I create an input/drop-down field to allow the
user to specify a particular date?  I envision something like this:

VBA code produces a list box of delivery dates based on a particular product
and city.  The user selects a delivery date from the list-boxe, and this
selection gets passed to a SQL Select Statement to return the data to an
EXCEL spreadsheet.  I just don't know of any way to do this ...

Below is the code I'm using --
===================
Option Explicit
Sub DataExtractSpecific()
' Create a connection object.
Dim cnExcel As ADODB.Connection
Set cnExcel = New ADODB.Connection

' Provide the connection string.
Dim strConn As String

'Use the SQL Server OLE DB Provider.
strConn = "PROVIDER=SQLOLEDB;"

'Connect to the DWS_Sales database on the Products Server.
strConn = strConn & "DATA SOURCE=xx.x.xx.xx;INITIAL CATALOG=Products;" & _
          "User Id=xxxxxxx;" & _
          "Password=xxxxxx"

'Now open the connection.
cnExcel.Open strConn

On Error Resume Next

' Create a recordset object.
Dim OppNumber As String
Dim sqlCommand As String
'Dim CloseDate As Date
Dim rsExcel As ADODB.Recordset
Set rsExcel = New ADODB.Recordset
OppNumber = InputBox("Please Re-Enter Product Number for the 2nd lookup
query.")
'CloseDate = InputBox("Enter the Purchase Date -- like 2/26/2007 11:44")
sqlCommand = "SELECT * FROM Tracking_Specific WHERE [Product Number] = " +
ProdNumber
With rsExcel
   ' Assign the Connection object.
   .ActiveConnection = cnExcel
   ' Extract the required records.
   .Open sqlCommand
   ' Copy the records into cell A1 on Sheet1.
   Sheet1.Range("A3").CopyFromRecordset rsExcel

   ' Tidy up
   .Close
End With

cnExcel.Close
Set rsExcel = Nothing
Set cnExcel = Nothing

End Sub
===============
Many Thanks (in advance) for any assistance on this.

Shane
Bob Phillips - 16 Apr 2007 09:44 GMT
Do you have to do a subsequent SQL query, or could you just filter the data
that you already have?

Signature

HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)

>I wasn't really sure how to phrase this one -- this isn't your Typical
> Drop-Down List.
[quoted text clipped - 68 lines]
>
> Shane
doctorjones_md - 16 Apr 2007 10:01 GMT
Bob,

It appears to me (but I'm open to alternative suggestions) that I'll need to
perform an initial SQL query to create the list box, then pass the selection
from this list box to a subsequent SELECT statement for the final query.
I'm using a Date/Time stamp for the delivery date, so there isn't a way for
the user to know the exact delivery Date/Time without selecting it from a
list box.

I'm not certain that what I'm trying to do here is even possible -- any
thoughts on this?

Thanks for your prompt reply.

Shane
==================================
> Do you have to do a subsequent SQL query, or could you just filter the
> data that you already have?
[quoted text clipped - 74 lines]
>>
>> Shane
Bob Phillips - 16 Apr 2007 11:01 GMT
If you do issue another query, you could issue it with SQL such as

sqlCommand = "SELECT * FROM Tracking_Specific " & _
                       "WHERE [Product Number] = " & ProdNumber & " AND " &
_
                       "               [Date] = #" & Range("A1").Text & "#"

where A1 is the cell with the drop-down date selected.

Signature

HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)

> Bob,
>
[quoted text clipped - 90 lines]
>>>
>>> Shane
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.