cxGrid ve SQL Server kombinasyonunda AutoInc alan yönetimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 03:08

cxGrid ve SQL Server kombinasyonunda AutoInc alan yönetimi

Mesaj gönderen aLonE CoDeR » 09 Oca 2008 02:42

Selamlar.

cxGridi daha önce herhangi bir projede kullanmamıştım (Info Power kullanıyordum..), bir değişime gidip cxGrid kullanmaya başladım. SQL Server 2005 kullanılan bir projede ID alanı AutoInc ve PK tanımlı. Gridde son kolondan sonra yeni bir row eklendiğinde, yön ok tuşları kullanılarak yeni bir row eklendiğinde ve post işleminde "Çok adımlı işlem hatalar üretti. Her bir durum değerini denetleyin" şeklinde hata mesajı alıyorum tahmininiz üzre ADO hatası. Bildiğim kadarıyla bu hata PK alan gereksiniminden kaynaklanan bir durum ancak belirttiğim gibi PK mevcut. ADOQuery ile kayıt yapmaya çalışıyorum (DataSet ya da Command nesnesini özellikle kullanmak istemedim ama onlarla da denediğimde yine aynı hatayı aldım). Aynı işlemi standart DBGrid'le denediğimde herhangi bir hata almadan kaydı tamamladı. cxGridin bununla ilgili bir ayarı olduğunu tahmin ediyorum ancak net bir sonuca da ulaşamadım. Fikri olan?

ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 09:13

Mesaj gönderen ikutluay » 09 Oca 2008 02:50

bu mesajı sadece PK vermiyor. bende çok ilginç başka bir şeyden almıştım. alana boyutundan fazla bir rakam ekleyince bu hatayı veriyordu.

ehlib içinde son satırda iken append insert vs olayları devre dışı bırakabiliyor. aradığın böyle bir şeymi.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog

aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 03:08

Mesaj gönderen aLonE CoDeR » 09 Oca 2008 02:53

ikutluay yazdı:bu mesajı sadece PK vermiyor. bende çok ilginç başka bir şeyden almıştım. alana boyutundan fazla bir rakam ekleyince bu hatayı veriyordu.
Bunu belirttiğin mesajı okudum ve denemelerimde bunu da gözönünde bulundurdum hatta öyle ki sadece unique alanlara değer girerek denedim sonuç değişmedi.
ikutluay yazdı: ehlib içinde son satırda iken append insert vs olayları devre dışı bırakabiliyor. aradığın böyle bir şeymi.
Aynı satırda iken post komutu verince de aynı hatayı veriyor yani sorun Insert ya da Append değil anladığım kadarıyla.

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3046
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman » 09 Oca 2008 05:34

Çok adımlı işlem hatalar üretti mesajı yanlış hatırlamıyorsam tüm alannları aynı değere sahip birden fazla kayıt varsa ve bunlardan birisi üzerinde işlem yapılıyorsa ADO tarafından üretiliyordu. Acaba post işleminden sonra identity alan değeri okunamayıp null kalıyor olabilir mi? Eğer öyle ise AfterPost olayına ADO bileşenini Requery ile tazelemek sorunu çözebilir.

Bir benzer sorunda trigger'ı olan tabloda yapılan işlemlerde oluyordu. Tabi trigger kodları set nocount on .... set nocount off arasına yazılmamışsa. Bu durumda gelen mesajı hatırlamıyorum ama :oops:
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 03:08

Mesaj gönderen aLonE CoDeR » 09 Oca 2008 05:56

Benzer bir soruya karşılaştığın bu olayı yazmışsın okumuştum trigger (henüz) yok zaten tabloda, sorunun kaynağını tespit ettim bir alanın tipi Numeric(2, 2) şeklindeydi ve bu alana aktardığım değer 18, bu atama işleminde hata veriyordu. Halbuki aynı tipte başka bir alana da atanan değer 12 ve civarında rakamlar olmasına rağmen herhangi bir hata vermiyor. Gariptir alanın tipini Float yapınca sorun düzeldi ama içime sinmedi :roll:

İlginize teşekkürler..

selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n » 10 Oca 2008 01:26

hıımm şimdi okuyunca fark ettim aynı sıkıntılar ve bir benzeri bendede var MSsql kullanmaya başladığımdan buyana;

iki tablom var bunlardan biri stok diğeri stok_depo

stok tablomda insert trigger'ım(after) var şu şekilde;

Kod: Tümünü seç

declare @xstok_id integer
declare @xdepo_id integer

begin

 select @xstok_id=stok_id from INSERTED

insert into stok_depo (stok_id,depo_id,giri,ciki)

                   SELECT @xstok_id,depo.depo_id,0,0 from depo
 
end
delphi tarafından bir stok tablosuna yeni bir kayıt açtığımda stok_id alanı AutoInc ve PK tanımlı olmasına rağmen stok tablosunun AutoInc üretiği numarayı değilde toplu kayıtı açtığım tablodaki yani stok_depo daki en son ki kayıtın id sini grid e döndürüyor. ama delphiden queryleri açıp kapattığımda gördüğüm sonuç herşey normal olarak işlemiş gözüküyor...
:roll:
;)

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3046
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman » 10 Oca 2008 03:05

Kodlarını...

Kod: Tümünü seç

declare @xstok_id integer
declare @xdepo_id integer

begin

set nocount on

 select @xstok_id=stok_id from INSERTED

insert into stok_depo (stok_id,depo_id,giri,ciki)

                   SELECT @xstok_id,depo.depo_id,0,0 from depo

set nocount off
end
şekline getirmeni öneririm. Aksi halde SQL'in ürettiği uyarı (warning) delphi tarafından hata (exception) olarak algılanıyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n » 10 Oca 2008 03:39

evt hocam set nocount on .... set nocount off.... veritabanında var buraya yazarken vtden copy paste yapmadığımdan dolayı unutmuşum ama asıl sıkıntı dediğim gibi diğer tabloya eklediğimdeki son id veriyor...
;)

selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n » 13 Oca 2008 04:07

sıkıntım halen devam etmekle birlikte kendimce queryleri açıp kapatarak yeni oluşan id alıyorum ama ileride bu şekilde querylerimi kapatamayacağım bir zaman gelince ne yapacağımıda bilmiyorum inş çözümü buluruz :(
;)

Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 02:10
Konum: İstanbul & Gebze Karışık

Re: cxGrid ve SQL Server kombinasyonunda AutoInc alan yönetimi

Mesaj gönderen conari » 17 Şub 2010 04:01

Merhaba arkadaşlar, malum hatayı bende alıyorum.
alan nvarchar(255) tanımlı, numerik giriş yapıyorum diye veriyor.
Tablo kullanıyorum.
Afterposta kodmu yazacağım yoksa bunun başka bir yolu varmı?
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim

musetek
Üye
Mesajlar: 1
Kayıt: 29 Ara 2006 02:31

Re: cxGrid ve SQL Server kombinasyonunda AutoInc alan yönetimi

Mesaj gönderen musetek » 08 Nis 2010 10:34

bu hatayı yakın zamanda ben de aldım, aslında konunun üzerinden çok geçmiş ama arama yapan arkadaşlara faydamız dokunur belki diye yazayım dedim.
tamamen veritabanındaki alan büyüklüğü ile ilgili bir durum. numeric(4,2) lik bir alana, 100 değeri verirseniz bu hatayı alırsınız. ya 10 gireceksiniz ya da alanı numeric(5,2) diye ayarlayacaksınız. ben bu şekilde aştım bu sorunu.

öyle de bir hata ki, ne demek istediğinden hiçbir şey anlaşılmıyor yani.

Cevapla