Bir süre önce MySql ile uzak veri tabanı ile ilgili makale yayınlamıştım. Sorunlar bununla da bitmiyor çok iyi biliyorum. MySql çk iyi bir veritabanı olmasına karşın tarih alanlarını sorgulamak sorun yaratıyor ise ve version hatası alıyorsanız buyrun size alternatif bir çözüm. Bu uygulamayı MySql dışındaki veri tabanlarında da uygulayabilirsiniz.
Öncelikle datetimepicker yada monthcalender nesnelerini formunuza yerleştirin. Veri tabanınızda bulunan tarih alanına ek olarak " tarihsayisi " gibi bir alan ekleyin veri tipi Mssql için Nvarchar, access için metin, mysql için varchar olsun. Tarihi o alandan sorgulayacağız.
ve işte kodumuz. bu kodu monthcalender yada datetimepicker ondblclick olayına yazabilirsiniz.
var
tarih:string;
gun,ay,yil:string;
tarihsayisi:string;
begin
tarih:=DateToStr(MonthCalendar1.Date);
gun:=copy(tarih,1,2);
ay:=copy(tarih,4,2);
yil:=copy(tarih,7,4);
tarihsayisi:=gun+ay+yil;
//ado sorgusunu yazıyorum.
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('select * from tabloadı where tarihsayisi=:tar);
AdoQuery1.Parameters.ParamByName('tar').Value:=ran devutarihsayisi;
AdoQuery1.Open;
end;
Sorgularken kullanacağınız kod yukarda. Peki veritabanına eklerken ne yazacağız. Karışık kodlarda kafanızı meşgul etmeyin. Tarih alanını mysql de yada diğer veritabanlarında convert edecem diye canınız çıkmasın. İşte ekleyeceğiniz kod.
var
tarih:string;
gun,ay,yil:string;
tarihsayisi:string;
begin
tarih:=DateToStr(MonthCalendar1.Date);
gun:=copy(tarih,1,2);
ay:=copy(tarih,4,2);
yil:=copy(tarih,7,4);
tarihsayisi:=gun+ay+yil;
adoquery1.Insert;
adoquery1tarih.value:=monthcalender1.date; //walla artık mysql in nasıl tarih eklediği bizi bağlamıyor. istediği formatta yazdırsın. ister gün ay yıl ,ister yıl ay güni isterse ay yıl gün. bizim artık sabit bir tarih sayımız var.
adoquery1tarihsayisi.value:=tarihsayisi;
adoquery1.post;
end;
delphide veritabanı tarih sorgulamada problem yaşayanlar
1
●3.927