Tarih Karşılaştırma !!!

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Tarih Karşılaştırma !!!

Mesaj gönderen ozcank »

Arkadaşlar;
Tarihi nasıl buldurup karşılaştırmam gerekiyor?

a:= table1.locate('Ro5BakTar')=Tarih then

tarihi bulursam eğer günün tarihi ile karşılaştıracam.

SQL de nasıl yapabilirim bu işlemi her iki tarihi de kaydettiriyorum 6 ay sonra hesaplanan tarihi veya 1 yıl sonraki tarihi kaydettiriyorum sadece kayıtlı olan tarih ile o gune geldiği tarih eşit olacak.

bu şekilde birşeyler yaptım ama;

var

BakTar:Boolean;
begin
Tarih:=Date()
BakTar:= table1.locate('Ro5BakTar'); //bu satırda hata veriyor "Ro5BakTar" tarih değerinde loacte tarih değerini bulmuyor mu?
if tarih=BaktTar then
Begin
if BakTar=true then begin
ShowMessage('Bu ay bakım yapılması gereken müşteriler var!');
Form22.Show;
end
else
if BakTar=false then begin
Form22.Show;
end;
end;


Lütfen arkadaşlar yardım edin !!!!!
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

if data.mcek.Locate('MCEKTARIH',datetostr(date),[]) then
begin
showmessage('Bugün için Tahsil edilecek Çekler var');
orda hata vermsi normal locate nin genel kullanımı bu şekilde en azından benim bildiğim..bu kodda eğer bugünün tarihine ilişkin kayıt varsa direk mesaj veriyor zaten..

kolay gelsin...
SQL lede yapmak mümkün.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: Tarih Karşılaştırma !!!

Mesaj gönderen rsimsek »

@ozcank öncelikle kodları yazarken daha düzenli ve [ code ] [ /code ] tag ları içinde yazarsan okunaklı olur :!:
ozcank yazdı:Arkadaşlar;
var
BakTar:Boolean;
begin
Tarih:=Date()
BakTar:= table1.locate('Ro5BakTar'); //bu satırda hata veriyor "Ro5BakTar" tarih değerinde loacte tarih değerini bulmuyor mu?
if tarih=BaktTar then
Begin
if BakTar=true then begin
ShowMessage('Bu ay bakım yapılması gereken müşteriler var!');
Form22.Show;
end
else
if BakTar=false then begin
Form22.Show;
end;
end;
Locate komutu/procedure ü ile sadece tablodaki herhangi bir kayıta konumlanabilirsin :idea: Kullandığın veritabanı nedir?

Kod: Tümünü seç

Table1.FindKey([Key_Alani]);
veya

Kod: Tümünü seç

Table1.Locate(Gerekli parametreler);
kullanarak istediğin kayıta konumlanabilirsin. Sonunda kodun şu şekle gelir; (biraz da sadeleştirerek :wink: )

Kod: Tümünü seç

begin
  if not Table1.FindKey([Key_alani]) then
  begin
    ShowMessage('Kayıt bulunamadı!!');
    exit;
  end;
  if Table1.FieldByName('Ro5BakTar').AsDateTime = Date() then
    ShowMessage('Bu ay bakım yapılması gereken müşteriler var!');
  Form22.Show;
end;
En son rsimsek tarafından 02 May 2005 09:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
coskun
Üye
Mesajlar: 46
Kayıt: 22 Nis 2005 05:50
Konum: istanbul

Mesaj gönderen coskun »

selamlar hocam bir de table bileşeninin findkey arama metodu ile dene belki de daha da iyi olur. bir de datetimepicker bilşeni kullanırsan tarih olaylarında daha da iyi olur düşüncesindeyim.

table1.findkey([datetimepicker1.date]);

gibi.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Tarih Buldurma !!

Mesaj gönderen ozcank »

