Results 1 to 5 of 5

Thread: Why am I getting a Type Mismatch error on this code on the first instance of Set rs =

  1. #1

    Thread Starter
    Hyperactive Member
    Join Date
    Jan 1999
    Location
    North East America
    Posts
    463

    Unhappy

    Why am I getting a Type Mismatch error on this code on the first instance of Set rs = db.OpenRecordset(SQLString)?

    Private Sub cmdFind_Click()

    Dim db As Database
    'This is the object that will hold the connection
    'to our database

    Dim rs As Recordset
    'This is the object that will hold a set of
    'records coming back from the database

    Dim SQLString As String
    'This is just to temporarily hold the SQL string

    Set db = OpenDatabase("c:\Program Files\Microsoft Visual Studio\Nwind.mdb")
    'This activates the database object, telling it
    'to link to the Nwind.mdb database. Note that
    'you may have to change this path depending on
    'where Visual Basic has been installed on your PC.

    SQLString = "SELECT Orders.CustomerID, " & _
    "Count(Orders.OrderID) " & _
    "AS NoOfOrders From Orders " & _
    "GROUP BY Orders.CustomerID " & _
    "HAVING (((Orders.CustomerID)='" & _
    txtCustID.Text & "'))"
    'This SQL statement was created in Access. It simply returns
    'the number of orders for a particular customer using the
    ''Count' feature on the 'Total' line. If you'd like to use
    'Count, but are a little unsure about it - search Access help -
    'it's very simple!

    Set rs = db.OpenRecordset(SQLString)
    'This ties the recordset object with the database object.
    'You're telling it to set the recordset object to whatever
    'the "db.OpenRecordset" function returns. And that function
    'will return a set of records according to the SQL statement
    'you pass it.

    If rs.BOF = True And rs.EOF = True Then
    'Obviously the customer cannot be found in the
    'orders table, so let's tell the user - and close
    'the recordset/database connections
    MsgBox ("Cannot find customer") ' - " & "txtCustID.Text & " - " & "in the Orders table!")
    rs.Close
    db.Close
    Exit Sub
    End If

    txtTotalNumber.Text = rs.Fields("NoOfOrders")
    'Simply throws the value in the 'NoOfOrders' field
    'from the Recordset, direct into the txtTotalNumber
    'text box

    SQLString = "SELECT Orders.CustomerID, " & _
    "Last(Orders.OrderDate) " & _
    "AS LastOrderDate From Orders " & _
    "GROUP BY Orders.CustomerID " & _
    "HAVING (((Orders.CustomerID)='" & txtCustID.Text & "'))"
    'We've already figured out the number of orders - so
    'this is the SQL statement that finds out the last order
    'date

    Set rs = db.OpenRecordset(SQLString)
    'This is the second time we've seen this statement. Here,
    'it says the Recordset object to hold the records
    'from our new SQLString statement

    txtLastDate.Text = rs.Fields("LastOrderDate")
    'Here, we're taking the information from the 'LastOrderDate'
    'field and placing it in the txtLastDate text box

    txtLastDate.Text = Format(txtLastDate.Text, "Long Date")
    'Now we're just formatting to make it look pretty

    rs.Close
    'Close the Recordset

    db.Close
    'Close the Database

    End Sub

    TMacPherson
    MIS Systems Engineer
    [email protected]


  2. #2
    Hyperactive Member barrk's Avatar
    Join Date
    Sep 2000
    Location
    My own little world
    Posts
    274
    You simply need to change:

    Set rs = db.OpenRecordset(SQLString)

    to:

    db.OpenRecordset SQLString



  3. #3

    Thread Starter
    Hyperactive Member
    Join Date
    Jan 1999
    Location
    North East America
    Posts
    463
    Hey Bark Thanks but thats not it... You need to set the record source to a database...
    TMacPherson
    MIS Systems Engineer
    [email protected]


  4. #4
    Addicted Member LAURENS's Avatar
    Join Date
    Jan 2000
    Location
    Utrecht, the Netherlands
    Posts
    138
    If it's vb6 you're using you may have to qualify the recordset and database.
    Dim rs As DAO.Recordset
    Dim db As Dao.Database

    Assuming you're using DAO of course. If it's ADO then it's ADO.DATABASE etc.
    Regards,
    Laurens

    Using VB5 Enterprise edition SP3
    VB6 Enterprise edition SP5

  5. #5

    Thread Starter
    Hyperactive Member
    Join Date
    Jan 1999
    Location
    North East America
    Posts
    463

    Wink

    Thanks LAURENS You got it that was the problem!!!!
    TMacPherson
    MIS Systems Engineer
    [email protected]


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width