Stringi Tarihe çevirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

Stringi Tarihe çevirme

Mesaj gönderen Tropic »

Arkadaşlar Access de tablomda veri türü tarih/saat olan bi alanım var.
Delphi de sorgu içerisinde maskedit kutusuna girdiğim formatlı tarihle veritabanındaki tarih alanını karşılaştırmak istiyorum

Kod: Tümünü seç

'where tarih >= '''StrToDate(MaskEdit1.Text)''''
burda imcompatible type 'String' and 'TDate' hatası veriyo
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Cevap sorunun içinde.Alanın Tarih Saat türünde ama sen sadece Tarihe çevirmeye çalışıyorsun.Oysa DateTime Türüne çevirmelisin.

Birde şunu dene.Ben denedim çalışıyor.

Kod: Tümünü seç

'where tarih >= '''StrToDateTime(MaskEdit1.Text)''''
kolay gelsin.
En son NewMember tarafından 07 Kas 2005 01:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

parametre kullanın. :ara Arama
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Bu tür durumlar için FormatDateTime kullanarak yapabilirsiniz. Ancak bunu ben tavsiye etmem.

Onun yerine Query'i (Sorguyu) oluştururken parametre ile değerlerinizi Sorguya alın.

Yani

Kod: Tümünü seç

  WHERE TarihAlani >= :DT_PARAMTARIH
Şeklinde kullanırsanız hata almazsınız ve sorguyu Open (Açmadan) önce

Kod: Tümünü seç

  Query1.Parameters.ParamByName('DT_PARAMTARIH').Value := DateTimePicker1.Date ; // Dikkat TAdoQuery'ye göre yazdım
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Burda date'e çevirmenize gerek yok. Direk string olarak eklemeniz lazım.

Kolay gelsin.
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

dt_paramtarih

Mesaj gönderen Tropic »

Burdaki DT_PARAMTARIH herhangi bir değişken adını mı temsil ediyo veya istediğimiz bi ismi kullanabilirmiyiz...
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Sorguların içindeki parametreleri incelemenizi tavsiye ederim.

Parametreler çeşitli biçimde kullanılabilir, ( ? ) kullanarak veya :ATKAFADAN_YAZBURAYA_PAREMETREYI gibi kulanarak yapılabilir.

Ama önce Sorgularda Parametreleri okuyun örneklerini inceleyin.

Kolay Gelsin

Not :Sorunuzun yanıtı evet istediğiniz bir şeyi yazabilirsiniz ama başında mutlaka ( : ) olmak zorundadır.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

:(

Mesaj gönderen Tropic »

mussimsek veriyi string olarak bırakıp programı çalıştırınca ölçüt ifadesinde veri türü uyuşmazlığı hatası veriyo
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: :(

Mesaj gönderen sadettinpolat »

Tropic yazdı:mussimsek veriyi string olarak bırakıp programı çalıştırınca ölçüt ifadesinde veri türü uyuşmazlığı hatası veriyo

access ta tarhileri # içine almıyor muyduk ?

'where tarih >= #' + StrToDate(MaskEdit1.Text)+'#' şeklinde deneyin.

tabi en güzel parametre kullanmak...
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

eşittir çalışmıyor

Mesaj gönderen Tropic »

Kod: Tümünü seç

  WHERE TarihAlani >= :DT_PARAMTARIH
Arkadaşlar yukarıdaki sorgudaki parametre den önce gelen büyük eşit şartında karşılaştırılan tarihten büyükleri sorguluyo yani eşit şartını kabul etmiyor.

Kodu aşağıdaki gibi denedim

Kod: Tümünü seç

WHERE TarihAlani = :DT_PARAMTARIH
eşit ifadesi tek başına kullandım şartı sağlıyormu diye yine sonuç vermiyor...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: :(

Mesaj gönderen mussimsek »

Tropic yazdı:mussimsek veriyi string olarak bırakıp programı çalıştırınca ölçüt ifadesinde veri türü uyuşmazlığı hatası veriyo
Burda siz bir SQL cümlesi oluşturup bunu çalıştıyormusunuz? Bunu yapmak için gerekli SQL cümlesini oluştururken, string olarak eklemeniz lazım. StrToDate derseniz, Delphi date tipine çevirir ve daha önceki ve sonraki stringlerle birleştirirken hata verir.

En güzel yöntem şudur, SQL cümlesini önce ilgili veritabanında çalıştırın, çalıştığına emin olduktan sonra Delphi tarafına aktarması kolay. Eğer tarih ayıracı # ise :

'where Tarih >=#' + MaskEdit1.Text + '#'

şeklinde olmalıdır.

Kolay gelsin.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

= Kontrolunda dikkat edin, tarih alanlarda (DateTime) olduğu için eşitliği bulurken dikkatli olmalısınız.

Ya veriyi yazarken Saati silip Yazacaksınız yada Raporunuzda bunu göz önünde bulunduracaksınız.

Yani,

15.10.2005 14:00:00 olarak kayıtlı bir bilgiyi
= 15.10.2005 olarak sorgularsanız bulamazsınız !... Buna dikkat edin !...

Veritabanına kaydederken Tarih alanlarınızı Truncate ederek kaydedin ki, Tarih sorgulamalarınız şaşırmasın.

Kolay Gelsin

Not : Bu söylediğim Sadece Tarih sorgulamaları için geçerlidir. Tarih saat beraber lazım ise, o zaman Sorgunuz >= ve < gibi kıstaslarla almak zorunda kalabilirsiniz.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla