Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159

Не читается значение типа datetime

13.05.2013, 16:23. Показов 2208. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Пишу программу для Windows, которая работает с базой данных автозапчастей TecDoc.
Вкратце: устанавливаю базу данных с дистрибутива вместе с драйвером Transbase ODBC TECDOC CD 2_2013, затем, для доступа через ODBC настраиваю системный DSN. После чего этот DSN использую в приложении на Qt для подключения к БД.

Значения полей всех типов нормально принимаются (int, double, text и т.д.), но вот только возникает проблема с полем типа datetime. Все поля этого типа в Qt программе оказываются пустыми, т.е. если я трассирую вывод:

C++
1
qDebug() << record.value(i) << endl;
то в консоль выводится:
Bash
1
QVariant(QDateTime, "")
При этом, если я подключаюсь к этой же базе данных через MS Access, или через скрипт на PHP, то поля типа Datetime нормально читаются.

Еще пробовал подключать другую базу данных (MS Access *.mdb) к Qt приложению с полями типа datetime - нормально читается.

Вопрос: почему именно с TecDoc и именно на Qt возникает эта проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2013, 16:23
Ответы с готовыми решениями:

Не добавляет значение в поле типа DateTime
БД создана в Access 2010. Есть метод, который должен додавать новую запись в таблицу. private bool AddNewSessionData(int CustomerID,...

Как присвоить значение переменной типа DateTime
Подскажите пожалуйста, как присвоить значение переменной типа DateTime ? DateTime hiredateBoss;

Можно ли создать поле в таблице с именем datetime ? типа datetime
Добрый день ! вопрос почти чайника : Можно ли создать поле в таблице с именем datetime ? типа datetime есть в одной бд ms sql...

12
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
13.05.2013, 19:37
несоответствие типов, не получается разпарсить тип DateTime из этой БД. Как вариант, попробуйте вычитать его как строку (если есть такая возможность) и ручками парсить.
0
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159
13.05.2013, 22:34  [ТС]
Цитата Сообщение от l_a_m Посмотреть сообщение
несоответствие типов, не получается разпарсить тип DateTime из этой БД. Как вариант, попробуйте вычитать его как строку (если есть такая возможность) и ручками парсить.
Так ведь вообще значение не принимается:

Bash
1
QVariant(QDatetime, "")
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
13.05.2013, 22:48
а вы проверьте у QVariant есть значение isNull() если true - то фигня при вынимании из БД, если false то пробуйте
C++ (Qt)
1
qDebug() << record.value(i).value<QDateTime>().toString("yyyy MM dd hh/mm/ss.zzz");
0
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159
13.05.2013, 23:21  [ТС]
Цитата Сообщение от l_a_m Посмотреть сообщение
а вы проверьте у QVariant есть значение isNull() если true - то фигня при вынимании из БД, если false то пробуйте
C++ (Qt)
1
qDebug() << record.value(i).value<QDateTime>().toString("yyyy MM dd hh/mm/ss.zzz");
isNull()=false, значит значения есть, но при выводе:
C++
1
qDebug() << record.value(i).value<QDateTime>().toString("yyyy MM dd hh/mm/ss.zzz");
все равно выводится: "", т.е. пустая строка
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
13.05.2013, 23:34
а может там не QDateTime а просто QDate или QTime ?
0
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159
13.05.2013, 23:52  [ТС]
Цитата Сообщение от l_a_m Посмотреть сообщение
а может там не QDateTime а просто QDate или QTime ?
нет, точно datetime:
Bash
1
QVariant(QDateTime, "")
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
14.05.2013, 14:01
в каком формате хранится дата в бд ?
0
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159
14.05.2013, 14:45  [ТС]
Цитата Сообщение от Чистый Посмотреть сообщение
в каком формате хранится дата в бд ?
Если открываю эту БД через MS Visual Studio (подключить БД -> имя DSN=tecdoc), то данные поля datetime отображаются в виде:

17.06.2010 0:00:00
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
14.05.2013, 22:47
ну вот и пробуйте ее в такой формат преобразовать
0
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159
14.05.2013, 23:20  [ТС]
Цитата Сообщение от Чистый Посмотреть сообщение
ну вот и пробуйте ее в такой формат преобразовать
я же написал, что приходит пустая строка - я пробовал, но там нечего преобразовывать:

C++
1
qDebug() << record.value(i) << endl;
выводит:

Bash
1
QVariant(QDateTime, "")
, вот, а когда я считывал данные из другой БД (MS Access *.mdb) тоже через системный DSN ODBC, то вывод был таким:

Bash
1
QVariant(QDateTime, "05.05.2010 00:00:00")
, т.е. чтобы преобразовывать QVariant, нужно чтобы было какое-то значение, а не пустая строка
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
15.05.2013, 10:30
Цитата Сообщение от Programmer_С++ Посмотреть сообщение
17.06.2010 0:00:00
Пиши тех поддержке о баге, т.к. это не odbc datetime

Добавлено через 8 минут
Можно попробовать обойти через QSqlField
C++ (Qt)
1
2
3
QSqlField field = record.field(index); //record.field("name")
field.setType(QString);
QDateTime dt = QDateTime::fromString (field.value(), "dd.MM.yyyy hh:mm:ss");
0
6 / 7 / 0
Регистрация: 13.10.2010
Сообщений: 159
15.05.2013, 13:32  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Можно попробовать обойти через QSqlField
так же не работает...

А Вы имеете в виду тех поддержку TecDoc или Qt?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2013, 13:32
Помогаю со студенческими работами здесь

Необходимо вставить в таблицу запись, одно из полей которой (типа datetime) содержало бы значение '24.03.2004 0:00:00'.
Добрый день! Необходимо вставить в таблицу запись, одно из полей которой (типа datetime) содержало бы значение '24.03.2004 0:00:00'. ...

Запрос из базы возвращает в reader значение поля типа date как datetime +MS SQL Server 2008
В таблице есть поле типа Date, в таблицу добавлены записи, в это поле добавлена запись только с датой. Есть перекрёстный запрос на вывод...

Преобразования типа в DateTime
Вопрос следующего характера. В некотором файле имееться заголовок в котором одно из полей - FTIME (4 байта) = Дата и время в стандартном...

Поле типа DATETIME
Можно ли сделать between c датой, если формат строки TEXT и дата записанна в формате ДД.ММ.ГГГГ ЧЧ:ММ. Или всё таки нужно поле делать...

Почему объект типа std::vector не читается из потока?
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;fstream&gt; using namespace std; int main () {


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru