Wednesday 15 February 2012

vba - DAO.QueryDef shows incorrect result in MS Access 2010 -



vba - DAO.QueryDef shows incorrect result in MS Access 2010 -

i have next stored query in ms access

select tblregistration.id, tblregistration.typecode, cdate([tblregistration].[regstart]) reg1, cdate([tblregistration].[regstop]) reg2 tblregistration ( (tblregistration.typecode = "t" or tblregistration.typecode = "s" or tblregistration.typecode = "f") , (cdate([tblregistration].[regstart]) between cdate([forms]![frmregbilling]![regstart]) , cdate([forms]![frmregbilling]![regstop])) ) or ( (tblregistration.typecode = "t" or tblregistration.typecode = "s" or tblregistration.typecode = "f") , (cdate([tblregistration].[regstop]) between cdate([forms]![frmregbilling]![regstart]) , cdate([forms]![frmregbilling]![regstop])) );

the query, when stand lone executed query (when frmregbilling loaded parameters used query) shows proper result (8 records).

but when query executed in vba, 2 records shown. in case, first parameter validated.

dim qdf dao.querydef, rst recordset, vardata variant dim intfields integer, intrecords integer, j integer, k integer dim rec string, fld_type integer set qdf = currentdb.querydefs("query1") qdf.parameters(0).value = eval(qdf.parameters(0).name) qdf.parameters(1).value = eval(qdf.parameters(1).name) set rst = qdf.openrecordset() j = rst.recordcount - 1 k = rst.fields.count - 1

switching lines parameter(0) or (1) doesn't help (if of influence reason). why aren't both parameters validated in query when executed in vba?

if using vba, why not create run time query?

dim strsql string, rst recordset, vardata variant dim intfields integer, intrecords integer, j integer, k integer dim rec string, fld_type integer strsql = "select tblregistration.id, tblregistration.typecode, cdate([tblregistration].[regstart]) reg1, " & _ "cdate([tblregistration].[regstop]) reg2 tblregistration " & _ "((tblregistration.typecode = 't' or tblregistration.typecode = 's' or tblregistration.typecode = 'f') , " & _ "(cdate([tblregistration].[regstart]) between " & format([forms]![frmregbilling]![regstart], "\#mm\/dd\/yyyy\#") & _ " , " & format([forms]![frmregbilling]![regstop], "\#mm\/dd\/yyyy\#") & ")) or " & _ "((tblregistration.typecode = 't' or tblregistration.typecode = 's' or tblregistration.typecode = 'f') " & _ "and (cdate([tblregistration].[regstop]) between " & format([forms]![frmregbilling]![regstart], "\#mm\/dd\/yyyy\#") & _ " , " & format([forms]![frmregbilling]![regstop], "\#mm\/dd\/yyyy\#") & "));" set rst = currentdb.openrecordset(strsql)

vba ms-access ms-access-2010 dao

No comments:

Post a Comment