ورود

View Full Version : مشكل اين stored چيه ‌؟



majidmir
دوشنبه 03 خرداد 1389, 10:22 صبح
سلام
اين stored proc رو نوشتم

CREATE PROCEDURE Moshtari_UPDATE
@id as int,
@name as nchar(35),
@family as nchar(35),
@tel as nchar(13),
@address as nchar(120)
AS
/*ايا چنين ركوردي وجود دارد ؟ */
if (select count(*) from moshtari where @id=cod)>0
begin
/* جهت جلوگيري از ورود مقادير تكراري */
if (select count(*) from moshtari where (name=@name and family=@family and tel=@tel and address=@address))=0
begin
/*ويرايش كن اي دي با اين مشخصات */
update moshtari set name=@name , family=@family ,tel=@tel ,address=@address
where cod=@id
return 1
end
end
else
return 0
GO

حالا توي query كه تست ميكنم فقط حالت انگليسيش كار ميكنه ؟ يعني اولي و دومي كار نميكنه

Moshtari_UPDATE 23,مجيد,مهدوي,09352114,تهران پارس
Moshtari_UPDATE 23,majid,mahdavi,09352114,pars
:متفکر:

msanaei
دوشنبه 03 خرداد 1389, 10:38 صبح
فكر كنم مشكلتون بخاطر نوع فيلد و پارامترهاييه كه براي مقادير فارسي در نظر گرفتيد باشه، يعني به جاي NCHAR براي NAME , بقيه فيلدهاي مشابه، از NVARCHAR استفاده كنيد. در ضمن براي اينجور فيلدها كه NVARCHAR هستند توي SELECT ها بايد نكته زير رو مد نظر داشته باشيد
'علي' = SELECT * FROM MOSHTARI WHERE NAME


بايد بصورت
'علي'SELECT * FROM MOSHTARI WHERE NAME = N
نوشته شود

majidmir
دوشنبه 03 خرداد 1389, 11:56 صبح
سلام
اين جدول خريد مشتري رو چطوري بايد طراحي كنم ‌؟ و پروسيجرش رو چطوري بنويسم كه صورتحساب رو انجام بده ‌؟
نمودار ER
http://www.barnamenevis.org/forum/picture.php?albumid=653&pictureid=1462

درباره كاري كه بايد انجام بگيره :
مشتري چند تا كالا رو خريد ميكنه با كد هاي مختلف حالا مشكلم توي صدور فاكتور هستش چطوري بايد در هر بار خريدي كه مشتري انجام ميده يه شماره فاكتور جديد صادر كنم و ليست اجناسي رو كه خريد كرده رو توي فاكتور بيارم و در اخر صورتحساب اين فاكتور رو جمع بزنم ‌؟و هر بار يكي از ليست تعداد بر اساس تعدادي كه بهش دادم كم كنه !
·مشتري در بانك اطلاعاتي ثبت مي گردد
·هر كالا در بانك ثبت ميگردد
اين هم پروسيجر كه خودم نوشتم فقط يه درج معمولي رو انجام ميده ولي عمليات صدور فاكتور (جمع كردن هزينه خريد اين دوره مشتري و تخفيف رو انجام نميده)توش نيست ؟‌



CREATE PROCEDURE M_K_Kharid_INSERT



@codkala as int,



@codmoshtari as int ,



@noaekharid as nchar(10),



@takhfif as money,



@date1 as datetime



/*متغير هايي جهت انجام عمليات مشتق*/



AS



/* جهت جلوگيري از ورود مقادير تكراري */



if (select count(*) from kharidmoshtari where (@codkala=codkala and @codmoshtari=codmoshtari and @noaekharid=noaekharid and @takhfif=takhfif and @date1=date1))=0



begin



insert into kharidmoshtari (codkala,codmoshtari,noaekharid,takhfif,date1) values(@codkala,@codmoshtari,@noaekharid,@takhfif, @date1)



return 1



end



else



return 0



GO