PDA

View Full Version : مشکل در یک کوئری



bad_boy_2007
جمعه 19 تیر 1388, 00:22 صبح
سلام دوستان

یه چند وقتی هست که از یک سری کوئری و ویو استفاده میکنم و تا الان هیچ مشکلی نداشتم ، تا اینکه اومدم و یک اسکریپت از دیتابیس گرفتم و یک دیتابیس جدید ایجاد کردم .
و حالا با این مشکل برخوردم که 2 تا از ویو هام کار نمیکنن
یکی از ویو هام کوئریش اینه :




SELECT dbo.ReceptionCheck.ID, dbo.ReceptionCheck.BankName, dbo.ReceptionCheck.Price, dbo.ReceptionCheck.Status, dbo.CheckState.Name AS STName,
dbo.Civil2Persian(dbo.Reception.Date) AS DateSanad, dbo.Reception.Date AS DateSanadM, dbo.Civil2Persian(dbo.ReceptionCheck.Date)
AS DateCheck, dbo.ReceptionCheck.Date AS DateCheckM, dbo.Civil2Persian(dbo.CheckMBargasht.Date) AS DateBargashtORVosol,
dbo.CheckMBargasht.Date AS DateBargashtORVosolM, RTRIM(ISNULL(dbo.Civil2Persian(dbo.SandoghCheck.Da te), ''))
+ RTRIM(ISNULL(dbo.Civil2Persian(dbo.BankCheck.Date) , '')) AS DateToPlace, dbo.VCustomers.fullname AS CustomerFullname,
RTRIM(ISNULL(dbo.Sandogh.Name, '')) + RTRIM(ISNULL(dbo.Bank_hesab.name, '')) + RTRIM(ISNULL(VCustomers_1.fullname, '')) AS Place,
dbo.Reception.Description, dbo.ReceptionCheck.Number, dbo.ReceptionCheck.IDSanad, dbo.PardakhtCheckM.IDSanad AS PardakhtID,
dbo.ReceptionCheck.Personal, dbo.ReceptionCheck.HesabNum
FROM dbo.VCustomers RIGHT OUTER JOIN
dbo.Reception ON dbo.VCustomers.ID = dbo.Reception.IDCustomer RIGHT OUTER JOIN
dbo.ReceptionCheck ON dbo.Reception.ID = dbo.ReceptionCheck.IDSanad LEFT OUTER JOIN
dbo.SandoghCheck ON dbo.SandoghCheck.IDCheck = dbo.ReceptionCheck.ID LEFT OUTER JOIN
dbo.Sandogh ON dbo.Sandogh.ID = dbo.SandoghCheck.IDSandogh LEFT OUTER JOIN
dbo.BankCheck ON dbo.BankCheck.IDCheck = dbo.ReceptionCheck.ID LEFT OUTER JOIN
dbo.Bank_hesab ON dbo.BankCheck.IDBank = dbo.Bank_hesab.id LEFT OUTER JOIN
dbo.CheckState ON dbo.CheckState.ID = dbo.ReceptionCheck.Status LEFT OUTER JOIN
dbo.PardakhtCheckM ON dbo.ReceptionCheck.ID = dbo.PardakhtCheckM.IDCheck LEFT OUTER JOIN
dbo.Pardakht ON dbo.PardakhtCheckM.IDSanad = dbo.Pardakht.ID LEFT OUTER JOIN
dbo.CheckMBargasht ON dbo.CheckMBargasht.IDCheck = dbo.ReceptionCheck.ID LEFT OUTER JOIN
dbo.VCustomers AS VCustomers_1 ON dbo.Pardakht.IDCustomer = VCustomers_1.ID



وقتی که اسکریپت ایجاد دیتابیس رو اجرا میکنم بدون خطا ویو رو ایجاد میکنه ولی ویو باز نمیشه و خطا میده ، و بعد از اون هم که سعی میکنم کد بالا رو اجرا کنم خطای زیر رو میده :



Msg 451, Level 16, State 1, Line 1
Cannot resolve collation conflict for column 14 in SELECT statement.


و اونطوری که معلومه مشکل از VCustomers.FullName هست ، چون با حذفش مشکل رفع میشه !!!
این هم کدهای VCustomers :

SELECT dbo.FixString(dbo.CustomersTitle.Name + ' ' + dbo.CUSTOMERS.NAME + ' ' + dbo.CUSTOMERS.FAMILY) AS fullname,
dbo.FixString(dbo.CUSTOMERS.NAME) AS Name, dbo.FixString(dbo.CUSTOMERS.FAMILY) AS Family, dbo.CUSTOMERS.ID, dbo.CUSTOMERS.STATUS,
dbo.CUSTOMERS.ACCOUNT_FIRST, dbo.CUSTOMERS.Account, dbo.FixString(dbo.CUSTOMERS.DESCRIPTION) AS Description,
dbo.FixString(dbo.CUSTOMERS.ADD1) AS ADD1, dbo.FixString(dbo.CUSTOMERS.ADD2) AS ADD2, dbo.CUSTOMERS.MOB1, dbo.CUSTOMERS.MOB2,
dbo.CUSTOMERS.TEL1, dbo.CUSTOMERS.TEL2, dbo.CUSTOMERS.FAX, dbo.CUSTOMERS.ZIP, dbo.FixString(dbo.Coustomers_group.name)
AS group_name, dbo.CUSTOMERS.ID_GROUP, dbo.FixString(dbo.CustomersTitle.Name) AS TitleName, dbo.CUSTOMERS.Date,
dbo.CUSTOMERS.Title
FROM dbo.CUSTOMERS INNER JOIN
dbo.Coustomers_group ON dbo.CUSTOMERS.ID_GROUP = dbo.Coustomers_group.id INNER JOIN
dbo.CustomersTitle ON dbo.CUSTOMERS.Title = dbo.CustomersTitle.ID

