BOOL DML_QueryDatabase(CdSda* pDoc, CaNode* pNode, CTypedPtrList< CObList, CaDBObject* >& listObj) { BOOL bOK = FALSE; CaLLQueryInfo queryInfo (OBT_DATABASE, pNode->GetName()); queryInfo.SetFetchObjects (CaLLQueryInfo::FETCH_USER); queryInfo.SetIndependent(TRUE); CaSessionManager& sessionMgr = theApp.GetSessionManager(); bOK = INGRESII_llQueryObject (&queryInfo, listObj, (void*)&sessionMgr); #if defined (_IGNORE_STAR_DATABASE) if (bOK) { POSITION p = NULL, pos = listObj.GetHeadPosition(); while (pos != NULL) { p = pos; CaDatabase* pDb = (CaDatabase*)listObj.GetNext(pos); if (pDb->GetStar() != OBJTYPE_NOTSTAR) { listObj.RemoveAt(p); delete pDb; } } } #endif return bOK; }
void CuDlgMain::QueryDatabase(CComboBoxEx* pComboDatabase, CaNode* pNode, CString& strSelectedDatabase) { int nIdx = CB_ERR; CWaitCursor doWaitCursor; UINT uFlag = (pComboDatabase == &m_cComboDatabase1)? REFRESH_DATABASE1: REFRESH_DATABASE2; CTypedPtrList< CObList, CaDBObject* >* lDatabase = (pComboDatabase == &m_cComboDatabase1)? &m_lDatabase1: &m_lDatabase2; // // Clean the combobox: pComboDatabase->ResetContent(); if ((m_nAlreadyRefresh & uFlag) == 0) { while (!lDatabase->IsEmpty()) delete lDatabase->RemoveHead(); CaInstallationItem* pInstallation = new CaInstallationItem (_T("<Installation>")); lDatabase->AddHead(pInstallation); DML_QueryDatabase(NULL, pNode, *lDatabase); } COMBOBOXEXITEM cbitem; memset (&cbitem, 0, sizeof(cbitem)); cbitem.mask = CBEIF_IMAGE | CBEIF_TEXT | CBEIF_SELECTEDIMAGE | CBEIF_LPARAM ; cbitem.iImage = 0; cbitem.iSelectedImage = 0; POSITION pos = lDatabase->GetHeadPosition(); while (pos != NULL) { CaDatabase* pDatabase = (CaDatabase*)lDatabase->GetNext(pos); cbitem.pszText = (LPTSTR)(LPCTSTR)pDatabase->GetName(); cbitem.lParam = (LPARAM)pDatabase; cbitem.iItem = pComboDatabase->GetCount(); switch ( pDatabase->GetStar() ) { case OBJTYPE_NOTSTAR: cbitem.iImage = (pDatabase->GetItem().IsEmpty())? 1: 0; break; case OBJTYPE_STARNATIVE: cbitem.iImage = 2; break; case OBJTYPE_STARLINK: cbitem.iImage = 3; break; } cbitem.iSelectedImage = cbitem.iImage; pComboDatabase->InsertItem (&cbitem); } if (m_bPreselectDBxUser) { if (!strSelectedDatabase.IsEmpty()) { nIdx = pComboDatabase->FindStringExact(-1, strSelectedDatabase); if (nIdx != CB_ERR) pComboDatabase->SetCurSel(nIdx); else pComboDatabase->SetCurSel(0); } else { pComboDatabase->SetCurSel(0); } } m_nAlreadyRefresh |= uFlag; }