Bu şekilde yaptım ve düzgün çalışıyor tarihide karşılaştırıyor ama Locate veya FindKey ile bir türlü bulduramadım.Ve bu mesajı 1 kere verdirmek istiyorum her defasında form'a girerken mesaj veriyor.

Var

Tarih:String;

Begin

Tarih:=DateToStr(Date);

If Table1RO5BAKTAR.AsString=Tarih Then

Begin

ShowMessage('Bu Ay Bakım Var !!!');

Form22.Show;

end

Else Begin

form22.Show;

end;

end;
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar herşey tamam akşamda test ettim.Fakat tek sorunum bu mesajı 1 kere vermesi lütfen yardım edin.Nereye ne eklemem gerekiyor?

Var
Tarih:String;
Begin
Tarih:=DateToStr(Date);
If Table1RO5BAKTAR.AsString=Tarih Then
Begin
ShowMessage('Bu Ay Bakım Var !!!');
Form22.Show;
end
Else Begin
form22.Show;
end;
end;
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

birkere vermesinden kastın ne anlamadım..o tarihe ait bir tane kayıt varsa taibki bir kere verir.eğer birden fazla kayıt var sadece bir kayıt için mesaj veriyor diyorsan döngü açmamışsın..yanlışmı anlamışım.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Button her bastığımda mesaj veriyor 1 kereden sonra tarih değişene kadar vermeyecek mesela yarın verecek ama o tarih ile 1 kere mesaj verecek birdaha vermeyecek. Bu şekilde.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhabalar,

okurken aklıma bi şey geldi. bu işlerde acemiyim ama sen kontrol ettiğinde ve o tarihte bakım olduğunu bulduğunda ve sana o tarih için mesaj verdiğinde yanına çek attırsan. yani demek istediğim olayın yanında çek varsa ben bu uyarıyı vermişim zaten deyip geçecek çek yoksa bu yeni sorgu diyecek ve sorgulayıp mesajı verecek
bi an aklıma geldi. acemice işte ağzı olan konuşuyor.

kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

çok doğru dedin olabilir ama bende acemiyim nasıl bir mesaj verdirmeliyim ki checkbox1 de içinde olsun mesaj penceresi ShowMessage ile geliyor bu mesaj penceresi içine nasıl yerleştirebilirim CheckBox1 ve nasıl sorgu yapabilirim veya başka yolu varmı? .Çok da sevinirim.
Fikrin için çok tşk. ederim.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar,

Acemilikten sana verdiğim öneriyi düşünüyordum fakat tablona bide dbcheckbox la veri girilen alan falan eklemen gerektiğıini düşünüyorum.

bide şu önerim olucak form22 sanırım senin bakım için bulunan listen ve ayrı ayrı tairhlerde. bu olayı datetimepicker ile iki ayrı button ile yapsan. butonun biri sql ile datetimepicker de bulunan günün tarihini sorgulasın ve sonucu sana ayrı bi formda versin sende bak kime bakım gerekli. bunu günde birkere yaparsın diğer button ise sorgu yapmadan form22 yi açar ve işlemini yaparsın. Dediğim gibi ustalara saygısızlık etmek istemem ama benimki bi öneri bide bu yönden incele istersen muhakkak daha kolay ve güzel yöntemleri vardır. delphi yi tutamazsın çözüm çok.

kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Fatih bey ;

Var
Tarih:String;
Goster:Boolean;
Begin
Tarih:=DateToStr(Date);
If (Table1RO5BAKTAR.AsString=Tarih) And (Goster<>True) Then
Begin
ShowMessage('Bu Ay Bakım Var !!!');
Goster:=True;
Form22.Show;
end;
end;

Burda ilk tarihe konumlanıyor ilk tarih bugünün tarihi ise mesaj veriyor benim kayıtlar arasında bugünün tarihini bulup karşılaştırmam gerekiyor

Locate veya FindKey ile tarih nasıl buldurup karşılaştırabilirim? yardım ederseniz çok sevinirim.
Cevapla