Advantage ve RowsAffected

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Advantage ve RowsAffected

Mesaj gönderen VooDoo »

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
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

-1 durumu hata anlamına gelmesi gerekiyor fakat burda hem sıradan tüm sql komutlarını çalıştırıyor hemde -1 diyor.
10,20 filan gibi rakam dondurmuyor

advantage local olarak kullanıldığında transaction desteği yok gibi görünüyor
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

eger baska bir sorun yoksa (ki yok gibi gorunuyor) buyuk ihtimalle bileşenin bir hatasından kaynaklanıyor olabilir. yeni sürümü varsa terfi edilebilir veya konuyu bilen birinin yardımı beklenebilir.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

evet baska bir sorun yok bencede, bilesenin de zaten son surumunu kullaniyorum, tek sql cümlesinde sorun yok fakat arda arda ; ile ayrılmışlarda olay bu şekilde.

advantage kullanan herhangi bir arkadas da bu kodu calistirmayi deneyebilirmi acaba?

iyi gunler
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

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.
Adsquery nin AdsTableOption özelliğini de " Respect Filters When Counting " yapmalısın o zaman dönen kayıt sayısını bulabilirsin.

Başarılar,
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

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
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

dosyatext dediğin örnek komutuda yazabilirmisin ? ayrıca integer tanımladın bir komut ile de olayların tetiklemesinden öğrenebilirsin .

Saygılar,
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

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
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

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; 
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. :oops:

Sorun durumunda msndende görüşelim. :wink:

Saygılar,
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

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
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

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...');
Diğer forumda da aynısı nı belirttim....

Kolay Gelsin...
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

eyvallah deneyecegim, siz denediniz mi acaba? sanki yine olmayacakmis gibi geliyorda bana, diger kodtan pek farki yok gibi
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

VooDoo yazdı:eyvallah deneyecegim, siz denediniz mi acaba? sanki yine olmayacakmis gibi geliyorda bana, diger kodtan pek farki yok gibi
Denemedim fakat Tansu bey' in kaleminden alınmış bir alıntıdır... :wink:
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

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
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba

Konu Tansu bey in kitabında Birden fazla veri tabanı ile çalışmak bölümünün ExecSQL metodunun kullanılması kesitinde anlatılmaktadır. Sayfa 24-8 ....

Kolay gelsin...
Cevapla