edit içindeki değer tarih değilse ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Mesaj gönderen comfort »

:idea: :idea: :idea: trystrtodate fonksiyonunu kullanın :twisted: :twisted:
Kullanıcı avatarı
AliErdem
Üye
Mesajlar: 157
Kayıt: 16 Nis 2006 02:57

Mesaj gönderen AliErdem »

teşekürler hepinize cevaplar ve öneriler için
gimil
Üye
Mesajlar: 33
Kayıt: 28 Ara 2006 10:29
Konum: ank

Mesaj gönderen gimil »

tarih alanını veritabanında oluştururken date yapmadan dene string yap
Kullanıcı avatarı
AliErdem
Üye
Mesajlar: 157
Kayıt: 16 Nis 2006 02:57

Mesaj gönderen AliErdem »

datasetin field alanlarından tarih alanının onvalidate olayı sadece tarih değeri doğruysa çalışıyor geçersiz bir tarih olduğunda nasıl işletebilirim yardımcı olursanız sevinirim.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

O zaman o alanın onSetText olayına kod yazman gerekecek.

Kod: Tümünü seç

procedure TForm1.Table1TarihAlaniSetText(Sender: TField;
  const Text: String);
begin
  try
    StrToDate(Text);
  except
    Sender.Clear;
    ShowMessage(Format('%s değeri geçerli bir tarih değeri değildir.',[Text]));
    DBEdit1.SetFocus;
  end;
end;
İnşallah bu sefer olacak :) .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@sabanakman doğru çözümü sunmuş.
- Bir ekleme yapmak lazım. Bu OnSetText eventi devreye sokulduğunda veri aktarımının kullanıcıya bırakılması durumu sözkonusudur.

- Tarih formatı doğru ise Try işlemi başarılı sonuçlanır fakat alan güncellenmez. Bunun sizin tarafınızdan yapılması gerekir.

- Şahsen kullandığım; aşağıdaki kurgu, bir veritabanı alanına (kod ile ve ne zaman) bu kontrolü nasıl vereceğinizi ve kaldıracağınızı örnekler...

- Veri alanı kontrol Procededure

Kod: Tümünü seç

procedure TForm1.TarihKontrol(Sender: TField; const Text: String);
begin
  Try
    TField(Sender).AsDateTime := StrToDate(Text);
  Except
    ShowMessage('Hatalı Tarih : '+ Text );
  end;
end;
- kontrol Procededure devreye sokmak için

Kod: Tümünü seç

procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
begin
  If Dataset.FieldList.IndexOf('TarihAlani') >= 0 then
    Dataset.FieldByName('TarihAlani').OnSetText := TarihKontrol;
end;
- işi bittiğinde kontrol Procededure devreden çıkarmak için

Kod: Tümünü seç

procedure TForm1.ADOQuery1BeforeClose(DataSet: TDataSet);
begin
  If Dataset.FieldList.IndexOf('TarihAlani') >= 0 then
    Dataset.FieldByName('TarihAlani').OnSetText := Nil;
end;
- Başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
AliErdem
Üye
Mesajlar: 157
Kayıt: 16 Nis 2006 02:57

Mesaj gönderen AliErdem »

teşekkür ederim arkadaşlar onsettext eventi mrmarmen in dediği gibi ilgili procedure yazılmadıında edit içerisinden çıktığı anda değeri siliyor. teşekkürler sorun çözüldü
Cevapla