Вот у меня на диалоге CFormView есть два лист бокса. Один с фамилиями с одной таблицы базы, второй по этим фамилиям из другой таблицы базы выводит года, если во второй таблице есть фамилия из первой. Когда выполняю программу- переход по первому списку мышкой, выдает сообщение что "Can`t execute a select query." Как исправить программу. SQL сервер на моей машине есть. Вот две функции. Первая по нажатию на кнопку, вторая при перемещении по первому лист боксу. | Код | void CMyBaseNewView::OnOpen() { // TODO: Add your control notification handler code here AfxDaoInit(); CDaoWorkspace cw; CDaoDatabase* cd; cd = new CDaoDatabase(&cw);
cw.Open(); if (cw.IsOpen()) { cd->Open("C:\\db1.mdb"); if (cd->IsOpen()) { CDaoTableDef cf(cd); CDaoRecordset cr; cf.Open("Òàáëèöà1"); if (cf.IsOpen()) { cr.Open(&cf); while (!cr.IsEOF()) { char buf[256]; COleVariant val; cr.GetFieldValue("name",val); sprintf(buf,"%s",val.bstrVal); m_ListBox.AddString(buf); cr.MoveNext(); } } else AfxMessageBox("Error Open Table"); cr.Close(); cf.Close(); } } }
|
| Код | void CMyBaseNewView::OnSelchangeList1() { // TODO: Add your control notification handler code here CString s; char SQLbuff[256]; m_ListBox.GetText(m_ListBox.GetCurSel(),s); for (int x=0;x<(m_ListBoxExt.GetCount()+1);x++) m_ListBoxExt.DeleteString(x); AfxDaoInit(); CDaoWorkspace cw; CDaoDatabase* cd; cd = new CDaoDatabase(&cw); cw.Open(); cd->Open("C:\\db1.mdb"); CDaoQueryDef cf(cd); CDaoRecordset cr; sprintf(SQLbuff,"SELECT * FROM Òàáëèöà2 WHERE name='s'"); cf.Create(NULL, SQLbuff); cf.Execute(); cr.Open(&cf); if (cr.IsOpen()) { while (!cr.IsEOF()) { char buf[256]; COleVariant val; cr.GetFieldValue("year",val); sprintf(buf,"%s",val.bstrVal); m_ListBoxExt.AddString(buf); cr.MoveNext(); } } cr.Close(); cf.Close();
}
|
|