powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / HTLP!!! Работа с CDaoDatabase
10 сообщений из 10, страница 1 из 1
HTLP!!! Работа с CDaoDatabase
    #32019466
Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пиплс, плз, хелпа!!!

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

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

Moth.

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


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