Hé creado una aplicación SDI con ayuda del AppWizard , con la opción “Header files only” como opción para trabajar con bases de datos.
Luego desde un dialogo que es llamado desde la vista, Abro la DataBase y dos RecordSet asi:
- Código: Seleccionar todo
BOOL CDlgCateg::OnInitDialog()
{
CDialog::OnInitDialog();
// Abrir la base de datos definida CProductDoc
TRY
{
m_pBd->Open("CategProd97.mdb");
}
CATCH(CDaoException, e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
m_pBd = NULL;
return TRUE;
}
END_CATCH;
// Crear el objeto recordset para la tabla CATEGORIAS
m_pRsCateg = new CDaoRecordset(m_pBd);
TRY
{
m_pRsCateg->Open(dbOpenTable,"CATEGORIAS");
}
CATCH(CDaoException, e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
m_pRsCateg = NULL;
return TRUE;
}
END_CATCH;
// Crear el objeto recordset para la tabla PRODUCTOS
m_pRsProd = new CDaoRecordset(m_pBd);
// Obtener la categoria apuntada por m_pRsCateg
CString sCateg = CCrack::strVARIANT(m_pRsCateg->GetFieldValue(0));
TRY
{
m_pRsProd->Open(dbOpenDynaset, "select * from PRODUCTOS where ID_CATEG = " + sCateg);
}
CATCH(CDaoException, e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
m_pRsProd = NULL;
return TRUE;
}
END_CATCH;
//..
// ..
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
Hasta aquí esta todo bien, es decir cuando se muestra la primera Categoría se muestra tambien solo los Productos correspondientes a dicha categoría.
El problema biene cuando me desplazo a la siguiente categoria, para lo cual hé puesto el siguiente codigo en un lugar apropiado.
- Código: Seleccionar todo
CString sFiltro = "ID_CATEG = '" + m_sIDCateg + "'";
m_pRsProd->m_strFilter = sFiltro;
m_pRsProd->Requery();
Se supone que el filtro debe funcionar mostrando solo los productos de la correspondiente categoria almacenada en la variable miembro m_sIDCateg , pero sale el siguiente error:
Error de sintaxis (falta operador) en la expresión de consulta 'ID_CATEG= 1 WHERE ID_CATEG='2".
Por favor estaré muy agradecido a quien me pueda dar una ayuda para resolver este problema.
Atentamente Johnny






