Russian Qt Forum
Ноябрь 23, 2024, 04:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]Подключение к двум базам  (Прочитано 4946 раз)
vvvxmag
Гость
« : Март 22, 2011, 10:11 »

Приветствую!
Существует две базы
1. MSSQL
2. MS Access

Требуется перекачать выборочно данные из MSSQL в Access

Создаю два подключения
Код:
QSqlDatabase elcat_db = QSqlDatabase::addDatabase("QODBC");//and connectionName

elcat_db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=elcat.mdb;Exclusive=1;");

if (!elcat_db.open()) {
QMessageBox::warning(this,"Анализ", elcat_db.lastError().text());
return ;
}



QSqlDatabase p_db = QSqlDatabase::addDatabase("QODBC");//and connectionName

p_db.setDatabaseName("DRIVER={SQL Server};Server=SERV;Database=p;");
p_db.setHostName("localhost");
p_db.setConnectOptions("SQL_ATTR_CONNECTION_TIMEOUT=60");

if (!p_db.open()) {
QMessageBox::warning(this,"Анализ", p_db.lastError().text());
return ;
}else{
return ;
}

После чего вычищаю Аксесовскую базу

Код:
QSqlQuery clear_tables_query(elcat_db);
clear_tables_query.exec("DELETE FROM goods");

Далее пытаюсь вытащить данные из MSSQL
Код:
QSqlQuery select_needed_data(p_db);
select_needed_data.exec("SELECT goods, ki, name_iz, ves, cena FROM goods WHERE closed<>1 AND cena>0");

Но в результате мне возвращается ошибка

‡Возвращено: QSqlQuery::lastError   {driverError="QODBC3: Unable to execute statement" databaseError="  [Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 2." errorType=StatementError ...}   QSqlError

Что самое странное, так это то что ошибка от драйвера к MS Access, а подключение я создавал к MSSQL.
« Последнее редактирование: Март 22, 2011, 10:26 от vvvxmag » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 22, 2011, 10:17 »

QSqlDatabase elcat_db = QSqlDatabase::addDatabase("QODBC", "FRIST");
QSqlDatabase p_db = QSqlDatabase::addDatabase("QODBC", "SECOND");

Если более одного подключения, обязательно указывать имя.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vvvxmag
Гость
« Ответ #2 : Март 22, 2011, 10:24 »

Спасибо.
Действительно глупая ошибка.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Март 22, 2011, 10:31 »

Спасибо.
Действительно глупая ошибка.
Это не глупая ошибка. Многие на такое напарываются в начале. Я не был исключением.  Смеющийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.062 секунд. Запросов: 23.