حالا سوال اینه که اول از همه مشکل کجاست ؟
ثانیا چرا تا الان پیش نیومده بود ؟؟

bad_boy_2007
جمعه 19 تیر 1388, 10:45 صبح
سلام دوستان
مشکل من رفع شد
ولی در عجبم این چه مشکلی بود !!؟
اومدم و تو VCustomer اون جایی که برای محاسبه FullName از تابع FixString استفاده کرده بودم ، این تابع رو حذف کردم یعنی این کد :



SELECT dbo.FixString(dbo.CustomersTitle.Name + ' ' + dbo.CUSTOMERS.NAME + ' ' + dbo.CUSTOMERS.FAMILY) AS fullname,
dbo.FixString(dbo.CUSTOMERS.NAME) AS Name, dbo.FixString(dbo.CUSTOMERS.FAMILY) AS Family, dbo.CUSTOMERS.ID, dbo.CUSTOMERS.STATUS,
dbo.CUSTOMERS.ACCOUNT_FIRST, dbo.CUSTOMERS.Account, dbo.FixString(dbo.CUSTOMERS.DESCRIPTION) AS Description,
dbo.FixString(dbo.CUSTOMERS.ADD1) AS ADD1, dbo.FixString(dbo.CUSTOMERS.ADD2) AS ADD2, dbo.CUSTOMERS.MOB1, dbo.CUSTOMERS.MOB2,
dbo.CUSTOMERS.TEL1, dbo.CUSTOMERS.TEL2, dbo.CUSTOMERS.FAX, dbo.CUSTOMERS.ZIP, dbo.FixString(dbo.Coustomers_group.name)
AS group_name, dbo.CUSTOMERS.ID_GROUP, dbo.FixString(dbo.CustomersTitle.Name) AS TitleName, dbo.CUSTOMERS.Date,
dbo.CUSTOMERS.Title
FROM dbo.CUSTOMERS INNER JOIN
dbo.Coustomers_group ON dbo.CUSTOMERS.ID_GROUP = dbo.Coustomers_group.id INNER JOIN
dbo.CustomersTitle ON dbo.CUSTOMERS.Title = dbo.CustomersTitle.ID


شد این :



SELECT dbo.CustomersTitle.Name + ' ' + dbo.CUSTOMERS.NAME + ' ' + dbo.CUSTOMERS.FAMILY AS fullname, dbo.FixString(dbo.CUSTOMERS.NAME)
AS Name, dbo.FixString(dbo.CUSTOMERS.FAMILY) AS Family, dbo.CUSTOMERS.ID, dbo.CUSTOMERS.STATUS, dbo.CUSTOMERS.ACCOUNT_FIRST,
dbo.CUSTOMERS.Account, dbo.FixString(dbo.CUSTOMERS.DESCRIPTION) AS Description, dbo.FixString(dbo.CUSTOMERS.ADD1) AS ADD1,
dbo.FixString(dbo.CUSTOMERS.ADD2) AS ADD2, dbo.CUSTOMERS.MOB1, dbo.CUSTOMERS.MOB2, dbo.CUSTOMERS.TEL1, dbo.CUSTOMERS.TEL2,
dbo.CUSTOMERS.FAX, dbo.CUSTOMERS.ZIP, dbo.FixString(dbo.Coustomers_group.name) AS group_name, dbo.CUSTOMERS.ID_GROUP,
dbo.FixString(dbo.CustomersTitle.Name) AS TitleName, dbo.CUSTOMERS.Date, dbo.CUSTOMERS.Title
FROM dbo.CUSTOMERS INNER JOIN
dbo.Coustomers_group ON dbo.CUSTOMERS.ID_GROUP = dbo.Coustomers_group.id INNER JOIN
dbo.CustomersTitle ON dbo.CUSTOMERS.Title = dbo.CustomersTitle.ID


این هم تابع FixString :


ALTERFUNCTION [dbo].[FixString]
(
-- Add the parameters for the function here
@In Varchar(max)
)
RETURNSvarchar(max)
AS
BEGIN
RETURNreplace(replace(@in,'ک','ك'),'ی','ي')
END


حالا سوال اینه که :
- اولا مشکل کار من کجاست ؟
-ثانیا چرا تا الان کار میکرد ولی الان کار نمیکنه ؟!
-ثالثا چرا کدهای قبلیم تو NewQuery کار میکنه ولی در View که میخوام اجراشون کنم مشکل میگیره ؟ (یعنی دقیقا کدی رو که تو NewQuery نوشتم رو کپی و پیست میکنم) ، به این نکات هم دقت کردم که در انتقال دستورم شامل Go , ... نباشه

در ضمن باز هم توجهتون رو به این نکته جلب میکنم ! که این کدها قبلا کار میکردن ولی الان که از اون دیتابیس (که قبلا کار میکرد) اسکریپت گرفتم (برای ایجاد همان دیتابیس ولی خالی) الان کدهام به مشکل خورده

bad_boy_2007
شنبه 20 تیر 1388, 17:51 عصر
یعنی واقعا کسی نمیدونه مشکل از چیه ؟؟ :متعجب: