Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Otomatik Artan Numarası Yakalama
#1
Arkadaşlar merhaba,

Firebird kullanarak yazdığım bir program var, bunun içindeki seçilen verileri Master/Detail olarak MSSQL veritabanına döngü kullanarak append ile ekliyorum.

MSSQL'de Master tabloya veri yazarken ID alanı otomatik arttığı için sorun yok. Detail tabloya veri yazarken Master tablonun ID numarasını SELECT IDENT_CURRENT('Master_Tablo') AS SeqNumber sorgusu ile +1 yaparak vereceği numarayı alıyorum. Ama bu yöntem benim için doğru olmuyor, eğer o sırada orjinal program kendi veritabanına veri girmiyorsa sorun yok ama benden önce post ederse Master tablo başka ID numarası alıyor ve Detail kayıtlarım kayıyor.

Append (Master Tablo) yaptığımda mutlaka hafızasına o ID numarasını alıyordur ama MSSQL'de o numarayı nasıl yakalayacağımı bir türlü bulamadım.

Delphi 10 Seattle ve UniDAC kullanıyorum. Umarım derdimi anlatabilmişimdir. Smile

Yardımlarınız için teşekkürler, iyi çalışmalar.
Cevapla
#2
Umarım Doğru Anlamışımdır.
Auto Increment bir sahaya veri Insert ederken, Son yaptığın insert kaydın id'sine en doğru şekilde erişmek istiyorsun anladığım kadarıyla.

MyDAC Kullanıyorum , InsertId tamda bana bunu veriyor.

lbYLal.png
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#3
(09-09-2017, Saat: 19:26)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlUmarım Doğru Anlamışımdır.
Auto Increment bir sahaya veri Insert ederken, Son yaptığın insert kaydın id'sine en doğru şekilde erişmek istiyorsun anladığım kadarıyla.

MyDAC Kullanıyorum , InsertId tamda bana bunu veriyor.

lbYLal.png


@yhackup merhaba,
İlgin için teşekkür ederim, sorunumu doğru anlamışsın ama bahsi geçen özellik MySQL'e ait bir özellik olabilir. Ben MSSQL kullanıyorum ve o özellik bende çıkmadı Smile

Teşekkürler, iyi çalışmalar.
Cevapla
#4
şurada Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
aşağıdaki gibi bir olay paylaşılmış işinize yarar sanırım.

'myConn is the ADO connection, RS a recordset and ID an integer
Set RS=myConn.Execute("INSERT INTO M2_VOTELIST(PRODUCER_ID,TITLE,TIMEU) OUTPUT INSERTED.ID VALUES ('Gator','Test',GETDATE())")
ID=RS(0)
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#5
"Select SCOPE_IDENTITY()" kullanarak son ekleneni yakalamanız lazım diye hatırlıyorum.
Yeni Nesil Yazılımcı
Linkedin: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Blog adresim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
(11-09-2017, Saat: 09:36)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olşurada Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
aşağıdaki gibi bir olay paylaşılmış işinize yarar sanırım.

'myConn is the ADO connection, RS a recordset and ID an integer
Set RS=myConn.Execute("INSERT INTO M2_VOTELIST(PRODUCER_ID,TITLE,TIMEU) OUTPUT INSERTED.ID VALUES ('Gator','Test',GETDATE())")
ID=RS(0)

Merhaba @esistem,
Normalde INSERT INTO kullanmadan (APPEND) yapıyorum işlemleri. Kesin olarak bir çözüme ulaşamazsam bu yola başvuracağım.


(11-09-2017, Saat: 10:15)barisatalay Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol"Select SCOPE_IDENTITY()" kullanarak son ekleneni yakalamanız lazım diye hatırlıyorum.

Merhaba @barisatalay,
"Select SCOPE_IDENTITY()" kullanmak istediğimde hep null değer döndü. Örneğin Management Studio ile tabloyu edit modda açıp aşağı ok tuşu ile insert yapmak istediğimde bile null değer döndürdü. Maalesef buradan da sonuç alamadım.
Cevapla
#7
(11-09-2017, Saat: 10:15)barisatalay Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol"Select SCOPE_IDENTITY()" kullanarak son ekleneni yakalamanız lazım diye hatırlıyorum.

Ama ilk İnsert ile bu sorgu arasına başka bir veri girişi olursa ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
@MosCom, Neden APPEND? Neden INSERT değil?

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#9
(11-09-2017, Saat: 11:34)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol@MosCom, Neden APPEND? Neden INSERT değil?

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

@uparlayan merhaba,

dbedit controlünde db bağlantılarını yaptıktan sonra post işlemi ile kayıt ediyorum. insert işleminde ise her alan için parametre göndermem lazım ve çok fazla alan var. Ama görünen o ki başka çaremiz kalmayacak.

Teşekkürler, iyi çalışmalar.
Cevapla
#10
Arkadaşlar merhaba,
Sorun yaşayan başka arkadaşlar olursa fikir olması açısından yazıyorum, sorunumu şu şekilde çözdüm.

Master kayıytta Append ile kaydı açar açmaz post ile kayıt yapıyor ve ID numarasını alıyorum sonra aktaracağım detail kayıtları döngü ile içeri alırken master_id alanını dolduruyorum. Bu durumda kayıtların kayma şandı kalmıyor. Kayıttan vageçerlerse aktif kaydı siliyorum.

Insert ile yapılan output işlemide aynı işi yapıyor zaten.

Kolay gelsin, iyi çalışmalar.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Sql Server Otomatik Kurulum narkotik 7 561 13-01-2018, Saat: 22:30
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi