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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Частичное записывание данных  (Прочитано 9296 раз)
nixman05
Гость
« : Март 27, 2010, 23:04 »

Здравствуйте.

Использую QODBC для работы с FoxPro (необходимость поддержки старой системы)
Возникли некоторые ошибки при добавлении данных в таблицу.
Таблица имеет следующню структуру:

ID              N             8
TN             N             8
FAM           C             30
NAME         C             12
OTCH         C             15
birthdate    D             8     
adr            C             100
sex            C             3

Данные добавляются следующим образом

Код
C++ (Qt)
 QString s_query="insert into person (ID, TN, fam, name, otch, birthdate, adr, grazd, sex )"
                 "values (:id, :TN, :fam, :name, :otch, :birthdate, :adr, :grazd, :sex )";
 query->prepare(s_query);
 query->bindValue(":id",number_id);
 query->bindValue(":TN",tableNumber);
 query->bindValue(":fam",fam.toLacal8Bit);
 query->bindValue(":name",name.toLocal8Bit());
 query->bindValue(":otch",otch.toLocal8Bit());
 query->bindValue(":birthdate",date);
 query->bindValue(":adr",adr);
 query->bindValue(":grazd",grazd);
 query->bindValue(":sex", sex);
 query->exec();
 

Запрос отрабатывает но в таблицу добавляется только id, fam, name и otch. Остальные поля остаются пустыми. В чём может быть ошибка и как ее устранить?
Заранее благодарен.

Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Март 28, 2010, 00:47 »

>>только id, fam, name и otch.
Кореляция такова:
записываются целые числа и переменные для которых вызывается метод toLocal8Bit()

Какие типы имеют переменные date, adr, grazd, sex?
Записан

Юра.
nixman05
Гость
« Ответ #2 : Март 28, 2010, 01:20 »

>>только id, fam, name и otch.
Кореляция такова:
записываются целые числа и переменные для которых вызывается метод toLocal8Bit()

Какие типы имеют переменные date, adr, grazd, sex?

date QDate
adr QString (также вызывал toLocalBit)
grazd QString
sex QString

Да и TN имеет тип int, но в отличае от id не записывается.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


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

Как создаешь подключение? У меня таких проблем не было.
Записан

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

Подключение создается следубщим образом:
Код
C++ (Qt)
 QSqlDatabase db=QSqlDatabase::addDatabase("QODBC","kadrfox");
 db.setDatabaseName(QString("DRIVER={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=%1").arg(base_name));
 if(!db.open())
  {
      QMessageBox::warning(0,"",db.lastError().text());
      return db.lastError().number();
  }
  QSqlQuery *query=new QSqlQuery(db);
 
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #5 : Март 28, 2010, 12:49 »

Попробуй вот так:
DRIVER={Microsoft dBase Driver (*.dbf)};FIL={dBase III;};DefaultDir=каталог_с_нужным_файлом
Записан

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

Попробуй вот так:
DRIVER={Microsoft dBase Driver (*.dbf)};FIL={dBase III;};DefaultDir=каталог_с_нужным_файлом

Получена ошибка при подключении:
[Microsoft][Драйвер ODBC dBase] Внешняя таблица не имеет предполагаемый формат. QODBC3: Unable to execute statement

P.S. Если это немного прояснит ситуацию то таблицы, к которым я обращають созданы в Visual FoxPro, хотя ,насколько я помню, dbf форматы различаются только memo-полями.
« Последнее редактирование: Март 28, 2010, 15:39 от nixman05 » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #7 : Март 28, 2010, 16:00 »

Нет, форматы различаются не только мемо полями. Приложи сюда пример файла.
Записан

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

Попробовал пересоздать таблицу : добавились все поля. В таблище еще имеются несколько служебных полей, будут ли добавляться данные при их наличии?

P.S. А чем еще различаются различные форматы dbf помимо memo-полей?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #9 : Март 28, 2010, 19:01 »

Попробовал пересоздать таблицу : добавились все поля. В таблище еще имеются несколько служебных полей, будут ли добавляться данные при их наличии?

P.S. А чем еще различаются различные форматы dbf помимо memo-полей?
Про служебные поля не понял, расшифруй.
Отличаются параметрами в заголовке файла. В формат Clipper строка увеличена в 2 раза. Поищи в интернете описания.
Записан

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

Кажись нашел в чм была ошибка.
Дело в том, что при добавлении не во все поля, для полей с данными, которые следуют за пустыми полями, данные поля так же не заполняются.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #11 : Апрель 02, 2010, 23:40 »

P.S. А чем еще различаются различные форматы dbf помимо memo-полей?
Вообще их 7 разновидностей....
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #12 : Апрель 03, 2010, 10:20 »

P.S. А чем еще различаются различные форматы dbf помимо memo-полей?
Вообще их 7 разновидностей....
Вообще их намного больше.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #13 : Апрель 07, 2010, 07:05 »

P.S. А чем еще различаются различные форматы dbf помимо memo-полей?
Вообще их 7 разновидностей....
Вообще их намного больше.
Type of file:
-FoxBASE
-FoxBASE+/dBASE III PLUS, no memo
-Visual FoxPro
-dBASE IV SQL table files, no memo
-dBASE IV SQL system files, no memo
-FoxBASE+/dBASE III PLUS, with memo
-BdBASE IV with memo
-dBASE IV SQL table files, with memo
-FoxPro 2.x (or earlier) with memo
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #14 : Апрель 07, 2010, 11:28 »

Clipper забыл.
Записан

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


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