MS Access datatype mismatch error

S

Steve Briley

I'm new to Python and I'm trying to do some database work with MS Access, but I can't seem to get around a "datatype mismatch error".  Here's an example table that I'm working with...



 



ID      name    dept
1       steve   acct
2       mike    acct
3       george  payroll
4       frank   payroll

>>> import win32com.client
>>> engine = win32com.client.Dispatch("DAO.DBEngine.36")
>>> db = engine.OpenDatabase(r"c:\python-access\db4.mdb")
>>> rs3 = db.OpenRecordset("work")








>>>rs3 = db.OpenRecordset("select * from work where ID = 3 ")
>>>dept = rs3.Fields("dept")
>>>print dept
payroll



The above does exactly what I want, except I'd like to use a variable instead of the number 3.  When I try I get the following...



>>>idnum = 3
>>>rs3 = db.OpenRecordset("select * from work where ID = '%i'" %(idnum))



Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
  File "win32com\gen_py\00025E01-0000-0000-C000-000000000046x0x5x0.py", line 508, in OpenRecordset
    ret = self._oleobj_.InvokeTypes(1610809383, LCID, 1, (9, 0), ((8, 1), (12, 17), (12, 17), (12, 17)),Name, Type, Options, LockEdit)com_error: (-2147352567, 'Exception occurred.', (0, 'DAO.Database', 'Data type mismatch in criteria expression.', 'jeterr40.chm', 5003464, -2146824824), None)



The data type for the ID field in the table is "number" so why am I recieving the datatype mismatch error? I'd really appreciate some help, if anyone has any suggestions.  Thanks!




Choose now from 4 levels of MSN Hotmail Extra Storage - no more account overload!
 
I

Ian Parker

Steve said:
I'm new to Python and I'm trying to do some database work with
MS Access, but I can't seem to get around a "datatype mismatch
error".  Here's an example table that I'm working with...
 
ID      name    dept
1       steve   acct
2       mike    acct
3       george  payroll
4       frank   payroll

payroll

The above does exactly what I want, except I'd like to use a
variable instead of the number 3.  When I try I get the following...

%(idnum))

Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
  File
"win32com\gen_py\00025E01-0000-0000-C000-000000000046x0x5x0.py",
line 508, in OpenRecordset
    ret = self._oleobj_.InvokeTypes(1610809383, LCID, 1, (9, 0), ((8,
1), (12, 17), (12, 17), (12, 17)),Name, Type, Options, LockEdit)
com_error: (-2147352567, 'Exception occurred.', (0,
'DAO.Database', 'Data type mismatch in criteria expression.',
'jeterr40.chm', 5003464, -2146824824), None)

The data type for the ID field in the table is "number" so why am I
recieving the datatype mismatch error? I'd really appreciate some
help, if anyone has any suggestions.  Thanks!


Choose now from 4 levels of MSN Hotmail Extra Storage - no more
account overload!

Perhaps you don't need the single quotes around %i. e.g. try:
Regards
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top