DAO and Access97 WHERE clause fails

John Machin sjmachin at lexicon.net
Sat Jun 9 03:33:45 CEST 2007

On Jun 9, 10:17 am, "v.davis2" <v.dav... at cox.net> wrote:
> Hi all,
> I am attempting to use Access97 as the database to hold the results of a
> python script. I seem to be able to make simple SELECT clauses work (like
> SELECT * FROM TableName), but have not been able to figure out how to add a
> WHERE clause to that (e.g., SELECT * FROM TableName WHERE myFieldName = 34)
> This fails complaining that the wrong number of parameters are present.
> I haved tried DAO36 and I have tried the ADO version with the same results.
> Therefore I have to conclude it is my screwup!
> Help in the forum or via email would sure be appreciated! (v.dav... at cox.net)
> Here is the skeleton code:
> import win32com.client
> daoEngine = win32com.client.Dispatch('DAO.DBEngine.35')
> sDBname = 'vpyAnalyzeDirectorySize.mdb'
> sDB = 'c:\\documents and settings\\vic\\my
> documents\\tools\\python25\\_myscripts\\'+sDBname
> daoDB = daoEngine.OpenDatabase(sDB)
> sSQL1 = 'SELECT * FROM T_Index2DirName'
> daoRS = daoDB.OpenRecordset(sSQL1)         # this works FINE and I can play
> with the record set
> #<snip>
> hsDB = hash(sDB)
> sSQL3 = 'SELECT * FROM T_Index2DirName WHERE iIndex = hsDB'   # names are
> all correct in mdb file

Disclaimer: I've never used DAO.

That SQL statement appears to be incorrect/meaningless.
Don't you need something like
sSQL3 = 'SELECT * FROM T_Index2DirName WHERE iIndex = %d' % hsDB

You may need to read this (changing Office10 to whatever you have):
C:\Program Files\Common Files\Microsoft Shared

More information about the Python-list mailing list