Гость
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / HTLP!!! Работа с CDaoDatabase / 10 сообщений из 10, страница 1 из 1
20.12.2001, 15:59
    #32019466
Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Пиплс, плз, хелпа!!!

Нужно открыть несколько баз данных одновременно, или хотя бы последовательно, но ничего не получается. Когда создается объект CDaoRecordset, то использует он ту базу, которая была инициализирована первой (причем за всю программу!). Пробовал удалять все объекты DAO и пробовать опять - тоже самое. Как это можно сделать???

И как использовать сравнение в SQL переменной типа "дата". Вариант WHERE DATA = { D '2001-12-10' } не проходит, пишет, что выражение дескать "уродлвое" (malformed). Кто-нибудь знает как это делается??? Использую Visual C++ 6.0 SP4
...
Рейтинг: 0 / 0
20.12.2001, 23:45
    #32019494
Moth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Написал бы код, а то через штаны не лечат...

Moth.

moth@mail.primorye.ru
...
Рейтинг: 0 / 0
21.12.2001, 09:49
    #32019529
Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
=) Вот пример кода
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
...
Рейтинг: 0 / 0
22.12.2001, 10:07
    #32019602
Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Все, проблема уже решина =)
CDaoDatabase можно выкидывать на свалку - да здравствует CDatabase! =) Без глюков и багов =)
...
Рейтинг: 0 / 0
23.12.2001, 01:38
    #32019621
Moth.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Была у меня проблемка с механизмами типа new & delete.
WIN 98 SE VC 6.0 + sp 5 + ОЗУ 500 Мб и свапа нет как такого, посему можно позволить многое.
Так вот заполняю блок памяти полученным таким путем.
Исправляю код. Запускаю а данные в массиве, который делается путем new и убивается delete. Как будто и не изменялся.
Просто перегружаю машину. Еще раз запускаю программу, ни чего не перекомпилевывал. и Все работает.
Moth.
...
Рейтинг: 0 / 0
23.12.2001, 07:16
    #32019622
Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Да, декйствительно есть какой-то баг с этими new и delete, только почему-то дебюгинг невыдает утечки памяти, а через GlobalAlloc или LocalAlloc выделить память под класс, думаю невозможно, следовательно - нихрена не выйдет =(
...
Рейтинг: 0 / 0
24.12.2001, 00:36
    #32019635
Moth.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Так и нет утечки. Просто delete надо еще с чем то использовать, пока не знаю с чем.
delete убивает указатель, а значение в памяти остается.
Moth.
...
Рейтинг: 0 / 0
24.12.2001, 14:11
    #32019698
Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Так вот пока они, там на верху =), это не исправят, работать с CDaoDatabase практически невозможно, а с CDatabase только сносно =(
...
Рейтинг: 0 / 0
25.12.2001, 00:49
    #32019723
Moth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Так опиши ошибку и отправь.
Moth.
...
Рейтинг: 0 / 0
22.02.2002, 09:37
    #32023728
nic_ii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTLP!!! Работа с CDaoDatabase
Я работаю через ADO и проблем особых пока не замечал. Да и заплатки они выкладывают регулярно,правда при при переходе с одной версии MDAC на другую (скачивании и установки очередной заплатки) могут случаться такие мелочи как изменение интерфейсов после чего приложения надо по крайней мере перекомпелировать
Но тут уж сами решайте: нужны вам новые заплатки или нет
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / HTLP!!! Работа с CDaoDatabase / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]