|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Пиплс, плз, хелпа!!! Нужно открыть несколько баз данных одновременно, или хотя бы последовательно, но ничего не получается. Когда создается объект CDaoRecordset, то использует он ту базу, которая была инициализирована первой (причем за всю программу!). Пробовал удалять все объекты DAO и пробовать опять - тоже самое. Как это можно сделать??? И как использовать сравнение в SQL переменной типа "дата". Вариант WHERE DATA = { D '2001-12-10' } не проходит, пишет, что выражение дескать "уродлвое" (malformed). Кто-нибудь знает как это делается??? Использую Visual C++ 6.0 SP4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2001, 15:59 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
=) Вот пример кода m_daodb - определена в описании класса в папках c:\data\period01 и c:\data\period02 лежат разные файлы с одинаковыми именами: table.dbf выборку по условию Where ds = 'S01' делает правильно, если заменить на Where date = { d '2001-11-10' } выдаст ошибку, хотя в Visual C++ в проекте Базы данных такой код выполняется, и не только такой =( CString strSource1="ODBC;DSN=Visual FoxPro Tables;UID=;PSW=;SourceDB=c:\data\period01;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"; CString strSource2="ODBC;DSN=Visual FoxPro Tables;UID=;PSW=;SourceDB=c:\data\period02;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"; TRY { if(m_daodb.IsOpen()) m_daodb.Close(); m_daodb.Open(NULL,FALSE,FALSE,strSource1); if(m_daodb.IsOpen()){ CDaoRecordset *pset; pset=new CDaoRecordset(&m_daodb); CString strSelect=_T("Select * From [table] Where ds = 'S01'"); pset->Open(dbOpenDynaset,strSelect); unsigned long selected; if(pset->GetRecordCount()>=1){ pset->MoveLast(); selected=pset->GetAbsolutePosition()+1; } else { selected=0; } pset->Close(); CString str; str.Format("Selected:\t\t%d", selected); AfxMessageBox(str); delete pset; m_daodb.Close(); } else { AfxMessageBox("Unable to open database"); } m_daodb.Open(NULL,FALSE,FALSE,strSource2); if(m_daodb.IsOpen()){ CDaoRecordset *pset; pset=new CDaoRecordset(&m_daodb); CString strSelect=_T("Select * From [table] Where ds = 'S01'"); pset->Open(dbOpenDynaset,strSelect); unsigned long selected; if(pset->GetRecordCount()>=1){ pset->MoveLast(); selected=pset->GetAbsolutePosition()+1; } else { selected=0; } pset->Close(); CString str; str.Format("Selected:\t\t%d", selected); AfxMessageBox(str); delete pset; m_daodb.CLose(); } else { AfxMessageBox("Unable to open database"); } } CATCH (CDaoException, e) { // construct a meaningful message CString message = _T("Error: "); message += e->m_pErrorInfo->m_strDescription; AfxMessageBox(message); } END_CATCH ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2001, 09:49 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Все, проблема уже решина =) CDaoDatabase можно выкидывать на свалку - да здравствует CDatabase! =) Без глюков и багов =) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2001, 10:07 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Была у меня проблемка с механизмами типа new & delete. WIN 98 SE VC 6.0 + sp 5 + ОЗУ 500 Мб и свапа нет как такого, посему можно позволить многое. Так вот заполняю блок памяти полученным таким путем. Исправляю код. Запускаю а данные в массиве, который делается путем new и убивается delete. Как будто и не изменялся. Просто перегружаю машину. Еще раз запускаю программу, ни чего не перекомпилевывал. и Все работает. Moth. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2001, 01:38 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Да, декйствительно есть какой-то баг с этими new и delete, только почему-то дебюгинг невыдает утечки памяти, а через GlobalAlloc или LocalAlloc выделить память под класс, думаю невозможно, следовательно - нихрена не выйдет =( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2001, 07:16 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Так и нет утечки. Просто delete надо еще с чем то использовать, пока не знаю с чем. delete убивает указатель, а значение в памяти остается. Moth. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2001, 00:36 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Так вот пока они, там на верху =), это не исправят, работать с CDaoDatabase практически невозможно, а с CDatabase только сносно =( ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2001, 14:11 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Так опиши ошибку и отправь. Moth. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2001, 00:49 |
|
HTLP!!! Работа с CDaoDatabase
|
|||
---|---|---|---|
#18+
Я работаю через ADO и проблем особых пока не замечал. Да и заплатки они выкладывают регулярно,правда при при переходе с одной версии MDAC на другую (скачивании и установки очередной заплатки) могут случаться такие мелочи как изменение интерфейсов после чего приложения надо по крайней мере перекомпелировать Но тут уж сами решайте: нужны вам новые заплатки или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2002, 09:37 |
|
|
start [/forum/topic.php?fid=57&msg=32019621&tid=2036570]: |
0ms |
get settings: |
21ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
341ms |
get tp. blocked users: |
2ms |
others: | 3076ms |
total: | 3541ms |
0 / 0 |