SQL veritabanı time(0) sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

SQL veritabanı time(0) sorunu

Mesaj gönderen erkan1525 »

Merhaba ustalar.

delphi ve sql 2012 ile çalışıyorum. bir tablomda saat alanı var ve tipi time(0) fakat gridde görüntülemeye çalıştığımda hata alıyorum.

datetime, smalldatetime, date, ve her türlü tipe dönüştürdüğümde hata almıyorum ama time(0) veya time(7) yapınca hata veriyor ve saat alanını gridde görüntülemiyor. mssql 2012 dede sadece time yok yani illa time(0) ile time(7) arasında olmalı.

Microsoft SQL forumuna yazdım delphi sqm deki time(0) tipini desteklemiyor dediler.

Kaçırdığım bir nokta mı var? Yani time(0) kullanmanın ve gridde görüntülemenin bir yolu varmı?

Aslında alanı datetime yapıyorum ve delphi tarafındada alanın displayformat ve edit format ı nı hh:nn:ss yapıyorum ve işimi görüyor gibi ama orjinali varken böyle bir yöntem kullanmak istemiyorum...

Bir çözüm var mı acaba?
Kullanıcı avatarı
badkursat
Üye
Mesajlar: 84
Kayıt: 03 Mar 2014 08:58

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen badkursat »

Belki kullandığın delphi versiyonundaki bileşen desteklemiyordur. Getirirken "qry.FieldByName('Field').AsString;" kullanırsan getirebilir diye düşünüyorum.
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen ertank »

Kullandığın grid veya veri getirdiğin query/table ile ilgili sorun olabilir mi? Ben MSSQL Express 2014 ile "time(0)" test ettiğimde hata mesajı almadım. Normal çalıştı. Tablo içindeki saat değerlerini de gösterdi.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen sabanakman »

Hata ne ola ki acep? Belki sadece bölgesel ayarlara dayalı bir sıkıntı olabilir :s .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen erkan1525 »

ertank yazdı:Kullandığın grid veya veri getirdiğin query/table ile ilgili sorun olabilir mi? Ben MSSQL Express 2014 ile "time(0)" test ettiğimde hata mesajı almadım. Normal çalıştı. Tablo içindeki saat değerlerini de gösterdi.
Bende SQL2012 var bende bi yerde bir karışıklık vardır diye yeni bir veritabanı ve tablo oluşturdum XE2 ve XE8 de denedim. AdoQuery.Fieldbyname('saat').asstring yaptığımda saat alanı bulunamadı gibi bir hata veriyor anlamadım gitti.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen mrmarman »

(1) SQL cümlesinde saat alanınızı string cast edip öyle deneyin.
(2) Olmaz ya denemeye değer, sonuna da "AS" ifadesi ile yeni bir isim verin öyle deneyin.
Resim
Resim ....Resim
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen erkan1525 »

mrmarman yazdı:(1) SQL cümlesinde saat alanınızı string cast edip öyle deneyin.
(2) Olmaz ya denemeye değer, sonuna da "AS" ifadesi ile yeni bir isim verin öyle deneyin.
ABi öyle yapınca işin içinden çıkamıyorum. Çorba olup gidiyor. Orjinal bir çözüm yok galiba.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: SQL veritabanı time(0) sorunu

Mesaj gönderen thelvaci »

SQL Server'daki her veri tipi maalesef Delphi tarafında implemente edilmemiştir. Dolayısı ile en yakın veri tipine dönüştürülür. TDataSet.InternalOpen'dan TFieldDefs.CreateFieldComponent'e kadar inceleyerek detaylara ulaşabilirsiniz. Bire bir map edilmemiş field türleri için Delphi tarafında değişik field türleri ile karşılaşabilirsiniz. Örneğin Time veri türü için Delphi tarafında TWideStringField türünü gözlemleyebilirsiniz. Bu sorunu aşmak için ya SQL Server tarafında veriyi çektiğiniz tablonuzdaki field yapısını değiştireceksiniz, ya bu tablodan data çeken SQL ifadenizde bir conversion işlemi gerçekleştireceksiniz ya da SDAC gibi bir üçüncü parti bileşen seti kullanacaksınız.
Cevapla