Tarihlerle ilgili sorun

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Tarihlerle ilgili sorun

Mesaj gönderen ademiz »

Arkadaşlar Merhabalar

Belki bu tarihlerle ilgili sorular baydı düşünebilirsiniz!

Fakat yapacak bir şey yok sormadan çözemiyoruz.

Şimdi Databasemdeki tarihle ilgili sutunlarımı ilk önce tarih formatıyla tasarladım.

Sonra Edit lerden Like araması yaparken günden sonraki ay bölümlerini yani 01.02 derken 02 yazıldığında datayı getirmeyince bu sefer database yapısını değiştirerek tarihleri String formatına çevirdim.

Aşağıdaki malum kodla şimdi aramalarımı normal yapabiliyorum

Kod: Tümünü seç

  DM.TahsilatADOQuery.Filtered := False;
  if trim(Edit3.Text) ='' then exit;
  DM.TahsilatADOQuery.Filter := 'Tarih LIKE ' + QuotedStr(Edit3.Text + '%') ;
  DM.TahsilatADOQuery.Filtered := True;
Şimdi ise Listelerden Tarihe göre süzme yapıp sıraladığım zaman sadece günleri sıraya dizerek getiriyor.Böyle oluncada mesela 12. ayın 1. günü listenin sonlarında olması gerekirken listenin başına yerleşiyor.

Resim

Arkadaşlar bu aşamada ne arama kriterinden vaz geçebiliyorum nede Tarih süzerek liste çıkarmaktan.Bana bii yardımcı oluverin yaa :oops:

Hepinize Selamlar Saygılar
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

order by ile yada index kullanarak tarihe göre sıralama yaptırsanız?
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Mesaj gönderen ademiz »

Hocam zaten Order by a göre yapılmış.

Kod: Tümünü seç

  DM.TahsilatADOQuery.SQL.Clear ;
  DM.TahsilatADOQuery.SQL.Add('SELECT PoliceNo, SiraNo, Tarih, Tutar, Onay, [Not] FROM Odeme_tablosu') ;
  DM.TahsilatADOQuery.SQL.Add('WHERE Odeme_tablosu.Onay');
  DM.TahsilatADOQuery.SQL.Add('ORDER BY Odeme_tablosu.Tarih');  
  DM.TahsilatADOQuery.Open;
Mesele sıralama tümcesi değil Tarih sutunu metin formatında bu formatta olduğu içinde yukarda DBGrid resminde görüldüğü gibi 2. ayın tarihi en tepeye çıkıvermiş.Nedeni gün kısmı 01 olduğu için.Bu tarih formatlı olduğu zaman otomatikmen en alta inecek ve sorun kalmayaca.

ama olmuyor işte. :cry:
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

eğer mssql kullanıyorsanız substring fonksiyonu

Kullanım
SUBSTRING (Strifade,başlangıç,uzunluk)

eğer msaccess kullanıyorsanız mid$ fonksiyonu

Kullanım
mid$(Strifade,başlangıç,uzunluk)

işinizi görebilir. Bunlarla stringin belirli bir kısmını kesip alıp ona göre sıralama yaparsanız olur sanırım
En son pentiumkivanc tarafından 05 Şub 2005 04:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Mesaj gönderen ademiz »

Hocam son verdiğiniz cevaba biraz fransız kaldım kusura bakmayın.

Şunu bizim anlayacağımız dilde biraz daha açabilirmisiniz
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Bende okudum fransız kaldım yeniden edit yaptım :) yani ay kısmını kesip ona göre order by yaparsanız olmazmı?

substr için:
select substr(Odeme_tablosu.Tarih,3,2) as Tarih from .... order by tarih desc
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

adem kardeşim bu adodan kaynaklanıyor...bu durumda ben sunu yapmıştım...ado veri tabanından başka bir sey dene veya benim yaptığım gibi sende grid olarak Qantum grid bileşeni kullan o zaman sırlama kısmı düzgün oluyor...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Durun Durun.. Hemen neden pes ediyorsunuz ? :!: :lol:

- @ademiz sen yine Tarih alanını Date'e dönüştür, aktarmalarını yap vs.

- Hatırlayalım, neden tarih alanını String'e dönüştürme gereği duymuştun ?, sadece ay hanesine göre Like/Where sorgusu kurmak için değil miydi ?
- İşte çözümün SQL içinde Month( Tarih ) fonksiyonunu kullanmak.. Senin veritabanına göre örnek...

Kod: Tümünü seç

  With DM.TahsilatADOQuery do
  begin
    SQl.Clear;
    SQL.Add('Select * from TahsilatVeritabanin');
    SQL.Add('Where 1=1'); // 1=1 senin standart sorgunu temsil ediyor
    SQL.Add('AND Month(Tarih) = :Ay');
    Parameters.ParamByName('Ay').Value := StrToInt(Edit3.Text);
    Active := true;
  end;
- Bu şekilde sadece ay hanesinde 1 olan kayıtlar listelenir. Yıllar ve günler değişken ama ay 1'dir...

- Herhalde sorunu kaynağından çözdük.. :)
Resim
Resim ....Resim
Cevapla