cxgrid dataset database nill trim

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

cxgrid dataset database nill trim

Mesaj gönderen safak »

cxgridde bir hücreye string giriyorum. firebirdde alan tanımı CHAR(40). Firebird fieldde bilgi tam girdiğim uzunlukta görülüyor. Eğer hiç bilgi girmeden ya da cursor sola yaslıyken enterlersem firebird field null oluyor.

Bu alana yeniden bilgi girmek istediğimde, ya girdiğim string uzunluğu kadar ya da bundan bir kaç bayte daha uzun bilgi girebiliyorum. Alanın tümünü (40 karakter) işleyemiyorum.

Eğer alanı tümden silip boşken enterlersem, bir daha aynı alana geldiğimde tam uzunluk girebiliyorum. Eğer tam uzunluk girmezsem yukarıdaki tarif edilien süreç yeniden başlıyor.

Acaba cxgridde, bir alan girilen bilgiyi, (kendiliğinden trimlenmeden) datasete ve tablo alanına field uzunluğunda aktarmanın bir yolu var mı?
Ya da firebird alanından trimlenmiş olarak gelen bir stringi, cxgrid içerisnde field uzunluğu ile edit etmek için bir özellik var mı?

Eğer bu default bir durumsa ve müdahale edilemiyorsa datasete göndermeden önce istediğim gibi modifiye edip sonra göndermek de bir yol. Ama her string field için bunu yapmak biraz zahmetli olabilir.

Görüşlerinizi rica ediyorum
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,

Bence TTable veya TQuery nesnesindeki Field'larda uzunluk doğru set edilmemiş olabilir bunu kontrol ettiniz mi? Bu arada tiplerin de doğruluğunu kontrol ederseniz iyi olur.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Aynı durum DBgridde de var. Bir string alana gidip içeriğini boşaltıp, backspace tuşuna basıp enterlerseniz, datasette bu alanın değeri null oluyor. Ayrıca içine değer yazılmış bir alan, field uzunluğu yerine, sadece içinde tutulan bilginin uzunluğu kadar edit edilebiliyor. Aşağıdaki kod kullandığın bileşenleri ve null değerini gözleyişimi gösteriyor.
procedure TForm1.IBDataSet1AfterPost(DataSet: TDataSet);
begin
IBTransaction1.CommitRetaining;
if IBDataset1.FieldByName('ACIKLAMA').IsNull then ShowMessage('null');
end;
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Hocam peki CHAR yapman şart mı ?
Yani VARCHAR yapsan böyle bir sorun olmaz bence.
Sonuçta VARCHAR(40) öyle çok bir yerde kaplamaz.
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Pek mantıklı gelmedi ama denedim. Sonuç gene aynı.

Bu sanıyorum IBCustomDataSet.pas dan gelen bir durum. TDataset ile ilgili. Aynı işlemleri IBExpert üzerinden yapıca problemsiz çalışıyor.

Bir de şunu gözledim. Eğer içinde değer olan string bir alanda, alanın tam başında edit etmeye başlarsanız, önce griddeki hücrenin içini siliyor. Sonra doğruca yazıyor. Fakat bu stringin ortalarından bir yerden bilgi girmek isterseniz mümkün olmuyor. Tabii sonuna eklemek de mümkün değil. Örnegin "HASN UZUN" olarak yazılmış bir alanı düzeltmek için hepsini yeni baştan yazmak gerekiyor.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Hocam ben de denedim şimdi , senin dediğin gibi bir şey olmadı. Yani herşey yolunda gidiyor.
IBX in tüm update leri yüklümü ?
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

İlginiz için teşekkürler.

Sizin önerinizin neden çalıştıramadığımı buldum. Field tipini CHAR dan VARCHAR'a geçirdikten sonra, eski girilmiş alanlar aynı (problemli) özelliklerini sürdüryorlar. Yeni girilen alanlar doğru çalışıyor. Ayrica Type değişmesine rağmen fixedLength True olarak kalıyor. bunu yeniden elle değiştirmek ya da dataset fieldleri yeniden oluşturmak lazım.

Bu yaklaşım çözüm gibi görünse de gerçek çözüm değil. Çünkü IBExpert, IBO Datasetler kullanıldığında , ister CHAR, isterse VARCHAR olsun problemsiz çalışıyor.

Sorun aslında IBCustomDataset yaklaşımından kaynaklanıyor. Kodu inceliyorum. Farklılığı bulursam yeniden yazarım.

IBX bileşenlerini update ediyorum.
http://codecentral.borland.com/codecent ... thorid=102
Update kaynağınız bundan farklı ise yazmanızı rica ediyorum.
Son Update IBX7.08 bunu kurduğum zaman Interbase servisleri tabı kayboluyor.

İyi Çalışmalar Dileklerimle
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Ben de o update'i uyguladım ancak servisler kaybolmadı. Interbase Admin paletinde duruyorlar.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Admin paleti bende de var .
IBX Update lerini kurarken şöyle yapıyorum ve bir sorun çıkmıyor .
Sırası ile Delphi7 için

IBXDP704 - IBXDP705 - IBXDP707 - IBXDP708

paketlerini ayrı ayrı yüklüyorum. Verdiğiniz linkte bunlar mevcut zaten .
Bu arada, çok araştırdım IBXDP706 gibi bir şey var mı diye, ama bulamadım . Yani 4 - 5 - 7 - 8 diye gidiyor . Arada ki 6 yok .
:)
Cevapla