Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder и базы данных

Войти
Регистрация
Восстановить пароль
 
Gamlex
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 56
#1

Дата неправильно заносится в таблицу Paradox - C++ Builder БД

15.05.2013, 09:19. Просмотров 837. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дата неправильно заносится в таблицу Paradox (C++ Builder БД):

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

Добавить в PageControl на каждый TabSheet свою таблицу Paradox - C++ Builder БД
подскажите пожалуйста, есть форма, на ней три вкладки (PageControl и 3 TabShetы), на каждой вкладке таблицы, созданные в Paradox, как...

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

Не заносится поле в БД - C++ Builder БД
В общем есть форма, на ней 4 DBEdit и еще один DBText(в нем происходят вычисления), при добавлении новой записи(с помощью DBNavigator)...

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

Текущая дата и дата в базе - C++ Builder БД
субд acces. есть таблица в которой храниться дата. нужно в dbgrid выводить разность между текущей датой и датой в бд.как это сделать? судя...

10
AntonChik
1084 / 582 / 21
Регистрация: 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
1084 / 582 / 21
Регистрация: 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
1084 / 582 / 21
Регистрация: 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
4877 / 2352 / 241
Регистрация: 05.06.2008
Сообщений: 7,395
Записей в блоге: 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 / 1 / 0
Регистрация: 14.05.2013
Сообщений: 68
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
Привет! Вот еще темы с ответами:

Не корректно заносится дата в БАЗУ - PHP БД
Не отправляется дата в mysql из PHP. В mysql оздал DATETIME. В самом коде написал это: $current_date = date("Y-m-d H:i:s") ...

Синтаксис - БД Paradox - SQL - текущая дата - Delphi БД
ситуация такая: нужно выбрать из БД PARADOX с помощью Query те записи, где поля Data2 меньше текущей даты. вопрос: как написать...

При disabled текстового поля в таблицу БД ничего не заносится - PHP
Здравствуйте! При отправки данных с формы в таблицу БД поля у которых стоит disabled даже если они заполнены не заносятся в базу. Что...

Неправильно отображается дата - MS Access
добрый день!может кто то сталкивался с такой проблемой.я импортирую таблицу из ACCESSa в Excel но про это даты отображаются не...


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

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

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