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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2009, 22:33   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию Очищение DateTimePicker после удаления записи

Каким образом можно очистить DateTimePicker при нажатии на кнопку, я добавляю запись с датой, потом удаляю эту запись и сразу же пытаюсь добавить новую запись но хочу чтоб дата не добавлялась, а она добовляется снова. Причем дата 1899 года мне нужно, так чтобы при повторном нажатии на добавление записи у меня не добавлялаь дата. Ставил обновление таблицы после удаления записи и все равно чушь выдает как с этим бороться ?
пробовал так:
Код:
if DM.ADOQ_Udata_snyatiya_s_ucheta.Value=0000-00-00 then
  begin
    FD_u.Button1.Visible:=true;
    fd_u.Label2.Visible:=false;
    fd_u.datetimepicker2.Visible:=false;
    fd_u.Label6.Visible:=false;
    fd_u.DBLCB1.Visible:=false;
   FD_U.DateTimePicker2.Date:=DM.ADOQ_Udata_snyatiya_s_ucheta.Value;
  end;
Ну или как просто очистить дату, так чтобы в таблицу добавлял именно пустую дату. Потому что он похоже временно хранит дату в памяти, пока не перезапустишь приложение...
1 старый программист, лучше новых 2-х

Последний раз редактировалось Droid; 19.10.2009 в 19:45.
Droid вне форума Ответить с цитированием
Старый 21.10.2009, 09:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так а где код которым ты дату в БД пихаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2009, 11:26   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

А что мешает календарь отчистить перед удалением записи? Или сразу после вставки?
danekne вне форума Ответить с цитированием
Старый 21.10.2009, 12:14   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

прикол в том что если дейтаймпикер пустой, то по умолчанию он отдает дату 01.01.1899
вот исходя из этого факта и следует с ним бороться
т.е. если пришла эта дата (и по характеру обрабатываемых данных такой точно не будет), то и передавать в параметр вставки нулл (NULL)
soleil@mmc вне форума Ответить с цитированием
Старый 21.10.2009, 13:00   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то по умолчанию он отдает дату 01.01.1899
Которая равна именно NULL
Так что это не прикол.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2009, 13:36   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Которая равна именно NULL
Так что это не прикол.
ты уверен что речь идет про один и тот же компонент?

я про TDateTimePicker
уточняю
дата 30.12.1899
и ее в компоненте не получится обнулить
soleil@mmc вне форума Ответить с цитированием
Старый 21.10.2009, 14:20   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и ее в компоненте не получится обнулить
Вручную может и не получится, но программно запросто.
Код:
DateTimePicker1.DateTime:=0;
Другое дело что для глаза это будет выглядеть не как ноль
Но я ж так понимаю что ноль нужно писать в БД, посему в принципе DateTimePicker тут не виноват/
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2009, 14:37   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Другое дело что для глаза это будет выглядеть не как ноль
Но я ж так понимаю что ноль нужно писать в БД, посему в принципе DateTimePicker тут не виноват/
об чем я и написал
но писать нужно не 0, а нулль (про 0 в БД скажут, что не того формата)
soleil@mmc вне форума Ответить с цитированием
Старый 21.10.2009, 15:56   #9
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так а где код которым ты дату в БД пихаешь?
Это код на добавление
Код:
procedure TFD_U.BitBtn1Click(Sender: TObject);
var
  idp,ip,ig,i: integer;
begin
DBLCB1.Visible:=false;
F_uchet.GroupBox5.Visible:=false;
datetp2:='0000-00-00';
if knopka_nagata then
  begin
    FD_U.DateTimePicker2.Visible:=true;
    datetp2:=FormatDateTime('yyyy-mm-dd', datetimepicker2.Date);
  end;
   if kd=2 then
      begin
         DBLCB1.Visible:=false;
         if kd=1 then
               begin
                 dm.ADOQ_U.Parameters.ParamByName('kd').Value:=kd;
                 DBLCB1.Visible:=true;
               end;
      end;
