Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
store procedure problemi
#1
tablomda S1-S2-S3----S80
adinda alanlarim var 

str:='execute procedure PDF_YC_ARTTIR('''+sbid+''','''+kolon+''' )'; 

S1 S2 seklindeki alan isimleri KIM degiskeni ile geliyor store procedure icine.

kodda S1=S1+1;   yaptigimda kod hatasiz calisiyor ama benim  KIM=KIM+1 kullanmak lazim cunku 
s13 gonderirsem s13 alanindaki deger 1 artmali.

bu gibi durumda ne yapmaliyiz. 

saygilarimla


Ek Dosyalar Resimler
   
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#2
Function Tform1.SayiArtir(str_KIM:String):Integer ;
var
dogru_cevap_sayisi :Integer;
Begin
Sp.ParamByName('KIM').AsString := str_KIM; // KIM alanındaki string ifade stored procedure aktarılyor..
Sp.ExecProc ;
dogru_cevap_sayisi := Sp.ParamByName('S1').AsInteger ; //KIM alanındaki karşılğında bulunan S1 sayısal alanının degerı bulunuyor..
Result:= dogru_cevap_sayisi +1;
End;


bu arada yazdıgınız procedure ve işleyişini biraz daha açarsanız..
Cevapla
#3
hocam diyelimki 5 adet 80 soruluk deneme sinavi var
her deneme sinavini 2 kere cozdugunu dusunelim.

S10 =10cu soru
cozdugu her sorudan sonra dogru yanlis kontrolu yapiyorum eger yanlis ise S10 sorusundan bahsedecek olursak
her yanlistan sonra S10 degeri 1 artacak 2 kere yanlis yaparsa S10 2 olacak 5 kere o soruyu yanlis cozerse S10 degeri 5 olacak
ve bu islemi store procedure ile yapmak istiyorum.
tablomda S1 den S80 ne kadar 80 adat sutunum var.
store procedure 2 adet deger gondermem lazim hangi kitap soru kac.
bu 2 bilgiyi formdan store procedure gonderip ordada islem yaptirmam lazim
islem kisminda hata aliyorum
saygilar
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#4
Merhaba;

Tablo dizaynını yatay yerine dikey yapmanız daha uygun olur. İsterseniz prosedurü 80 soru için tek seferde, isterseniz belli bir soruya indexlenmiş alan sayesinde execute statement yöntemine göre çok daha hızlı erişmiş ve hata sayısnı hesaplatmış olursunuz.
Cevapla
#5
arkadaslar yapmaya calistigim is resimdeki gibi
bunu 80 kere yapmak yerine daha kolay bir yontem yok mu
saygilar


Ek Dosyalar Resimler
   
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#6
Var
i:integer;
Begin
i:=1;
Qsoru.DisableControls;
Qsoru.first;

While Not Qsoru.EoF do
begin
Qsoru.edit;
QSoru.FieldByName('S' + IntToStr(i)).AsString := 'Merhaba ' + IntToStr(i)+ ' inci datayı kaydettiniz...!!';
inc(i);
Qsoru.next;

if i= 10 then break;
end;

Qsoru.EnableControls;
end;

Yukarıda ki Kodlar Kayıtlar arasında sıralı işlemler yapıyor.. Anladıgım kadarıyla istediğin cevap bu değil..

Aşağıdakı kod da ise tek bir kayıt içindeki sıralı ALAN lar arasında kayıt değişikliğine gidiyor..

var
i:integer;
Begin
i:=1;
Qsoru.PARAMBYNAME('GRUP_KODU').ASString:='01' ;
Qsoru.PARAMBYNAME('STOK_KODU').ASString:='1002' ;
Qsoru.open;
Qsoru.DisableControls;


While i<= 81 do
begin
Qsoru.edit;
QSoru.FieldByName('FIYAT' + IntToStr(i)).AsFloat := 99999.999;
inc(i);
Qsoru.POST;

if i= 81 then break;
end;

Qsoru.EnableControls;
end;
Cevapla
#7
forum kismanida sorun yok hocam 
bana sql editor de 'S' + IntToStr(i)  yapisini nasil kullanacagiz o lazim.

 'S' + IntToStr(i)='S' + IntToStr(i)+1;
yukardaki kod sql editorde nasil calistiririz.
saygilarimla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#8
SQL cast diye arayın.
Postgres tarafında
cast(S as integer) veya cast(S as text)
S::integer veya S::text
Şeklinde kullanılıyor
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#9
selam, aşağıdaki procedure işinizi görür.

create procedure HESAPLA (
    KOD integer,
   KIM integer) 
as
declare variable d1 varchar(200);
declare variable d2 varchar(200);
begin

d1 = 'S' || :KIM;
d2 = d1 || '+1';

execute statement
'UPDATE TEST SET ' || :d1 || ' = ' || :d2 || ' WHERE KOD='||:KOD;

end
WWW
Cevapla
#10
(07-02-2024, Saat: 09:27)esistem Adlı Kullanıcıdan Alıntı: selam, aşağıdaki procedure işinizi görür.

create procedure HESAPLA (
    KOD integer,
   KIM integer) 
as
declare variable d1 varchar(200);
declare variable d2 varchar(200);
begin

d1 = 'S' || :KIM;
d2 = d1 || '+1';

execute statement
'UPDATE TEST SET ' || :d1 || ' = ' || :d2 || ' WHERE KOD='||:KOD;

end

Merhabalar,

Hocam gayet güzel aktarmış. Bunu da içerisine alırsanız işleminiz çözümlenir sanırım.

AS
 DECLARE variable basla integer; 
 DECLARE variable bitir integer;
 begin    

   bitir = 10;
   while (basla <= bitir) do
   BEGIN
     // islemleriniz ...
     basla = basla + 1;
   END
 END

END
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Kullanıcı ID Numarasına Göre Procedure Çalıştırma MugenPower 4 1.568 23-05-2022, Saat: 11:13
Son Yorum: OzanGuclu
  Firebird 3.0 bağlantı problemi? Hsavci 3 1.304 15-04-2021, Saat: 09:47
Son Yorum: emozgun
  Procedure bağlantı metodu ve if kullanımı 41linea41 2 2.124 04-05-2020, Saat: 09:52
Son Yorum: esistem
Thumbs Up iki tablodan iç içe sorgu problemi (sorun çözüldü) baloglurecep 16 8.842 16-04-2020, Saat: 02:04
Son Yorum: pro_imaj
  Çözüldü-store procedurde değişken kullanma sorunu sadikacar60 2 2.323 06-05-2019, Saat: 07:54
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi