Sorun çok ilginç bir durum arkadaşlar..
MS SQL veritabanında tüm bilgiler genel düz mantık olarak dbo şemasında tutulur.
Ben tüm tableları dbo şemasında değilde..Her yazacağım bölümün kendi şemasında durmasında istiyorum
örnek vermek gerekirse BORSA veritabanın içine
BORSA.DEMIRBAS
BORSA.EVRAKKAYIT
BORSA.UYELIK
BORSA.TESCIL
BORSA.MUHASEBE
......
Tabi bu nedenden ötürü aynen oracle olduğu gibi MS SQL de şema oluşturdum.
Buraya kadar soru yok.
Birde tabloların bazılarında iki çeşit outoinc alan oluşyturdum
Şu şekilde
SIRANO ALANI ms sqlde identy alan(autoinc)
TESCILNO ALANI ise triger ile değerini yıla göre artırdığım autoinc alan..Her yıl sırano alanları birden başlıyor bu nedenden ötürü..
( alanının değerini ise sequence ile YIL alanın değerine göre bir bir artıyorum. Triger yolu ile.)
Normalde table edit postlarda sorun yok.
Sorun insert ve post olayında...
Fakat iş kayıt eklemeye gelince Firedac ve ADO da aynı hata söz konusu
Sadece SIRANO,TESCILNO,YIL alanın değeri veritabanına ekleniyor diğer hiç bir alan eklenmiyor..
Aşağıda resimleri mevcut bunun sebebi ne olabilir.
Projeyi yazmaya başladım burda takıldım.
İlgilenen herkese çok teşekkür ederim.
Durumla ilgili resimler aşağıda..
http://s28.postimg.org/qhgl83hm5/ERROR_1.jpg
http://s16.postimg.org/7bf5cm3zp/ERROR_2.jpg
http://s16.postimg.org/5yxgaq6k5/ERROR_3.jpg
MS SQL DE SCHEMADA kayıt sorunu(Firedac ve ADO...ile denedim sorun var)Çözüldü
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- softdestek
- Üye
- Mesajlar: 155
- Kayıt: 17 Eyl 2010 03:53
MS SQL DE SCHEMADA kayıt sorunu(Firedac ve ADO...ile denedim sorun var)Çözüldü
En son softdestek tarafından 02 May 2015 12:13 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: MS SQL DE SCHEMADA kayıt sorunu(Firedac ve ADO...ile denedim sorun var)
Önce SQL Manager ile çıplak bir sorgu ile kayıt ekleyip o yakada sorun olmadığını netleştirmek lazım.
Testiniz SQL sorgularını basite indirgeyip Delphi tarafından öyle denemek ile takip etsin. Yani sadece bir alana veri düşecek şekilde insert into ile.
Tecrübenize binaen try except koyup exception durumunu pass geçmeyip gözlemlediğinizi düşünmek istiyorum.
Keza örnek olsun diye yazıyorum, yanlış anlaşılmasın bazen basit hatalar bakış açımızı gölgeleyebiliyor, autoinc alana veri yazmaya çalışıldı da exception oluştu, bunu bilmeden görmezden gelmiş olunmuş benzeri kayıt insert olmuş sonra Update olamamış gibi de duruyor.
ek bunu derken iki ardışık işlem varsa diye yazdım, yoksa kimse eleştirmesin, insert işleminde exceptiın olursa kayıt gerçekleşmez illa ki. sql kod örnekleri olmadığından farazi konuşuyorum.
Testiniz SQL sorgularını basite indirgeyip Delphi tarafından öyle denemek ile takip etsin. Yani sadece bir alana veri düşecek şekilde insert into ile.
Tecrübenize binaen try except koyup exception durumunu pass geçmeyip gözlemlediğinizi düşünmek istiyorum.
Keza örnek olsun diye yazıyorum, yanlış anlaşılmasın bazen basit hatalar bakış açımızı gölgeleyebiliyor, autoinc alana veri yazmaya çalışıldı da exception oluştu, bunu bilmeden görmezden gelmiş olunmuş benzeri kayıt insert olmuş sonra Update olamamış gibi de duruyor.
ek bunu derken iki ardışık işlem varsa diye yazdım, yoksa kimse eleştirmesin, insert işleminde exceptiın olursa kayıt gerçekleşmez illa ki. sql kod örnekleri olmadığından farazi konuşuyorum.
- softdestek
- Üye
- Mesajlar: 155
- Kayıt: 17 Eyl 2010 03:53
Re: MS SQL DE SCHEMADA kayıt sorunu(Firedac ve ADO...ile denedim sorun var)
SQL sorguyu en sade şekle indirdim zaten;
Kullandığım trigeride vereyim
Kod: Tümünü seç
Select
TESCIL.TESCILMASTER.SIRANO,
TESCIL.TESCILMASTER.TESCILNO,
TESCIL.TESCILMASTER.TARIH,
TESCIL.TESCILMASTER.SATISKODU,
TESCIL.TESCILMASTER.SATICINO,
TESCIL.TESCILMASTER.SATICIADRESNO,
TESCIL.TESCILMASTER.ALICINO,
TESCIL.TESCILMASTER.ALICIADRESNO,
TESCIL.TESCILMASTER.MALKODU,
TESCIL.TESCILMASTER.FIYAT,
TESCIL.TESCILMASTER.MIKTAR,
TESCIL.TESCILMASTER.YIL
From
TESCIL.TESCILMASTER
ORDER BY
TESCIL.TESCILMASTER.YIL, TESCIL.TESCILMASTER.SIRANO
Kullandığım trigeride vereyim
Kod: Tümünü seç
USE [BORSA]
GO
/****** Object: Trigger [TESCIL].[TESCILMASTER_TESCILNO_Insert] Script Date: 02.05.2015 11:39:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [TESCIL].[TESCILMASTER_TESCILNO_Insert] ON [TESCIL].[TESCILMASTER]
INSTEAD OF INSERT
--FOR INSERT
AS
BEGIN
DECLARE @TESCILNO Int
declare @YIL INT
-- SET @idCol = Select max(idCol)+1 from dbo.Tablom (Sequence kullanmaz isen.)
SELECT @YIL=YIL FROM INSERTED
IF @YIL=2015 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2015
END
IF @YIL=2014 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2014
END
IF @YIL=2013 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2013
END
IF @YIL=2012 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2012
END
IF @YIL=2011 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2011
END
IF @YIL=2010 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2010
END
IF @YIL=2009 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2009
END
IF @YIL=2008 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2008
END
IF @YIL=2007 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2007
END
IF @YIL=2006 BEGIN
SET @TESCILNO = NEXT VALUE FOR GEN2006
END
--SET @idCol = NEXT VALUE FOR SQN_TESCIL_TESCILNO
--Insert Into dbo.vedat (TESCILNO,YIL,TARIH,ISIM) Select @TESCILNO,inserted.YIL,inserted.TARIH,inserted.ISIM From inserted
Insert Into TESCIL.TESCILMASTER(TESCILMASTER.TESCILNO,TESCILMASTER.YIL) Select @TESCILNO,inserted.YIL From inserted
END
- softdestek
- Üye
- Mesajlar: 155
- Kayıt: 17 Eyl 2010 03:53
Re: MS SQL DE SCHEMADA kayıt sorunu(Firedac ve ADO...ile denedim sorun var)
Trigerden kaynaklanır şu trigeri gözden geçireyim..
Edit postde sorun yok ama sadece ilk kayıt eklemede sorun var...
Triger çalışıyor ama diğer alanları dikkate almıyor...
yukardaki örneğe tüm alanları ekleyecem birde...inşallah olur.
Edit postde sorun yok ama sadece ilk kayıt eklemede sorun var...
Triger çalışıyor ama diğer alanları dikkate almıyor...
yukardaki örneğe tüm alanları ekleyecem birde...inşallah olur.
- softdestek
- Üye
- Mesajlar: 155
- Kayıt: 17 Eyl 2010 03:53
Re: MS SQL DE SCHEMADA kayıt sorunu(Firedac ve ADO...ile denedim sorun var)
Sorunu çözdüm..Firedac ile yazmaya devam ediyorum projeyi teşekkür ederim ..
Sorun trigerdenmiş...
MS SQL yeni öğrendiğim için trigerde hata yapmışım.
Aşağıdaki kodu
Aşağıdaki gibi düzenledim.
Her alanı tek tek yazdım. Ben yeni başladığım için ms sql "from inserted kullanımı yeni öğrenmiştim.
Standart insert into values... biliyorum ama bu From inserted olayı yeni öğrenmiştim.
Sorun trigerdenmiş...
MS SQL yeni öğrendiğim için trigerde hata yapmışım.
Aşağıdaki kodu
Kod: Tümünü seç
Insert Into TESCIL.TESCILMASTER(TESCILMASTER.TESCILNO,TESCILMASTER.YIL) Select @TESCILNO,inserted.YIL From inserted
Her alanı tek tek yazdım. Ben yeni başladığım için ms sql "from inserted kullanımı yeni öğrenmiştim.
Standart insert into values... biliyorum ama bu From inserted olayı yeni öğrenmiştim.
Kod: Tümünü seç
INSERT INTO TESCIL.TESCILMASTER(
TESCIL.TESCILMASTER.TESCILNO,
TESCIL.TESCILMASTER.TARIH,
TESCIL.TESCILMASTER.SATISKODU,
TESCIL.TESCILMASTER.SATICINO,
TESCIL.TESCILMASTER.SATICIADRESNO,
TESCIL.TESCILMASTER.ALICINO,
TESCIL.TESCILMASTER.ALICIADRESNO,
TESCIL.TESCILMASTER.FIYAT,
TESCIL.TESCILMASTER.MALKODU,
TESCIL.TESCILMASTER.MIKTAR,
TESCIL.TESCILMASTER.TUTAR,
TESCIL.TESCILMASTER.TESCILUCRETI,
TESCIL.TESCILMASTER.STOPAJ,
TESCIL.TESCILMASTER.BEYANTURU,
TESCIL.TESCILMASTER.CEZA,
TESCIL.TESCILMASTER.SSDF,
TESCIL.TESCILMASTER.MERAFONU,
TESCIL.TESCILMASTER.T_GELIR,
TESCIL.TESCILMASTER.IPTAL,
TESCIL.TESCILMASTER.USERDEGISADI,
TESCIL.TESCILMASTER.USERDEGISTIME,
TESCIL.TESCILMASTER.USERGIRISADI,
TESCIL.TESCILMASTER.USERGIRISTIME,
TESCIL.TESCILMASTER.YIL,
TESCIL.TESCILMASTER.SUBEKODU
)
SELECT
@TESCILNO,
inserted.TARIH,
inserted.SATISKODU,
inserted.SATICINO,
inserted.SATICIADRESNO,
inserted.ALICINO,
inserted.ALICIADRESNO,
inserted.FIYAT,
inserted.MALKODU,
inserted.MIKTAR,
inserted.TUTAR,
inserted.TESCILUCRETI,
inserted.STOPAJ,
inserted.BEYANTURU,
inserted.CEZA,
inserted.SSDF,
inserted.MERAFONU,
inserted.T_GELIR,
inserted.IPTAL,
inserted.USERDEGISADI,
inserted.USERDEGISTIME,
inserted.USERGIRISADI,
inserted.USERGIRISTIME,
inserted.YIL,
inserted.SUBEKODU
From inserted