PDA

View Full Version : ایجاد spبرای جمع دو ستون از جدول



darksunrise
یک شنبه 20 اردیبهشت 1388, 10:03 صبح
سلام
من یه جدول دارم که توی اون جدول دو ستون از نوع کاراکتر وجود داره و این دو مقدار باید با هم جمع بشن و ستون سوم رو که اتفاقا کلید اصلی هم هست تشکیل بدن. و اینکه اگه این کار رو بکنم چون کلید اصلی هست مشکل پیدا نمیکنه؟

اگه کسی کد sp اون رو میدونه بی زحمت توی تاپیک بذاره

2) این کار از طریق formiula در enterpriseامکان پذیر نیست؟
دستتون درد نکنه:تشویق:

ASKaffash
یک شنبه 20 اردیبهشت 1388, 13:33 عصر
سلام
با فرمول قابل انجام است و میتواند Unique نیز باشد


Create Table T3(
A1 Varchar(2),
A2 Varchar(3),
A3 AS (Convert(Int,A1)*1000+Convert(Int,A2))
)

darksunrise
یک شنبه 20 اردیبهشت 1388, 14:20 عصر
توی فورمولا نوشتم[ستون1]+[ستون2]= [ستون3]
اما errorداد پس چی باید بنویسم اگه بخوام از اون استفاده کنم نمیخوام حالت view داشته باشه و فقط موقع نمایش به هم وصل بشن میخوام واقعا مقدار موجود داخل اون دو تا فیلد concat بشن و توی فیلد سوم قرار بگیرن
در ضمن در مورد کدتون یه کم توضیح میدید ؟ این که sp نیست
متشکر و ممنون از راهنمایی تون

goldkavir
یک شنبه 20 اردیبهشت 1388, 14:34 عصر
ASKaffash موقع طراحی جدول این کارو میکنه که در هر صورتی این اتفاق می افته یعنی فیلد سوم چه از طریق برنامه و چه از طریق sql با فرمول مورد نظرش پر میشه (فیلد read only میشه)ولی Sp هر وقت فراخوانی بشه این کارو میکنه که نمی تونید توی SP برای ستون جدول، فرمول بنویسید.
وقتی از sp استفاده می کنید باید فیلد سوم رو از طریق update مقدار دهی کنید(می تونید Trigger هم بنویسید)
موفق باشید

darksunrise
یک شنبه 20 اردیبهشت 1388, 17:10 عصر
پس اینجوری که شما دوستان فرمودید از طریق formula توی enterprise هم میشه این کار رو کرد خب تو فیلد مخصوص فرمول چی بنویسم؟ چه دستور یا کدی؟ من اون موردی که بالا گفتم رو نوشتم قبول نکرد و error داد .درستش چیه؟
در ضمن من نمیخوام دو ستون با هم جمع بشن و مجموع اونها توی یه فیلد نمایش داده بشه من میخوام واقعا دو تا فیلد به هم concat بشن و مقدارشون در فیلد سوم برای فعالیت های بعدی قرار داده بشه یعنی محتوی دو فیلد , فیلد سوم رو بسازه

samiraamiri
دوشنبه 21 اردیبهشت 1388, 16:26 عصر
کد بالا هم درست هست توی formula اگه بخوای بنویسی باید یه function بنویسی که این مقدار رو برگردونه و بعد دستور فراخوانی function رو با پارامترهای فیلد1 و فیلد 2 رو بهش پاس کنید و در formula قرار بدید.

darksunrise
دوشنبه 21 اردیبهشت 1388, 22:00 عصر
کد spاش رو کسی نمیدونه؟ فکر میکردم خیلی آسونه من بلد نیستم:خجالت:

scream666_ss
سه شنبه 22 اردیبهشت 1388, 14:11 عصر
سلام

این سوالت ساده تر از اونی هست که فکر میکنی‌

این کدو بنویس در یک new query بعد هم execute کن اونموقه یه table میسازه که فیلد سوم تشکیل شده از فیلد اول و دوم

Create Table T4(
A1 nVarchar(50),
A2 nVarchar(50),
A3 AS ([A1]+[A2])
)

scream666_ss
سه شنبه 22 اردیبهشت 1388, 14:17 عصر
سلام

این سوالت ساده تر از اونی هست که فکر میکنی‌

