Tarih Karşılaştırma !!!
ozcank02.05.2005 - 09:07:10
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 !!!!!
 
vedatkaba02.05.2005 - 09:33:55
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.
 
rsimsek02.05.2005 - 09:58:16
@ozcank öncelikle kodları yazarken daha düzenli ve [ code ] [ /code ] tag ları içinde yazarsan okunaklı olur Exclaim

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?
Table1.FindKey([Key_Alani]);
veya
Table1.Locate(Gerekli parametreler);
kullanarak istediğin kayıta konumlanabilirsin. Sonunda kodun şu şekle gelir; (biraz da sadeleştirerek Wink )

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;
 
coskun02.05.2005 - 09:58:38
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.
 
ozcank03.05.2005 - 08:31:20
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;
 
ozcank04.05.2005 - 09:04:45
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;
 
vedatkaba04.05.2005 - 09:36:49
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.
 
ozcank04.05.2005 - 18:31:27
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.
 
bobasturk04.05.2005 - 23:26:29
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.
 
ozcank05.05.2005 - 09:08:49
ç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.
 
bobasturk05.05.2005 - 21:40:18
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.
 
ozcank07.05.2005 - 09:05:59
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.
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com