From: Piotr Caban piotr@codeweavers.com
--- dlls/msado15/recordset.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index 2cfdfbe8e1c..176e1e3bdb4 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -2408,7 +2408,7 @@ static HRESULT get_rowset(struct recordset *recordset, IUnknown *session, BSTR s IOpenRowset *openrowset; DBROWCOUNT affected; DBPROPSET propset; - DBPROP props[5]; + DBPROP props[8]; ICommand *cmd; DBID table; HRESULT hr; @@ -2440,6 +2440,16 @@ static HRESULT get_rowset(struct recordset *recordset, IUnknown *session, BSTR s props[4].dwPropertyID = DBPROP_IRowsetScroll; V_VT(&props[4].vValue) = VT_BOOL; V_BOOL(&props[4].vValue) = VARIANT_TRUE; + props[5].dwPropertyID = DBPROP_CANSCROLLBACKWARDS; + V_VT(&props[5].vValue) = VT_BOOL; + V_BOOL(&props[5].vValue) = (recordset->cursor_type == adOpenForwardOnly ? VARIANT_FALSE : VARIANT_TRUE ); + props[6].dwPropertyID = DBPROP_OTHERUPDATEDELETE; + V_VT(&props[6].vValue) = VT_BOOL; + V_BOOL(&props[6].vValue) = (recordset->cursor_type == adOpenStatic ? VARIANT_FALSE : VARIANT_TRUE ); + props[7].dwPropertyID = DBPROP_OTHERINSERT; + V_VT(&props[7].vValue) = VT_BOOL; + V_BOOL(&props[7].vValue) = (recordset->cursor_type == adOpenStatic || recordset->cursor_type == adOpenKeyset ? + VARIANT_FALSE : VARIANT_TRUE );
hr = IOpenRowset_OpenRowset(openrowset, NULL, &table, NULL, &IID_IUnknown, 1, &propset, rowset); if (SUCCEEDED(hr))