Advantage ve RowsAffected
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Advantage ve RowsAffected
selamlar,
asagidaki gibi bir kodum var
dosyatext:=LoadFile('deneme.sql');
with AdsConnection do
begin
BeginTransaction;
try
AdsQuery1.RequestLive:=True;
AdsQuery1.SQL.Clear;
AdsQuery1.SQL.Text:=dosyatext;
AdsQuery1.ExecSQL;
Commit;
except
Rollback;
end;
end;
if ( AdsQuery1.RowsAffected <> -1 ) then
begin
Memo1.Text:=Format(' %d kayıt güncelleme işleminden etkilendi.', [AdsQuery1.RowsAffected]);
end;
sorunum sudur,
burda AdsQuery1.RowsAffected daima -1 donuyor,
kayitlar veritabanina kaydedilmesine ragmen misal 10,20 gibi bir rakam vermiyor, halbuki etkilenmis kayit sayisini dondurmesi gerekiyor
advantage veritabanında bu sorun ile karşılaşan oldumu acaba?
yardımlariniz icin şimdiden teşekkürler
asagidaki gibi bir kodum var
dosyatext:=LoadFile('deneme.sql');
with AdsConnection do
begin
BeginTransaction;
try
AdsQuery1.RequestLive:=True;
AdsQuery1.SQL.Clear;
AdsQuery1.SQL.Text:=dosyatext;
AdsQuery1.ExecSQL;
Commit;
except
Rollback;
end;
end;
if ( AdsQuery1.RowsAffected <> -1 ) then
begin
Memo1.Text:=Format(' %d kayıt güncelleme işleminden etkilendi.', [AdsQuery1.RowsAffected]);
end;
sorunum sudur,
burda AdsQuery1.RowsAffected daima -1 donuyor,
kayitlar veritabanina kaydedilmesine ragmen misal 10,20 gibi bir rakam vermiyor, halbuki etkilenmis kayit sayisini dondurmesi gerekiyor
advantage veritabanında bu sorun ile karşılaşan oldumu acaba?
yardımlariniz icin şimdiden teşekkürler
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
Merhaba
Başarılar,
Adsquery nin AdsTableOption özelliğini de " Respect Filters When Counting " yapmalısın o zaman dönen kayıt sayısını bulabilirsin.Rowsaffected, sadece Update ve Delete işlemleri için kullanılır. Select için recordcount kullanılır. Eger Result donup donmedigini kontrol etmek istiyorsan query i open ettikten sonra eof ve bof kontrolu yap.
Başarılar,
selam
dedigini de denedim olmadi maalesef, burda yapmak istedigim su,
sql sctripti calistirmak ve neticede kac adet kayitta degisiklik oldugunu gostermek, insert update delete ve bilimum diger komutlarin hepsinin toplaminda kac tane degismis oldugunu gostermek.
sanirim 6 tane eklendi, 5 tane guncellendi, 12 tane de silindi gibi birsey elde edemiyoruz degilmi?
toplam olarak etkilenen kayit sayisini gosterebiliyoruz
dedigini de denedim olmadi maalesef, burda yapmak istedigim su,
sql sctripti calistirmak ve neticede kac adet kayitta degisiklik oldugunu gostermek, insert update delete ve bilimum diger komutlarin hepsinin toplaminda kac tane degismis oldugunu gostermek.
sanirim 6 tane eklendi, 5 tane guncellendi, 12 tane de silindi gibi birsey elde edemiyoruz degilmi?
toplam olarak etkilenen kayit sayisini gosterebiliyoruz
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
dosyatext icinde standart insert, delete ve update sql cumleleri var, benim tablolalrıma uygun sekilde,
sql cumlesi 1;
sql cumlesi 2;
sql cumlesi 3;
sql cumlesi 4;
sql cumlesi 5;
sql cumlesi 6;
.....
sql cumlesi 100;
gibi
hepsi de dogru ve calisiyorlar.
integer tanimlama ve tetikleme isinden de kastettigini anlayamadim maalesef, biraz acarsan sevinirim konuyu
sql cumlesi 1;
sql cumlesi 2;
sql cumlesi 3;
sql cumlesi 4;
sql cumlesi 5;
sql cumlesi 6;
.....
sql cumlesi 100;
gibi
hepsi de dogru ve calisiyorlar.
integer tanimlama ve tetikleme isinden de kastettigini anlayamadim maalesef, biraz acarsan sevinirim konuyu
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
Merhaba
Tam uğraşamadım, ama işlemi şu şekilde denedim ....
Memo1.Clear;
if silinen>0 then Memo1.Lines.Add('Silinen Kayıt Sayısı '+inttostr(Silinen));
if eklenen>0 then Memo1.Lines.Add('Eklenen Kayıt Sayısı '+inttostr(Eklenen));
if degisen>0 then Memo1.Lines.Add('Değişen Kayıt Sayısı '+inttostr(Degisen));
ShowMessage(Memo1.Text);
şeklinde ama burada her bir silmeye bir değer atar.
Sorun durumunda msndende görüşelim.
Saygılar,
Tam uğraşamadım, ama işlemi şu şekilde denedim ....
Kod: Tümünü seç
memo1.lines.loadfromfile('C:\Deneme.Sql');
var
i:integer;
guncellenen, silinen, eklenen : Integer;
begin
Guncellenen:=0; Silinen:=0; Eklenen:=0;
AdsConnection1.Connect;
For i:=0 to Memo1.Lines.Count-1 Do
begin
try
AdsQuery1.RequestLive:=True;
AdsQuery1.SQL.Clear;
AdsQuery1.SQL.Text:=Memo1.Lines.Strings[i];
AdsQuery1.ExecSQL;
if ansicomparetext('into',memo1.lines.strings[i])<0 then eklenen:=eklenen+1;
if ansicomparetext('update',memo1.lines.strings[i])<0 then guncellenen:=guncellenen+1;
if ansicomparetext('delete',memo1.lines.strings[i])<0 then silinen:=silinen+1;
except
end;
end;AdsConnection1.DisConnect;
end;
if silinen>0 then Memo1.Lines.Add('Silinen Kayıt Sayısı '+inttostr(Silinen));
if eklenen>0 then Memo1.Lines.Add('Eklenen Kayıt Sayısı '+inttostr(Eklenen));
if degisen>0 then Memo1.Lines.Add('Değişen Kayıt Sayısı '+inttostr(Degisen));
ShowMessage(Memo1.Text);
şeklinde ama burada her bir silmeye bir değer atar.

