Forum
Herkese Merhaba
Bir konuda düşüncelerinize ihtiyacım var.
Site: .aspx
Konu:
Sql üzerinde 2 tablo var biri firma ikincisi firma hizmetleri
Firma tablosuna islem strore procedurü üzerinden işlem yaptırtıyorum (insert - update - delete)
Aynı şekilde firma hizmet tablosuda islem procedure üzerinden işlem yaptırıyorum.
.aspx sayfaları class üzerinden veri gönderme ve alma işlemi yapıyor.
.aspx sayfası işlem.aspx olarak hem insert hem update olarak işlem yapıyor.
Firma tablosuna insert işlemi sırasında girilen kayıdın id sini alıyorum scope_Identity ile firma_islem procedure içinde firma hzmt tablosuna insert işlemi yapıyorum.
birinci yol
firma_islem store procedure;
if(@knt=0 and @islem=1) begin
insert into firma (f_isim,f_yetkili,f_durum,f_kyttrh,f_gncltrh,f_sirano,f_adres,f_tlfn1,f_vergidaire,f_vergino,f_adresftr) values (@isim,@yetkili,@drm,@kytrh,@gncltrh,@sirano,@adres,@tlfn1,@vergidaire,@vergino,@adresft);
set @islem=SCOPE_IDENTITY()
insert into frmhzmt (f_id,sms_hzmt,mail_hzmt,teknik_hzmt,site_hzmt) values (@islem,@sms,@mail,@teknik,@site);end;
Bu yolla ile girişlerde sıkıntı olmuyor. işlemi yapıyor.
ikinci yol:
firma_islem procedure işlem yaptıktan sonra bana Id değerini döndürsün ve aspx code behind tarafında firma_hzmt classına bu değeri vereyim ve insert işlemini firma_islem içinden çıkartıp frmhzmt_islem procedure içinde yapsın.
Bu yolla ile girişlerde sıkıntı olmuyor. işlemi yapıyor.
Fakat server tarafına çok gidip geliyor veri aldı sonra veri verdi.
---------------------------------------------------------------
firma firmag = new firma();
firmag.fid = f_id.text;
firmag.kytrh = f_kytrh.text;
firmag.gncltrh = f_gncltrh.text;
firmag.sirano = f_sirano.text;
firmag.durum = f_durum.value;
firmag.isim = f_isim.text;
firmag.yetkili = f_yetkili.text;
firmag.adres = f_adres.text;
firmag.tlfn1 = f_tlfn.text;
firmag.vergino = Convert.ToInt32(f_vergino.text);
firmag.vergidaire = f_vergidaire.text;
firmag.adresftr = f_adresftr.text;
if (Session["knt"].ToString() != "0")
{
if (firmag.fid == 0)
{
firma_hzmt fhzmtg = new firma_hzmt();
fhzmtg.fid = firmag.islem(1, firmag);
fhzmtg.smsh = c_smsh.vl;
fhzmtg.mailh = c_mailh.vl;
fhzmtg.siteh = c_siteh.vl;
fhzmtg.teknikh = c_teknikh.vl;
fhzmtg.islem(1, fhzmtg);
srno();
}
else
{
firmag.islem(2, firmag);
}
}
------------------------
Problem başlangıç :
Sonradan verileri ayrı ayrı yollamak ve bunu store procedure (server) üzerinde birleştirmek geldi aklıma
aspx tarafında 11 değer firma girişi için + firma hzmet için 5 değer var toplamda 16 değer gönderiyorum.(Gerçi çok uzun ve fazla değer göndermiyorum fakat bu konuyu bir projede kullanacağım)
Birinci aşama
firma_islem içinde firma hizmete ait değişkenleri kaldırıdım.
firma ile bilgileri insert ettim firma adı = firma_adi
insert işlemi sonrası firma_id scope Identity ile aldım firma_id = 1 ok
ikinci aşama
firma_islem içinde firma hizmete ait değişkenleri kaldırdığım değişkenleri firma_hzmt_işlem procedure içine yazdım.
firma_işlem de oluşan id değerini firma_hzmt procedurene gönderemedim firma_hzmt_islem procedure id haricinde iki değer daha alıyor.
firma_hzmt procedure için firma_id -- hizmet1 -- hizmet2 değerlerini birleştirip vermek istiyorum.
----------------------------------------------
ALTER proc [dbo].[sp_firma_hzmt_islem]
@idfrm int, (firma_islem den gelen id değeri olmasını istiyorum)
@sms tinyint,
@mail tinyint,
@teknik tinyint,
@site tinyint,
@islem tinyint
as
begin
if (@islem=1)begin
insert into frmhzmt (f_id,sms_hzmt,mail_hzmt,teknik_hzmt,site_hzmt) values (@idfrm,@sms,@mail,@teknik,@site);end;
dedikten sonra ortalık çin pazarına döndü.
Kısaca
if(@knt=0 and @islem=1) begin
insert into firma (f_isim,f_yetkili,f_durum,f_kyttrh,f_gncltrh,f_sirano,f_adres,f_tlfn1,f_vergidaire,f_vergino,f_adresftr) values (@isim,@yetkili,@drm,@kytrh,@gncltrh,@sirano,@adres,@tlfn1,@vergidaire,@vergino,@adresft);
set @islem=SCOPE_IDENTITY()
return @islem + frmhzt için gönderdiğim değerleri server tarafında birleştirip procedure çalıştırmak istiyorum.
Not: Aklım sağlığım yerinde hala ismimi hatırlıyorum :)))
hocam selam
okudum ama bızım akıl saglıgımız yerındemı onu sorgulamak lazım netıcede sunu anladım sen bır bırlesımı return etmek ıstıyorsun zannedersem
Declare returnedValue VARCHAR();
SET returnedValue = Concat(@islem,' ',frmhzt);
return returnedValue ;
seklınde bir değişkene set ederek ıkısını bırlestırıp donebılırsın . Eğer donmek ıstedıgın rakamları SUM almak ıstıyorsan once toplama ıslemı vs yaptırman gereklı ınsallah dogru anladım 🙂
saygılar
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com