Yorumları: 37
Konuları: 11
Kayıt Tarihi: 06-03-2017
Rep Puanı: 156
Başlangıç
Merhaba
Firebird 2.5 veri tabanında index tanımlayarak mükerrer kayıt kontrolü yaptırmak istiyorum. Fakat Ğ.İ.Ö.Ş.Ü.Ç harflerinde büyük ve küçük farklılıkla yazıldığında index alanı kaydı yokmuş gibi kabul edip kayıt işlemini gerçekleştiriyor örnek (ÇAY kaydı varken çay yazında bu kaydı kabul ediyor. Wın1254 ve TURKISH_CHARSET olarak tanımlı database firebird kısmında. Bu kontrolü data kısmında nasıl çözebilirim eğer database kısmında çözümü yoksa bunu delphi tarafında nasıl çözebilirim. Şunu da belirtmek istiyorum ki data ya büyük harfe çevirerek kayıt yaptırmak istemiyorum. Eğer data da ÇAY olarak kayıt varsa çay olarak giriş yapılmaya çalıştığımda uyarı vermesini istiyorum. Mysql ve mssql de bu sorun yok sorunsuz çalışıyor fakat benim firebird tarafında bunu çözmem gerekiyor. Konu hakkında yardımlarınız için şimdiden teşekkür ederim.
Yorumları: 616
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.270
Uzman
07-03-2017, Saat: 00:46
(Son Düzenleme: 07-03-2017, Saat: 00:48, Düzenleyen: masteryoda.)
(06-03-2017, Saat: 22:30)quake16 Adlı Kullanıcıdan Alıntı: Merhaba
Firebird 2.5 veri tabanında index tanımlayarak mükerrer kayıt kontrolü yaptırmak istiyorum. Fakat Ğ.İ.Ö.Ş.Ü.Ç harflerinde büyük ve küçük farklılıkla yazıldığında index alanı kaydı yokmuş gibi kabul edip kayıt işlemini gerçekleştiriyor örnek (ÇAY kaydı varken çay yazında bu kaydı kabul ediyor. Wın1254 ve TURKISH_CHARSET olarak tanımlı database firebird kısmında. Bu kontrolü data kısmında nasıl çözebilirim eğer database kısmında çözümü yoksa bunu delphi tarafında nasıl çözebilirim. Şunu da belirtmek istiyorum ki data ya büyük harfe çevirerek kayıt yaptırmak istemiyorum. Eğer data da ÇAY olarak kayıt varsa çay olarak giriş yapılmaya çalıştığımda uyarı vermesini istiyorum. Mysql ve mssql de bu sorun yok sorunsuz çalışıyor fakat benim firebird tarafında bunu çözmem gerekiyor. Konu hakkında yardımlarınız için şimdiden teşekkür ederim.
create unique index adi_unq_idx on ogrenci computed by (lower(ogrenci_adi));
Örnek ogrenci tablosunda ogrenci_adi alani tanımlanmıştır.
ALİ
ali
izin vermez
--
ÇAY
çay
çAy
izin vermez.
“Do. Or do not. There is no try.”
Yorumları: 261
Konuları: 25
Kayıt Tarihi: 01-02-2017
Rep Puanı: 1.379
Programcı
Quake16, Mesajı yanlış yere açmışsın. Firebird bölümünde açman daha doğru olurdu. Index olarak @masteryoda'nın dediği şekilde de yapabilirsin, kendin kod tarafında kayıt yapmadan önce de kontrol edebilirsin. İşi veritabanına bırakırsan kayıt sırasında programın kontrolü dışında hata mesajları çıkabilir, try-catch kullanman gerekebilir.
Ben kod tarafında kendi kontrollerini kendinin yapmanı tavsiye ederim. Artılarını ve eksilerini ancak sen kendin deneyerek çözebilirsin diye düşünüyorum.
E.O.F. (End Of Fun )
Yorumları: 37
Konuları: 11
Kayıt Tarihi: 06-03-2017
Rep Puanı: 156
Başlangıç
Merhaba
Yardımlarınız için teşekkür ederim data kısmında olan problemimi verdiğiniz kodla çözülmüş oldu.
Yorumları: 616
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.270
Uzman
(07-03-2017, Saat: 17:33)quake16 Adlı Kullanıcıdan Alıntı: Merhaba
Yardımlarınız için teşekkür ederim data kısmında olan problemimi verdiğiniz kodla çözülmüş oldu.
client tarafında da aynı kontrolü yapmanız daha iyi olacaktır sonuçta aynı kayıt varsa daha anlamlı bir mesajla kullanıcıya bildirim verebilirsiniz.
localete ile veya ayrı bir query ile aynı kayıt varmı diye kontrol edeblirsiniz
sql ile kontrol için index ile aynı mantıkta buraya bakabilirsiniz
https://firebirdsql.org/refdocs/langrefu...upper.html
“Do. Or do not. There is no try.”