• Hi All

    Please note that at the Chandoo.org Forums there is Zero Tolerance to Spam

    Post Spam and you Will Be Deleted as a User

    Hui...

  • When starting a new post, to receive a quicker and more targeted answer, Please include a sample file in the initial post.

SQL Statement Using Input Box Value as Variable

Hi,


I need to query access Table and retrieve matching records by matching a variable supplied by the user through input box. The problem I face now is after several days of attempt to frame a SQL query, I couldn't get the result. I have given the statement. If anyone can help it would be of great help.


Dim Appl_ID

Appl_ID = Inputbox ("Please enter the Appl_ID")

rst.Open "Select * From Table1 where [Table1].[APPL_ID] = chr$(34) & APPL_ID & chr$(34)", cnt


If I supply a variable in place of the statement

"chr$(34) & APPL_ID & chr$(34)"

I am able to get the result. I am not sure what is wrong in the above statement.


At the same time, if you can also guide how to add a second variable may be "Name" in the same statement, it would of help.


Regards,

Ramnath
 
Dim Appl_ID

Appl_ID = Inputbox ("Please enter the Appl_ID")

rst.Open "Select * From Table1 where [Table1].[APPL_ID] = ''", cnt
 
Hi xld,


I tried it just now. But its not working. I am just getting the column headings and 0 record.


Can you please help?


Regards,

Ramnath
 
Maybe the code didn't come out too well, it should be


Equals single quote single quote double quotes.


Us APPL-ID text or numeric?
 
Hi xld & Dan,


Here is the code.


Sub Import_Inputbox()

Dim cnt As New ADODB.Connection

Dim rst As New ADODB.Recordset


Dim xlApp As Object

Dim xlWb As Object

Dim xlWs As Object


Dim recArray As Variant


Dim strDB As String

Dim fldCount As Integer

Dim recCount As Long

Dim iCol As Integer

Dim iRow As Integer


' Set the string to the path of your Northwind database

strDB = "C:Documents and Settingsramnath.divakaranMy DocumentsDatabase1.accdb"


' Open connection to the database

cnt.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _

"Data Source=" & strDB & ";"


''When using the Access 2007 Northwind database

''comment the previous code and uncomment the following code.

'cnt.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _

' "Data Source=" & strDB & ";"


Dim APPL_ID

APPL_ID = InputBox("Please enter the APPL_ID")


' Open recordset based on Table1

rst.Open "Select * From Table1 where [Table1].[APPL_ID] = ''", cnt


' Create an instance of Excel and add a workbook

Set xlApp = CreateObject("Excel.Application")

Set xlWb = xlApp.Workbooks.Add

Set xlWs = xlWb.Worksheets("Sheet1")


' Display Excel and give user control of Excel's lifetime

xlApp.Visible = True

xlApp.UserControl = True


' Copy field names to the first row of the worksheet

fldCount = rst.Fields.Count

For iCol = 1 To fldCount

xlWs.Cells(1, iCol).Value = rst.Fields(iCol - 1).Name

Next


' Check version of Excel

If Val(Mid(xlApp.Version, 1, InStr(1, xlApp.Version, ".") - 1)) > 8 Then

'EXCEL 2000,2002,2003, or 2007: Use CopyFromRecordset


' Copy the recordset to the worksheet, starting in cell A2

xlWs.Cells(2, 1).CopyFromRecordset rst

'Note: CopyFromRecordset will fail if the recordset

'contains an OLE object field or array data such

'as hierarchical recordsets


Else

'EXCEL 97 or earlier: Use GetRows then copy array to Excel


' Copy recordset to an array

recArray = rst.GetRows

'Note: GetRows returns a 0-based array where the first

'dimension contains fields and the second dimension

'contains records. We will transpose this array so that

'the first dimension contains records, allowing the

'data to appears properly when copied to Excel


' Determine number of records


recCount = UBound(recArray, 2) + 1 '+ 1 since 0-based array

' Check the array for contents that are not valid when

' copying the array to an Excel worksheet

For iCol = 0 To fldCount - 1

For iRow = 0 To recCount - 1

' Take care of Date fields

If IsDate(recArray(iCol, iRow)) Then

recArray(iCol, iRow) = Format(recArray(iCol, iRow))

' Take care of OLE object fields or array fields

ElseIf IsArray(recArray(iCol, iRow)) Then

recArray(iCol, iRow) = "Array Field"

End If

Next iRow 'next record

Next iCol 'next field

' Transpose and Copy the array to the worksheet,

' starting in cell A2

xlWs.Cells(2, 1).Resize(recCount, fldCount).Value = _

TransposeDim(recArray)

End If


' Auto-fit the column widths and row heights

xlApp.Selection.CurrentRegion.Columns.AutoFit

xlApp.Selection.CurrentRegion.Rows.AutoFit


' Close ADO objects

rst.Close

cnt.Close

Set rst = Nothing

Set cnt = Nothing


' Release Excel references

Set xlWs = Nothing

Set xlWb = Nothing


Set xlApp = Nothing


End Sub


Function TransposeDim(v As Variant) As Variant

' Custom Function to Transpose a 0-based array (v)


Dim X As Long, Y As Long, Xupper As Long, Yupper As Long

Dim tempArray As Variant


Xupper = UBound(v, 2)

Yupper = UBound(v, 1)


ReDim tempArray(Xupper, Yupper)

For X = 0 To Xupper

For Y = 0 To Yupper

tempArray(X, Y) = v(Y, X)

Next Y

Next X


TransposeDim = tempArray


End Function

End Function
 
Hi Guys,


I got the magic code which works now.


rst.Open "Select * From Auto_Finance where [Auto_Finance].[APPL_ID] = '" & APPL_ID & "'", cnt


'" & APPL_ID & "'" this made the difference.


Thank you so much xld & Dan for your valuable time.


Regards,

Ramnath
 
Back
Top