idp:=DM.ADOQ_PACid_pacienta.Value;
DM.ADOQ_U.SQL.Clear;
DM.ADOQ_U.SQL.Text:='INSERT INTO vid_ucheta (data_vzyatiya_na_uchet, data_snyatiya_s_ucheta, kem_napravlen,dop_info,dis_kon,id_pacienta,id_prichini,id_gruppi) VALUES (:dvnu,:dssu,:kn,:di,:kd,:idp,:pssu,:gu)';
dm.ADOQ_U.Parameters.ParamByName('kd').Value:=kd;
Dm.ADOQ_U.Parameters.ParamByName('kn').Value:=Edit1.Text;
DM.ADOQ_U.Parameters.ParamByName('di').Value:=memo1.Text;
DM.ADOQ_U.Parameters.ParamByName('dvnu').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOQ_U.Parameters.ParamByName('dssu').Value:=datetp2;
DM.ADOQ_U.Parameters.ParamByName('idp').Value:=idp;
if DBLCB1.KeyValue=0 then
  pssu:=1;
for ip:=2 to 12 do
  begin
    if DBLCB1.KeyValue=ip then
      begin
        pssu:=ip;
        DM.ADOQ_U.Parameters.ParamByName('pssu').Value:=pssu;
      end;
  end;
for ig:=1 to 5 do
  begin
    if DBLCB2.KeyValue=ig then
      begin
        gu:=ig;
        DM.ADOQ_U.Parameters.ParamByName('gu').Value:=gu;
      end;
  end;
DM.ADOQ_U.ExecSQL;
DM.ADOQ_U.Close;
DM.ADOQ_U.SQL.Clear;
DM.ADOQ_U.SQL.Add('SELECT * FROM vid_ucheta vu LEFT OUTER JOIN pacient pt ON vu.id_pacienta=pt.id_pacienta');
DM.ADOQ_U.SQL.Add('LEFT OUTER JOIN prichina_snyatiya_s_ucheta pssu ON pssu.id_prichini=vu.id_prichini');
DM.ADOQ_U.SQL.Add('LEFT OUTER JOIN gruppa_uheta gu ON gu.id_gruppi=vu.id_gruppi');
DM.ADOQ_U.SQL.Add('WHERE vu.id_pacienta=:idos');
DM.ADOQ_U.Parameters.ParamByName('idos').Value:=DM.ADOQ_PACid_pacienta.Value;
DM.ADOQ_U.Open;

DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('SELECT * FROM pacient pt LEFT OUTER JOIN vid_ucheta vu ON pt.id_pacienta=vu.id_pacienta ORDER BY familiya ASC');
DM.ADOQ_PAC.Open;

if dblcb2.KeyValue=1 then
f_uchet.GroupBox5.Visible:=true
else
f_uchet.GroupBox5.Visible:=false;

if Dm.ADOQ_Uid_vid_ucheta.Value<>0 then
dm.N21.Visible:=false
else
dm.N21.Visible:=true;

for i:=1 to 5 do
begin
if (listbox1.ItemIndex=0)and(DBLCB2.KeyValue=i) then
begin
label7.Visible:=false;
dblcb2.Visible:=false;
dblcb2.KeyValue:=NULL;

    DM.ADOC_PAC.CommandText:='DELETE FROM odd WHERE id_vid_ucheta=:idood';
    DM.ADOC_PAC.Parameters.ParamByName('idood').Value:=DM.ADOQ_Uid_vid_ucheta.Value;
    DM.ADOC_PAC.Execute;

    DM.ADOQ_OOD.Close;
    DM.ADOQ_OOD.SQL.Clear;
    DM.ADOQ_OOD.SQL.Add('SELECT * FROM odd INNER JOIN vid_ucheta vu ON odd.id_vid_ucheta=vu.id_vid_ucheta WHERE odd.id_vid_ucheta=:idvuood');
    DM.ADOQ_OOD.Parameters.ParamByName('idvuood').Value:=DM.ADOQ_Uid_vid_ucheta.Value;
    DM.ADOQ_OOD.Open;
