Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
#1

Дата неправильно заносится в таблицу Paradox

15.05.2013, 09:19. Просмотров 896. Ответов 10
Метки нет (Все метки)

Здравствуйте! Прошу помощи! Написал программку по копированию данных из таблиц MSSQL в Paradox. Использую ADO. Проблема в том, что при записи даты и времени (TDateTime) в таблицу Paradox (Timestamp) некоторые значения времени записываются без одной секунды, т.е. 12:29:59 вместо 12:30:00 или 09:59:59 вместо 10:00:00. Всё перепробовал, ничего не помогает. Подскажите что нибудь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 09:19
Ответы с готовыми решениями:

Добавить в PageControl на каждый TabSheet свою таблицу Paradox
подскажите пожалуйста, есть форма, на ней три вкладки (PageControl и 3...

Paradox - Как обновить таблицу и оставаться на текущей позиции?
Как обновить таблицу и оставаться на текущей позиции?

Мне нужно копировать таблицу с данными в БД Access C++. Что я делаю неправильно?
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { ADOQuery2->Open();...

Не заносится поле в БД
В общем есть форма, на ней 4 DBEdit и еще один DBText(в нем происходят...

как открить фаил который заносится в ListBox?
Я спомошию FileListBox занощу фаил в ListBox, как открить фаил который...

10
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
15.05.2013, 10:46 #2
некоторые значения или значения на стыках часов?
0
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
15.05.2013, 10:52  [ТС] #3
Некоторые значения на стыках часов и получасов. Дело в том, что я и заношу только получасовки. Иногда заносится ровно час или полчаса (где то через раз) а в других случаях как описал выше.
0
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
15.05.2013, 11:14 #4
используете
C++
1
DateTimeToTimeStamp(TDateTime DateTime)
?
0
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
15.05.2013, 11:50  [ТС] #5
нет, сейчас попробую

Добавлено через 10 минут
Думаю должно сработать однако есть ещё одна преграда. В базе Парадокс дата и время хранятся в виде 0:30:00, 01.10.2006 (к примеру). Я пишу
C++
1
ADOTable1->FieldByName("DT")->Value=DateTimeToTimeStamp(dt);
Однако возникает ошибка о несоответствии типов, что вобщем то понятно. Но как сделать чтобы типы совпадали?

Добавлено через 24 минуты
Вобщем TimeStamp состоит из двух полей типа int. Так вот как мне два этих поля типа int присвоить
C++
1
ADOTable1->FieldByName("DT")->Value
?
0
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
15.05.2013, 11:54 #6
как изначально было реализовано присваивание? когда секунда терялась
0
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
15.05.2013, 12:00  [ТС] #7
Просто в базе MSSQL лежат получасовки в формате дата время: 01.01.2001 00:00:00, 01.01.2001 00:30:00, 01.01.2001 01:00:00 и так далее. Нужно их просто перенести в таблицу Paradox в поле формата TimeStamp которое содержит значения если смотреть через DatabaseDesktop ввиде "0:30:00, 01.10.2006".
Вобщем код такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ADODataSet1->Close();
ADODataSet1->Parameters->ParamByName("KD")->Value=Edit1->Text.Trim();
ADODataSet1->Parameters->ParamByName("DT1")->Value=dt1->DateTime.FormatString("dd.MM.yyyy 00:30:00");
ADODataSet1->Parameters->ParamByName("DT2")->Value=dt2->DateTime.FormatString("dd.MM.yyyy 00:00:00");
ADODataSet1->Open();
ADODataSet1->First();
 
TDateTime dt;
for(ADODataSet1->First(); !ADODataSet1->Eof ; ADODataSet1->Next())
        {
        ADOTable1->Insert();
        ADOTable1->FieldByName("Kod")->Value=Edit2->Text;
        dt=ADODataSet1->FieldByName("DT")->AsDateTime;
        ADOTable1->FieldByName("DT")->AsDateTime=dt;
        ADOTable1->FieldByName("Pp")->Value=ADODataSet1->FieldByName("Pp")->Value;
        ADOTable1->FieldByName("Po")->Value=ADODataSet1->FieldByName("Po")->Value;
        ADOTable1->FieldByName("Qp")->Value=ADODataSet1->FieldByName("Qp")->Value;
        ADOTable1->FieldByName("Qo")->Value=ADODataSet1->FieldByName("Qo")->Value;
        ADOTable1->Post();
        }
0
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,473
Записей в блоге: 3
15.05.2013, 12:15 #8
А если через FormatDateString()?
0
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
15.05.2013, 12:54  [ТС] #9
Цитата Сообщение от Sasha Посмотреть сообщение
А если через FormatDateString()?
Это в Билдере? Не могу найти такую функцию
0
doomkin
1 / 4 / 1
Регистрация: 14.05.2013
Сообщений: 70
15.05.2013, 13:05 #10
У меня так работает:

C++
1
2
3
4
String date = IntToStr(YearOf(dt1->Date)) + "-"
            + IntToStr(MonthOf(dt1->Date))
            + "-" + IntToStr(DayOf(dt1->Date));
ADODataSet1->Parameters->ParamByName("DT1")->Value = date;
0
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
16.05.2013, 10:52  [ТС] #11
Цитата Сообщение от doomkin Посмотреть сообщение
У меня так работает:
Не совсем то

Добавлено через 21 час 1 минуту
Ладно, спасибо всем, решил проблему. Использую для записи в Paradox TTable (BDE), записывает без косяков
0
16.05.2013, 10:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2013, 10:52

Текущая дата и дата в базе
субд acces. есть таблица в которой храниться дата. нужно в dbgrid выводить...

Дата не заносится в бд (MySql.Data)
Доброго времени суток. Использую библиотеку MySql.Data. Когда пытаюсь занести в...

Не корректно заносится дата в БАЗУ
Не отправляется дата в mysql из PHP. В mysql оздал DATETIME. В самом коде...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru