Farklı Transactionlar, 1 connection hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Farklı Transactionlar, 1 connection hakkında
Selam, bu aralar günde 100 tane soru sorar oldum artik kusuruma bakmayin arkadaslar:)
Sormak istedigim şu mesela ben bir transaction baslatiyorum
AdoConnection1.BeginTrans;
.
.
.
Diye kodlar gidiyor // Transaction hala acik kapatilmadi
Bu işlemi yaparken aynı anda farklı bir tablodada bir transaction baslatmam ve commit etmem gerekiyor.
.
.
.
AdoConnection1.CommitTrans;
Bunu farkli 2 connection kullanarak mi yapmaliyim? Eger öyleyse veritabanina 3 5 tane farkli Connection ile baglanmak yanlis bir yöntem mi yoksa tek bir connection üzerinden butun transactionlar iş görebilir mi.
Teşekkürler.
Sormak istedigim şu mesela ben bir transaction baslatiyorum
AdoConnection1.BeginTrans;
.
.
.
Diye kodlar gidiyor // Transaction hala acik kapatilmadi
Bu işlemi yaparken aynı anda farklı bir tablodada bir transaction baslatmam ve commit etmem gerekiyor.
.
.
.
AdoConnection1.CommitTrans;
Bunu farkli 2 connection kullanarak mi yapmaliyim? Eger öyleyse veritabanina 3 5 tane farkli Connection ile baglanmak yanlis bir yöntem mi yoksa tek bir connection üzerinden butun transactionlar iş görebilir mi.
Teşekkürler.
Hmm peki ama mesela benim mesela toplu kayit islemim olsun ve o sirada baska bir islem daha yapilsin örnekle anlatiyim..gkimirti yazdı:1 connection uzerinde tum transactionlar olabilir, 2. bir connection acmaya hic gerek yok, yapacagın islemin mantıgına gore ortak transaction kullanabilirsin...
AdoConnection1.BeginTrans; // Transactioni baslattim
AdoQuery1.Close;
AdoQuery1.Sql.text := 'SELECT * FROM TABLO';
AdoQuery1.Active := True;
// Şuan kullanıcı tablo üzerinde işlem yapiyor ve Kaydet butonuna basarsa Commit olacak basmazsa Rollback olacak yani zamani belli degil..
Kaydet Butonuna bastiginda commit olacak
AdoConnection1.CommitTrans;
Tutunki kaydet butonuna basmaddan önce farkli bir formu acip buna benzer toplu kayit islemi yapiyor (farkli bir bölüm atiyorum stok hareketleri) ve onda da Kaydet butonuna basinca commit olucak yani... sonuc olarak
Stok hareketinde kaydete basinca, belki Cari hareketlerinde vazgece basacakti ve stokla birlikte carinin de suana kadar kaydettigi hareketleri kaydedildi..
Yanildigim bir nokta var mi?
dbExpress componentlerinde (TSQLConnection) bu istediğini yapabiliyorsun. Aynı Connection'da istediğin kadar transaction açıp istediğini Commit veya RollBack edebiliyorsun.
O yüzden eğer AdoConnection kullanacaksan belirttiğin gibi farklı AdoConnection'larla transaction yapabilirsin.
İyi çalışmalar.
O yüzden eğer AdoConnection kullanacaksan belirttiğin gibi farklı AdoConnection'larla transaction yapabilirsin.
İyi çalışmalar.
Konunuzla alakalı olabilir diye ve daha önce konuşulduğu için arama yapmıştım.
viewtopic.php?t=5737&highlight=transact ... lan%FDm%FD
bir inceleyin isterseniz. Kolay gelsin
viewtopic.php?t=5737&highlight=transact ... lan%FDm%FD
bir inceleyin isterseniz. Kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Hmm ilgilendiginiz icin cok tesekkür ederim ancak aklimda bir soru isareti var yani yanlis anladigimdan süphe ettigim icin soruyorum suan bu soruyu.
Programda bir cok farkli modül var ki en az 30 - 40 tane farkli connection yapip baglanmam gerekicek. Yani dogru mu anlamisim?
Yani atiyorum Cari hareketleri icin farkli bir Adoconnection Stok hareketleri icin farkli bir adoconnection yani 30 40 tane connection olacak?
Programda bir cok farkli modül var ki en az 30 - 40 tane farkli connection yapip baglanmam gerekicek. Yani dogru mu anlamisim?
Yani atiyorum Cari hareketleri icin farkli bir Adoconnection Stok hareketleri icin farkli bir adoconnection yani 30 40 tane connection olacak?
Merhaba,
Ustalar genelde hali hazırda kullanılan dataset ve transları açık tutmayı öneriyorlar. Yani form açıldığında hangi işlem yapılıyorsa o trans ve datasetler açık olmalı gerisi kapalı. Bu şekilde de karışıklık olmaması gerekiyor.
kolay gelsin
Ustalar genelde hali hazırda kullanılan dataset ve transları açık tutmayı öneriyorlar. Yani form açıldığında hangi işlem yapılıyorsa o trans ve datasetler açık olmalı gerisi kapalı. Bu şekilde de karışıklık olmaması gerekiyor.
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Evet zaten öyle yani sadece kullanılan tablolara ait datasetler acik oluyor. Ancak kisi ayni anda 2 tane açarsa karışıklık oluyor anlatabildim mi yani stok işlemi yaparken onu minimize etti ve o sirada cariyi de bi açıyım dedi ordan da bi işlem yapti. kaydete basip geri dondugunde stoktaki hareketler icin belki de vazgec demek isteyecek. Böylelikle ya carideki hareketler de rollback olacak, ya da ikisi de commit olacak. O yuzden farkli connectionlar tamam orasini anladim da... Sorun şu her bölüm için ayrı connection kurarsam halim harap olmaz mı?
Merhaba,
Yanlış bilgilendirmek ve seni yanıltmak istemem benim uygulamam local uygulama ve en fazla iki bilgisayar ile çalıştırdım. Bazı tablolarımda iki ayrı trans açık oluyor artı birde sorgu trans çalıştırma işlemide yapabiliyor yani iki üç veya dört trans açık olabiliyor. performans sorunu yok karışma yok fakat dediğim gibi hem local bağlantı hem vt de veri az. senin soruna ustalar daha iyi cevap vereceklerdir.
kolay gelsin
Yanlış bilgilendirmek ve seni yanıltmak istemem benim uygulamam local uygulama ve en fazla iki bilgisayar ile çalıştırdım. Bazı tablolarımda iki ayrı trans açık oluyor artı birde sorgu trans çalıştırma işlemide yapabiliyor yani iki üç veya dört trans açık olabiliyor. performans sorunu yok karışma yok fakat dediğim gibi hem local bağlantı hem vt de veri az. senin soruna ustalar daha iyi cevap vereceklerdir.
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Hmm peki bisey diyecem.. Hepsi ayni connectiondan bagli yanigkimirti yazdı:Modul (ekran) basına 1 transaction,
program icin 1 connection kullanabilirsin,
program icinde herbir ekran icin connection acmaya gerek yok
AdoConnection1 nesnesi.. O zaman transaction baslatmak icin AdoConnection1.BeginTrans; komutu yerine.. transactioni nasil baslatmam gerekiyor anliyamadim? Cünkü hepsi main formundaki adoconnection1 ile bagli yani butun querylerim..
Sanirim sorumu pek acik soramadim 
AdoQuery ile calisiyorum ve sadece o AdoQuery'e has transaction baslatmak istiyorum..
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('BEGIN TRANSACTION');
AdoQuery1.SQL.Add('SELECT * FROM TABLO WITH (NOLOCK)');
AdoQuery1.Active := True;
Diye bir transaction baslattigimi dusunun ve AdoQuery1 e bagli CxGrid uzerinden topluca kayit girildigini vs. dusunun...
AdoQuery1.Close;
AdoQuery1.SQL.text := 'COMMIT TRANSACTION';
AdoQuery1.ExecSQL;
Diyince AdoQuery1.Close; komutu yuzunden sanirim acik transaction kapatilacak? Tek yolu AdoQuery1 'in bagli oldugu AdoConnection nesnesinden transactioni baslatmak degilmi?
Cözemiyorum bir türlü

