Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 15:37   #1
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию Как поместить дату из ADOTable в DateTimePicker?

У меня есть БД в Accesse, которая отображается в DBGrid. В этой таблице есть такие значения как "Производитель", "Товар", "Характеристики", "Дата". Данные этой БД могут редактироваться. При нажатии на кнопку "Редактировать" появляется форма, на которой расположены такие компоненты как, DBEdit, DBMemo, DBComboBox и DateTimePicker. Во всех компонентах, которые DB* отображаются соответствующие данные из БД. Как сделать так, что бы в DateTimePicker'е отображалась именно та дата, которую содержит БД?

Как добавить дату из DateTimePicker'а я знаю, а вот наоборот... Не понятно совсем. До этого использовала DBEdit для ввода даты, но это неудобно, т.к. можно вводить любые значения: и цифры, и буквы, и знаки.

Подскажите, пожалуйста, как это организовать?
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 11.11.2009, 15:53   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

видимо, кактотаг
Код:
Dataset.Edit;
frmMyTableEdit:=TfrmMyTableEdit.Create(Application);
try
  frmMyTableEdit.DateTimePicker.Date:= Dataset.FieldByName('date').AsDate;
  if frmMyTableEdit.ShowModal = mrOK then begin
    Dataset.FieldByName('date').AsDate := frmMyTableEdit.DateTimePicker.Date;
    Dataset.Post;
  end
  else
    Dataset.Cancel;
finally
  frmMyTableEdit.Release;
end;
код не для копи-пастинга, а для понимания что там делается (естественно, могут быть ошибки синтаксиса)
soleil@mmc вне форума Ответить с цитированием
Старый 11.11.2009, 16:04   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Как поместить дату из ADOTable в DateTimePicker?
DateTimePicker.Date:=Dataset.FieldB yName('date').Value;
Если у вас в базе не какой-нибудь фантастический формат даты

Последний раз редактировалось mihali4; 11.11.2009 в 16:33.
mihali4 вне форума Ответить с цитированием
Старый 11.11.2009, 16:33   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А чем не устраивает обычный DBEdit? Настройте его свойство DataSource на DataSource БД и укажите в свойстве DataField поле, в котором имеется дата. И у вас будет отображаться дата. И можете редактировать ее.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.11.2009, 16:35   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Обычный DBEdit?
Опять двадцать пять...
DateTimePicker для этого гораздо удобнее. Я имею в виду редактирование или ввод новой даты.
mihali4 вне форума Ответить с цитированием
Старый 11.11.2009, 16:45   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Автор написал:
Цитата:
Сообщение от monushka Посмотреть сообщение
Как сделать так, что бы в DateTimePicker'е отображалась именно та дата, которую содержит БД?
Я думаю, что для отображения даты, содержащейся в БД, подойдет обычный DBEdit
а вот для
Цитата:
Сообщение от mihali4 Посмотреть сообщение
DateTimePicker для этого гораздо удобнее. Я имею в виду редактирование или ввод новой даты.
Не спорю с Вами
Цитата:
Сообщение от monushka Посмотреть сообщение
можно вводить любые значения: и цифры, и буквы, и знаки.
Ну и поставили бы обработчик на OnKeyPress.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.11.2009, 17:11   #7
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Спасибо за ответы, сейчас буду разбираться!

Цитата:
Сообщение от artemavd Посмотреть сообщение
А чем не устраивает обычный DBEdit? Настройте его свойство DataSource на DataSource БД и укажите в свойстве DataField поле, в котором имеется дата. И у вас будет отображаться дата. И можете редактировать ее.
Я написала, что это окно редактирования данных. Т.е. кроме отображения даты, еще возможно, что ее надо будет изменить. Сейчас у меня стоит DBEdit, но он неудобен, потому что надо все ручками прописывать: и знаки, и цифры. Кроме того, пользователь может очепятаться и не заметит. DateTimePicker удобнее в этом плане, его можно как в ручную вводить, так и выбирать в календаре. Ну, думаю, Вы в курсе.

Просто как из DateTimePcker'а дату в БД записывать я разобралась. Но проблема появилась в том, что если я редактирую и мне НЕ надо изменять дату, то в БД записывается текущее число, которое установлено в DateTimePicker'е, а какое было до этого в базе, не видно! Вот я о чем...
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 11.11.2009, 17:16   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Кроме того, пользователь может очепятаться и не заметит.
Я в таких случаях делаю так:
ДАю пользователю обычный эдит. а по нажатию Энтера или кнопки какой, специальная процедура перетряхивает его содержимое вдоль и поперек.
Только потом после многочисленнейших проверок на вшивость введенного это поступает в строку, где формируется команда запроса - так я избавляюсь от неожиданных сообщений VCL о неких ошибках.
Чего и вам рекомендую - не пользоваться DB компонентами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2009, 17:29   #9
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я в таких случаях делаю так:
ДАю пользователю обычный эдит. а по нажатию Энтера или кнопки какой, специальная процедура перетряхивает его содержимое вдоль и поперек.
Только потом после многочисленнейших проверок на вшивость введенного это поступает в строку, где формируется команда запроса - так я избавляюсь от неожиданных сообщений VCL о неких ошибках.
Чего и вам рекомендую - не пользоваться DB компонентами.
Мне просто кажется, что DateTimePicker удобнее, чем просто Эдит. Спасибо

Сделала так, вроде работает пока:

Код:
procedure TEditForm.FormShow(Sender: TObject);
begin
DateTimePicker1.Date:=DataModule1.CatTable.FieldByName('Дата').Value;
...
end;

procedure TEditForm.BitBtn1Click(Sender: TObject);
begin
DataModule1.CatTable.FieldByName('Дата').AsString:=DateToStr(DateTimePicker1.Date);
if DataModule1.CatTable.Modified then
DataModule1.CatTable.Post;
end;
Всем большое спасибо в очередной раз! Выручили!
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 11.11.2009, 17:51   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
procedure TEditForm.FormShow(Sender: TObject);
begin
DateTimePicker1.Date:=DataModule1.C atTable.FieldByName('Дата').Value;
...
end;
Не-е-е...
Не на то событие...
Это надо на событие DataModule1.CatTable.AfterScroll...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какое свойство отображает текущую дату у DateTimePicker subbota Компоненты Delphi 1 26.07.2009 16:32
Как поместить время и дату в statusbar? Proxx-asb Общие вопросы Delphi 9 27.05.2009 22:48
Как поместить проводник в TreeView YaFakir Общие вопросы Delphi 3 31.03.2009 21:00
Как занести время с компонента DateTimePicker Tanuska___:) Компоненты Delphi 5 14.05.2008 14:38
Как копировать данные из ADOTable в ADOTable? mauar БД в Delphi 1 10.05.2008 16:05