Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MS SQL 2000 Delphi 7, дата в MS SQL 2000 храниться integer 
:(
    Опции темы
Berliner
Дата 22.9.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Здраствуйте ! я уже вроде подобное писал! Но возник вопрос! дела в том ,что в MS SQL в поле DayDate дата храниться как integer (38123), соответсвует какому-то дню. Вопрос такой: надо чтобы пользователь на TdateTimePicker выбрал дату и исполнил запрос. Как это сделать не знаю/

Код

ADOQuery1.SQL.Add('Select * from Currency where DayDate=//вот тут занчение дата из пикера должна стоять    ');

PM   Вверх
_hunter
Дата 22.9.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 1
Всего: 98



это в БД нужно спрашивать...
или давай формат хранения.
и что такое integer (38123)?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Berliner
Дата 22.9.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Цитата
и что такое integer (38123)?

Это 38123 -дата в закодированом виде. Имеет тип integer
PM   Вверх
_hunter
Дата 22.9.2005, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 1
Всего: 98



это, конечно, хорошо, что дата, но это был добавочный вопрос.
а основной -- ее формат.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Snowy
Дата 22.9.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 2
Всего: 484



Загляни в дельфи и БД. Там на днях пробегал вопрос про формат даты.
PM MAIL   Вверх
Rennigth
Дата 22.9.2005, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: нет
Всего: 76



Berliner
на сколько помню в MSSQL-е тип Date тотже Double и ты без проблем можешь значение Date из Pickera сохранять. Только отличие есть в +- 1 день (непомню в какую сторону, и незнаю зачем...).


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
_hunter
Дата 22.9.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 1
Всего: 98



потому что борланд считает дату с 12/30/1899 ( зачем -- не понятно ( может праздник был... ) )
а МС -- по-нормальному -- с January 1, 1601.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alex
Дата 22.9.2005, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



передавайте дату через параметры и проблем быть не должно


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Berliner
Дата 22.9.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



например ?
PM   Вверх
Berliner
Дата 23.9.2005, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Я не знаю как вставить код в моем примере чтобы значение даты в запросе с пикера цеплялолось. Подскажите пожалуста!

Код

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from Currency where DayDate=  вот тут дату с TdatetimePicker  ');
ADOQuery1.Open;

!
PM   Вверх
yudem
Дата 23.9.2005, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.9.2005

Репутация: нет
Всего: нет



я делаю так..
date:string;
date:=datetostr(TdatatimePicker.date);
а в sql-запросе ('select * from Table where field=date');

PM MAIL   Вверх
Berliner
Дата 23.9.2005, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



ну вся продлма в том что дата в таблице на сервере имеет вид 37853 (числа)
PM   Вверх
offline
Дата 23.9.2005, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Цитата
ну вся продлма в том что дата в таблице на сервере имеет вид 37853 (числа)


А как это число получается?
PM MAIL   Вверх
Vet
Дата 25.9.2005, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



Не проще ли в нормальном виде хранить?
PM MAIL   Вверх
Berliner
Дата 26.9.2005, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Цитата
А как это число получается?


база данных разработана другими программистами! И они вносят єто число вместо даты.

Цитата
Не проще ли в нормальном виде хранить?
может и так. и мне надо с датой работать! Как быть?
PM   Вверх
Berliner
Дата 26.9.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Я вроде придумал выход!
думаю сделать так: с помощью dayadd приобразовать данное поле поле к нормальному "виду"(сделаю еще одну таблицу)- подскажите, а к какому виду лучше преобразовать как дату (хранить в каком виде лучше) чтобы можно было вызвать из хранимой процедуры или исполнить запрос.
PM   Вверх
Berliner
Дата 28.9.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Не ,такой выход нежалатедьный -создавать таблицу! Надо всетаки конвертнуть дату в нормальный вид
PM   Вверх
Vet
Дата 28.9.2005, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



Надо определить, как это число получается, если дата преобразуется в него. Тогда и проблем не будет smile
PM MAIL   Вверх
Vet
Дата 28.9.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



А собственно, в чем проблема-то? Если в базе хранится количество дней, прошедших после определенной даты, то
Код

ADOQuery1.SQL.Add('Select * from Currency where DayDate = ' + IntToStr(Trunc(DateTimePicker1.Date)));

Вот он, твой integer.

Если же читаешь дату из базы как целое число, то можно ее преобразовать в нормальный вид
Код

DecodeDate(YourDataAsInteger, Year, Month, Day);

Это из DateUtils
PM MAIL   Вверх
Berliner
Дата 29.9.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Вот что мне выслали разработчики базы данной как это прикрутить к моему запросу?

Код

function SQLToDelphiDate(aDate: Integer): TDateTime;
begin
 Result:=aDate+2;
end;

function DelphiToSQLDate(aDate: TDateTime): longint;
begin
 Result:=Round(Int(aDate))-2;
end;



я так понял что одна функция для перекодировки даты из числа в дату а другая из даты в число

PM   Вверх
Vet
Дата 29.9.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



Цитата
я так понял что одна функция для перекодировки даты из числа в дату а другая из даты в число

Правильно smile
К запросу:
Код

ADOQuery1.SQL.Add('Select * from Currency where DayDate = ' +
 IntToStr(DelphiToSQLDate(DateTimePicker1.DateTime)));


Из запроса:
Код

DateTimePicker1.DateTime := SQLToDelphiDate(ADOQuery1.Fields[0].AsInteger)

PM MAIL   Вверх
Berliner
Дата 30.9.2005, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Спасибо работает!
Код

function DelphiToSQLDate(aDate: TDateTime): longint;
begin
 Result:=Round(Int(aDate))-2;
end;


Вот только не пойму смысл этого кода!
PM   Вверх
Vet
Дата 30.9.2005, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



Цитата
Вот только не пойму смысл этого кода!

Зачем прибавлять и отнимать 2 - это надо спросить у разработчиков.
А насчет функции - от переменной типа TDateTime берется целая часть, т.е. количество дней и округляется. Можно было сделать проще:
Код

function DelphiToSQLDate(aDate: TDateTime): longint;
begin
 Result := Trunc(aDate) - 2;
end;

PM MAIL   Вверх
Berliner
Дата 30.9.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Цитата
Зачем прибавлять и отнимать 2 - это надо спросить у разработчиков
думаю из за того с какой даты начинается отсчет времени у MS и у Борланда(там разница вроде день или два(писалось это на форуме
PM   Вверх
Vet
Дата 2.10.2005, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



Ну если ты базу используешь только в своей проге, то смысла в этих преобразованиях никакого. При записи в БД из даты вычел 2, при чтении прибавил 2. И ничего не изменилось smile
PM MAIL   Вверх
НурболКазбеков
Дата 26.10.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Подскажите, пожалуйста, Как в Delphi c помощью Word-а (WordDocument или WordApplication) просмотреть doc-файлы, которые хранятся в блоб-полях smile . Заранее спасибо.Если можно пример небольшой. smile
PM MAIL   Вверх
offline
Дата 26.10.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Цитата
Подскажите, пожалуйста, Как в Delphi c помощью Word-а (WordDocument или WordApplication) просмотреть doc-файлы, которые хранятся в блоб-полях smile . Заранее спасибо.Если можно пример небольшой. smile

http://forum.vingrad.ru/index.php?showtopic=67193&st=15
PM MAIL   Вверх
НурболКазбеков
Дата 26.10.2005, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



kirilllius Спасибо большое,, ты мне помог. Все отлично. smile
Но появилась еще одна проблема. Мне надо открывать вордовский документ с базы (с твоей помощью получилось), но когда я редактирую и закрываю документ, запрашивает о сохранении. Нажимаю Ок, но изменение нигде не сохраняется, ни в базе, ни в оригинале (в самом документе). smile
PM MAIL   Вверх
offline
Дата 26.10.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



НурболКазбеков

Смотри ответ в своей теме smile

http://forum.vingrad.ru/index.php?showtopic=67193&st=15
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0732 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.