Sorun durumunda msndende görüşelim.

Saygılar,
evet kod bu sekilde ise yarar ve tam dogru olmaz bu bildigin gibi cunku delete veya update ile birden cok kayit etkilenmis olabilir.
ama kac delete kac insert oldugunu belirtmek icin kod cok dogru,
sagolasin.
yine de nedense advantage sanirim yerel veritabaninda transaction destegini tam saglamiyor.
dosyaki sql ler saglikli calisiyor ama kac kayit etkileniyor maalesef bildiremiyorum su anda, sadece calisip calismadigini belirtebiliyorum. biraz eksik yaptik yani isi
ama kac delete kac insert oldugunu belirtmek icin kod cok dogru,
sagolasin.
yine de nedense advantage sanirim yerel veritabaninda transaction destegini tam saglamiyor.
dosyaki sql ler saglikli calisiyor ama kac kayit etkileniyor maalesef bildiremiyorum su anda, sadece calisip calismadigini belirtebiliyorum. biraz eksik yaptik yani isi
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
Merhaba
Sayın Tansu Bey' in bir alıntısı gözüme ilişti... Paylaşmak istedim...
Diğer forumda da aynısı nı belirttim....
Kolay Gelsin...
Sayın Tansu Bey' in bir alıntısı gözüme ilişti... Paylaşmak istedim...
Kod: Tümünü seç
With AdsQuery1 do
begin
Close;
SQL:=Memo1.Lines; [b]//Sonuç döndürmeyen SQL cümlesi[/b] varsayılmaktadır...
ExecSQL;
end;
ShowMessage(Inttostr(RowsAffected)+' satır bu işlemden etkilendi...');
Kolay Gelsin...
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
evet maalesef dusundugum gibi oldu, sonucu -1 olarak dondurmektedir.
yani gercek olarak dondurmuyor.
alıntının tam nereden alindigini bildirebilirmisiniz, cunku ben kale yazılımın da bazı konularda yeterli bilgiye sahip olmadigini dusunmekteyim bu konuda, ve de advantage veritabanını türkiye piyasasina biz yaptik seklinde sunmalari yanlis, yaptilarsa hani nerde bu olayin cozumu, ama extended sysyemsa baglilar sonucta
yani gercek olarak dondurmuyor.
alıntının tam nereden alindigini bildirebilirmisiniz, cunku ben kale yazılımın da bazı konularda yeterli bilgiye sahip olmadigini dusunmekteyim bu konuda, ve de advantage veritabanını türkiye piyasasina biz yaptik seklinde sunmalari yanlis, yaptilarsa hani nerde bu olayin cozumu, ama extended sysyemsa baglilar sonucta
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul