crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Paradox и Qt
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
BRE Дата 23.11.2010, 15:41
 
Цитата(AD @ 23.11.2010, 14:00) *
/// Глобальные переменные
QSqlDatabase db;

Не нужно объявлять переменную QSqlDatabase, тем более глобально.
Ты всегда сможешь получить этот объект используя QSqlDatabase::database(...)
Обсуждали же уже не обднократно. ;)
panter_dsd Дата 23.11.2010, 14:02
  Пожалуйста. B)
AD Дата 23.11.2010, 14:00
  Вот функция соединения с БД:
/// Глобальные переменные
QSqlDatabase db;

/// Функция для создания соединения с базой данных
bool createConnection(const QString& odbc_path)
{
    if(db.isOpen()) db.close();

    db = QSqlDatabase::addDatabase("QODBC");
    QString name(QString("DRIVER={Microsoft Paradox Driver (*.db )};FIL={Paradox 5.X};DBQ=") + odbc_path);
    db.setDatabaseName(name);
    db.setUserName("aztUser");
    db.setPassword("aztUser");

    if(!db.open())
    {
        QSqlError error = db.lastError();
        QMessageBox msg(QMessageBox::Critical, "Connections", error.text(), QMessageBox::Ok, 0);
        msg.exec();
        return false;
    }
    return true;
}


Вызов этой функции:
/// valueElement, writeElement - чтение и запись при работе с реестром.
QString aztdb_path(valueElement("Azt/AztDbPath", QString("")).toString()), odbc_path("");
    if(aztdb_path.isEmpty())
    {
        odbc_path = QDir::toNativeSeparators(QFileDialog::getExistingDirectory(this,
                    QString("Selecting path for Paradox DB"), aztdb_path));
        if(odbc_path.isEmpty()) exit(1);
    }
    else if(!aztdb_path.isEmpty()) odbc_path = aztdb_path;
    else exit(1);
    writeElement("Azt/AztDbPath", odbc_path);
    bool is_conn = createConnection(odbc_path);    /// noдключенue k БД
AD Дата 23.11.2010, 13:27
  Все. Проблему решил. Создавать ничего необязательно. Главное, как ты сказал, создать путь. Еще необходимо имя пользователя задавать и пароль. Как доделаю функцию соединения, выложу. Спасибо!
panter_dsd Дата 23.11.2010, 12:29
  Читай маны по парадоксу. А лучше достань утилитку для создание БД (с делфей когда-то распространялась такая) и создай с ее помощью БД, к которой потом будешь пробовать коннектиться.
AD Дата 23.11.2010, 12:01
  Создал нужный каталог. Теперь пишет следующее имя ошибки: "Невозможно найти сетевой путь или имя пользователя"
panter_dsd Дата 23.11.2010, 11:27
  Не забывай, что БД парадокс - не файл, а каталог. Может, в этом проблема?
AD Дата 23.11.2010, 11:25
 
Цитата(panter_dsd @ 23.11.2010, 11:23) *
А путь какой указываешь? Уверен, что одбц позволяет создавать базу?

Надо почитать. На счет этого уточню. Пока не знаю, что ответить.
panter_dsd Дата 23.11.2010, 11:23
  А путь какой указываешь? Уверен, что одбц позволяет создавать базу?
AD Дата 23.11.2010, 11:18
 
Цитата(panter_dsd @ 23.11.2010, 11:17) *
Выложи куда-нибудь БД, я поковыряюсь.

Дело в том, что ее нет пока. Она будет программой создаваться. Нет ни одной таблички пока что.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 23:14