این کدو بنویس در یک new query بعد هم execute کن اونموقه یه table میسازه که فیلد سوم تشکیل شده از فیلد اول و دوم

Create Table T4(
A1 nVarchar(50),
A2 nVarchar(50),
A3 AS ([A1]+[A2])
)

این هم sp که میخواستی

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[StoreTest]
AS
BEGIN

SET NOCOUNT ON;

Create Table T5(
A1 nVarchar(50),
A2 nVarchar(50),
A3 AS ([A1]+[A2]) )
END

samiraamiri
چهارشنبه 23 اردیبهشت 1388, 10:02 صبح
فرض می گیریم شما در جدولتون 3 تا فیلد f1 , f2 , f3 دارید و می خواهید در فیلد f3 جمع f1,f2 قرار بگیره . اگر بخواید از formula استفاده کنید function زیر رو ایجاد کنید


CREATE FUNCTION Convertplus
(
@f1 int,@f2 int
)
RETURNS int
AS
BEGIN

RETURN CONVERT (int, @f1) + CONVERT (int, @f2)

END


و بعد در قسمت formula ی فیلد کد زیر رو قرار بدید

([dbo].[Convertplus]([f1],[f2]))
حالا اگه شما بخواید دو ستون با هم concat بشه اگه دو تا ستونتون char باشه و شما از دستور convert استفاده نکنید دو ستون با هم concat می شه
موفق باشید

darksunrise
یک شنبه 27 اردیبهشت 1388, 11:31 صبح
فرض می گیریم شما در جدولتون 3 تا فیلد f1 , f2 , f3 دارید و می خواهید در فیلد f3 جمع f1,f2 قرار بگیره . اگر بخواید از formula استفاده کنید function زیر رو ایجاد کنید


CREATE FUNCTION Convertplus
(
@f1 int,@f2 int
)
RETURNS int
AS
BEGIN

RETURN CONVERT (int, @f1) + CONVERT (int, @f2)

END
و بعد در قسمت formula ی فیلد کد زیر رو قرار بدید

([dbo].[Convertplus]([f1],[f2]))حالا اگه شما بخواید دو ستون با هم concat بشه اگه دو تا ستونتون char باشه و شما از دستور convert استفاده نکنید دو ستون با هم concat می شه
موفق باشید

بسیار متشکر از راهنمایی تون
من 2 تا ستون رو باید از نوع char تعریف کنم حتما ستون سوم هم که مجموع دو رشته داخلش باید قرار بگیره هم میخوام char باشه اما وقتی فرمولا رو وارد میکنم خود به خود lenght برابر یک میشه .علت چیه؟
کد رو برای nvarchar این طور تغییر دادم


CREATE FUNCTION Convertplus
(
@f1 nvarchar , @f2 nvarchar
)
RETURNS nvarchar
AS
BEGIN

RETURN @f1+ @f2

END

darksunrise
یک شنبه 27 اردیبهشت 1388, 14:18 عصر
سلام

این سوالت ساده تر از اونی هست که فکر میکنی‌

این کدو بنویس در یک new query بعد هم execute کن اونموقه یه table میسازه که فیلد سوم تشکیل شده از فیلد اول و دوم

Create Table T4(
A1 nVarchar(50),
A2 nVarchar(50),
A3 AS ([A1]+[A2])
)


من از این روش شما استفاده کردم و مفید بود اما یه مشکل پیش می آد وقتی میخوام یه رابطه با یه جدول دیگه ایجاد کنم error میده و میگه چون فیلد محاسباتی هست ارتباط برقرار نمیشه
متن error این هست


'moshtarak' table saved successfully
'ersal' table
- Unable to create relationship 'FK_ersal_moshtarak'.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot create the foreign key 'FK_ersal_moshtarak' because the referenced column 'moshtarak.code_moshtarak' is a computed column.
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors.

darksunrise
دوشنبه 28 اردیبهشت 1388, 09:44 صبح
بچه ها اگه کسی میدونه این مشکل چه جوری حل میشه لطفا کمک کنه شدیدا بهش نیاز دارم
:خجالت:

ASKaffash
دوشنبه 28 اردیبهشت 1388, 12:35 عصر
سلام
شما فقط میتوانید آن را یونیک کنید و نمی توانید کلید باشد (البته به نظر من خیلی فرق نمی کند)