AdoQuery ile calisiyorum ve sadece o AdoQuery'e has transaction baslatmak istiyorum..
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('BEGIN TRANSACTION');
AdoQuery1.SQL.Add('SELECT * FROM TABLO WITH (NOLOCK)');
AdoQuery1.Active := True;
Diye bir transaction baslattigimi dusunun ve AdoQuery1 e bagli CxGrid uzerinden topluca kayit girildigini vs. dusunun...
AdoQuery1.Close;
AdoQuery1.SQL.text := 'COMMIT TRANSACTION';
AdoQuery1.ExecSQL;
Diyince AdoQuery1.Close; komutu yuzunden sanirim acik transaction kapatilacak? Tek yolu AdoQuery1 'in bagli oldugu AdoConnection nesnesinden transactioni baslatmak degilmi?
Cözemiyorum bir türlü

Tamamidr arkadaslar cozdum sanirim sonunda..
AdoQuery1.Close; yapilmicak hic ve baslarken
AdoQuery1.SQL.text := 'BEGIN TRANSACION';
AdoQuery1.ExecSQL;
sadece SQL cümleleri degi$tiririlip her defasinda Active := True veya ExecSQL; vs. denilecek..
en sonunda daduruma göre
AdoQuery1.SQL.text := 'COMMIT TRANSACTION' veya ROLLBACK TRANSACTION denilip tekrar execute edilecek. Bu kadar:)
Yardimlariniz ve ilgilenidginiz için teşekkür ederim herkese kolay gelsin.
AdoQuery1.Close; yapilmicak hic ve baslarken
AdoQuery1.SQL.text := 'BEGIN TRANSACION';
AdoQuery1.ExecSQL;
sadece SQL cümleleri degi$tiririlip her defasinda Active := True veya ExecSQL; vs. denilecek..
en sonunda daduruma göre
AdoQuery1.SQL.text := 'COMMIT TRANSACTION' veya ROLLBACK TRANSACTION denilip tekrar execute edilecek. Bu kadar:)
Yardimlariniz ve ilgilenidginiz için teşekkür ederim herkese kolay gelsin.