end;
end;
if listbox1.ItemIndex=0 then
begin
label7.Visible:=false;
dblcb2.Visible:=false;
dblcb2.KeyValue:=NULL;
    DM.ADOC_PAC.CommandText:='DELETE FROM odd WHERE id_vid_ucheta=:idood';
    DM.ADOC_PAC.Parameters.ParamByName('idood').Value:=DM.ADOQ_OODid_ODD.Value;
    DM.ADOC_PAC.Execute;

    DM.ADOQ_OOD.Close;
    DM.ADOQ_OOD.SQL.Clear;
    DM.ADOQ_OOD.SQL.Add('SELECT * FROM odd INNER JOIN vid_ucheta vu ON odd.id_vid_ucheta=vu.id_vid_ucheta WHERE odd.id_vid_ucheta=:idvuood');
    DM.ADOQ_OOD.Parameters.ParamByName('idvuood').Value:=DM.ADOQ_Uid_vid_ucheta.Value;
    DM.ADOQ_OOD.Open;
end;
end;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 21.10.2009, 15:57   #10
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так а где код которым ты дату в БД пихаешь?
Это на удаление
Код:
procedure TDM.N23Click(Sender: TObject);
VAR
s:integer;
begin
s:=MessageDlg('Удалить запись ?',mtWarning,[mbNO,mbOK],0);
if s=mrOK then
  begin
   F_uchet.GroupBox5.Visible:=false;
    DM.ADOC_PAC.CommandText:='DELETE FROM vid_ucheta WHERE id_vid_ucheta=:D';
    DM.ADOC_PAC.Parameters.ParamByName('D').Value:=DM.ADOQ_Uid_vid_ucheta.Value;
    DM.ADOC_PAC.Execute;
DM.ADOQ_U.Close;
DM.ADOQ_U.SQL.Clear;
DM.ADOQ_U.SQL.Add('SELECT * FROM vid_ucheta vu LEFT OUTER JOIN pacient pt ON vu.id_pacienta=pt.id_pacienta');
DM.ADOQ_U.SQL.Add('LEFT OUTER JOIN prichina_snyatiya_s_ucheta pssu ON pssu.id_prichini=vu.id_prichini');
DM.ADOQ_U.SQL.Add('LEFT OUTER JOIN gruppa_uheta gu ON gu.id_gruppi=vu.id_gruppi');
DM.ADOQ_U.SQL.Add('WHERE vu.id_pacienta=:idos');
DM.ADOQ_U.Parameters.ParamByName('idos').Value:=DM.ADOQ_PACid_pacienta.Value;
DM.ADOQ_U.Open;
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('SELECT * FROM pacient pt LEFT OUTER JOIN vid_ucheta vu ON pt.id_pacienta=vu.id_pacienta ORDER BY familiya ASC');
DM.ADOQ_PAC.Open;
  end
else if s=mrNo then
begin
    DM.ADOQ_OOD.Close;
    DM.ADOQ_OOD.SQL.Clear;
    DM.ADOQ_OOD.SQL.Add('SELECT * FROM odd INNER JOIN vid_ucheta vu ON odd.id_vid_ucheta=vu.id_vid_ucheta WHERE odd.id_vid_ucheta=:idvuood');
    DM.ADOQ_OOD.Parameters.ParamByName('idvuood').Value:=DM.ADOQ_Uid_vid_ucheta.Value;
    DM.ADOQ_OOD.Open;
fd_u.Close;
end;
if Dm.ADOQ_Uid_vid_ucheta.Value<>0 then
dm.N21.Visible:=false
else
dm.N21.Visible:=true;
end;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Программа-справочник, Функция удаления записи из файла umnik90 Общие вопросы C/C++ 1 11.06.2009 16:07
поиск записи после обновления smoky Microsoft Office Access 1 12.05.2009 00:20
Отмена удаления записи Хитрец БД в Delphi 2 12.04.2009 23:14
Очистка формата после удаления макроса valerij Microsoft Office Excel 2 14.06.2008 12:00
DVD после записи не читает собственные диски photozaz Свободное общение 14 10.04.2008 12:17