PDA

View Full Version : مشکل در اجرای SP



yavari
شنبه 25 فروردین 1386, 10:55 صبح
سلام

من این ارور رو دریافت میکنم ، ممنون میشم راهنمائیم کنید ! :تشویق:
SP :

CREATE PROCEDURE sp_UniqueValueInCoding(@tbl_name nvarchar(50),@where varchar(500) )
AS
IF(LEN(@where)>0)
EXEC('SELECT * FROM ' + @tbl_name + ' WHERE '+ @where)
else
EXEC('SELECT * FROM '+ @tbl_name)
GO
این فراخوانی SP

RsGetRecord.Open "Execute sp_UniqueValueInCoding(tbl_Name, where)", QuerySQLCn, adOpenKeyset, adLockOptimistic, adCmdStoredProc]

اینم ارور :

syntax error or access violation .

reza_rad
شنبه 25 فروردین 1386, 11:05 صبح
شاید مشکل از where clause ای باشه که می فرستی به sp ؟

یکبار جای EXEC کردن کل SELECT رو بکش بیرون ببین مشکلی نداره؟
اینجوری مثلا:


CREATE PROCEDURE sp_UniqueValueInCoding(@tbl_name nvarchar(50),@where varchar(500) )
AS
IF(LEN(@where)>0)
select 'SELECT * FROM ' + @tbl_name + ' WHERE '+ @where
else
select 'SELECT * FROM '+ @tbl_name
GO

yavari
شنبه 25 فروردین 1386, 11:37 صبح
سلام

ممنون از توجه تون
اما SP کار میکنه در محیط QueryAnalyser !
روش شما syntax error میده !

ممنون

reza_rad
شنبه 25 فروردین 1386, 11:42 صبح
اما SP کار میکنه در محیط QueryAnalyser !

یعنی خروجی برمی گردونه؟! خب اگه اینطوره پس مشکل کجاست؟


روش شما syntax error میده !

من الان روی این سیستم sqlserver ندارم که تست کنم syntax درسته یا نه. منظورم اینه که اون کوئری ای رو که داری توی این قسمت:


EXEC('SELECT * FROM ' + @tbl_name + ' WHERE '+ @where)



اجرا می کنی، یکبار بدی توی خروجی و ببینی syntax اش درسته یا نه؟ مثلا با همون select که گفتم...

yavari
شنبه 25 فروردین 1386, 12:23 عصر
سلام
ببخشید من اشتباه کرده بودم ، این خروجی روش شما !

SELECT * FROM codingfather WHERE farsiname<>''


مشکل اینه دقیقا که رو این خط برنامه

RsGetRecord.Open "Execute sp_UniqueValueInCoding(tbl_Name, where)", QuerySQLCn, adOpenForwardOnly, adLockReadOnly, adCmdStoredProc


این ارور رو میده !

syntax error or access violation .

نمی دونم چجوری رفع میشه ! :افسرده:

ممنون از توجه تون

reza_rad
شنبه 25 فروردین 1386, 13:42 عصر
من اینو متوجه نشدم! اینجا:


RsGetRecord.Open "Execute sp_UniqueValueInCoding(tbl_Name, where)", QuerySQLCn

شما کجا پارامترها رو به sp پاس می کنید؟
چون من متغیری ندیدم اینجا؟

yavari
شنبه 25 فروردین 1386, 14:24 عصر
من اینو متوجه نشدم! اینجا:


RsGetRecord.Open "Execute sp_UniqueValueInCoding(tbl_Name, where)", QuerySQLCn

شما کجا پارامترها رو به sp پاس می کنید؟
چون من متغیری ندیدم اینجا؟

سلام

ممنون که وقت می ذارید !

دوست عزیز ! اینا مشکلی ندارن !
از طریق فانکشن داره مقدار می گیره !

Public Function ExecuteSP(ByRef RsGetRecord As ADODB.Recordset, ByRef tbl_Name As String, ByRef where As String)


ممنون بازم :تشویق:

reza_rad
شنبه 25 فروردین 1386, 14:39 عصر
خواهش می کنم:)


دوست عزیز ! اینا مشکلی ندارن !
از طریق فانکشن داره مقدار می گیره !


Public Function ExecuteSP(ByRef RsGetRecord As ADODB.Recordset, ByRef tbl_Name As

RsGetRecord.Open "Execute sp_UniqueValueInCoding(tbl_Name, where)", QuerySQLCn

پس با این حساب tbl_name و where متغیر های برنامه ات هستند.
خب اگه متغیرند باید اینجوری استفاده بشن:


RsGetRecord.Open "Execute sp_UniqueValueInCoding("+tbl_Name+","+ where+")", QuerySQLCn

yavari
دوشنبه 03 اردیبهشت 1386, 09:48 صبح
خواهش می کنم:)





پس با این حساب tbl_name و where متغیر های برنامه ات هستند.
خب اگه متغیرند باید اینجوری استفاده بشن:


RsGetRecord.Open "Execute sp_UniqueValueInCoding("+tbl_Name+","+ where+")", QuerySQLCn


سلام

شرمنده از تاخیری که پیش اومد !!!
اما همچنان این ارور پابرجاست !

syntax error or access violation .

پروسیجر من اینجوری فراخوانی میشه

Execute sp_UniqueValueInCoding(CodingFather,FarsiName<>'')
یعنی کجای کارم میلنگه ؟!؟!؟! ... :افسرده:

با تشکر

reza_rad
دوشنبه 03 اردیبهشت 1386, 10:06 صبح
شرمنده از تاخیری که پیش اومد !!!
اما همچنان این ارور پابرجاست !

جایی رو که گفتم درست کردید؟


پس با این حساب tbl_name و where متغیر های برنامه ات هستند.
خب اگه متغیرند باید اینجوری استفاده بشن:

کد:
RsGetRecord.Open "Execute sp_UniqueValueInCoding("+tbl_Name+","+ where+")", QuerySQLCn__________________

yavari
دوشنبه 03 اردیبهشت 1386, 10:55 صبح
سلام

بله ، این روشو هم امتحان کردم !
متاسفانه جواب نمیده !

ممنون از توجه تون

reza_rad
دوشنبه 03 اردیبهشت 1386, 10:59 صبح
کدتون ور trace کنید ببینید اون جمله exec ... که برمی گردونه syntax اش درست هست یا نه؟

yavari
دوشنبه 03 اردیبهشت 1386, 11:28 صبح
سلام

این چیزیه که trace نشون میده !


پروسیجر من اینجوری فراخوانی میشه

Execute sp_UniqueValueInCoding(CodingFather,FarsiName<>'')
یعنی کجای کارم میلنگه ؟!؟!؟! ... :افسرده:

ممنون

reza_rad
دوشنبه 03 اردیبهشت 1386, 11:59 صبح
فکر می کنم مشکل از اون دوتا کوتیشن انتهایی باشه.
احتمالا اگه اینو توی Query analyzer چک کنید باز ارور میده.

جمله مروبط به پارامتر where رو عوض کنید ببینید کار می کنه؟
مثلا همچین چیزی:


Execute sp_UniqueValueInCoding(CodingFather,FarsiName is not null)

yavari
دوشنبه 03 اردیبهشت 1386, 12:56 عصر
سلام

جالب اینجاست که کوئری آنالایزر اینو درست اجرا میکنه اما تو برنامه نه !
این تغییر رو هم دادم ارور همونی که بوده هست !!! :عصبانی++:

ممنون

reza_rad
چهارشنبه 05 اردیبهشت 1386, 10:31 صبح
جالب اینجاست که کوئری آنالایزر اینو درست اجرا میکنه اما تو برنامه نه !
این تغییر رو هم دادم ارور همونی که بوده هست !!!
با VB داری برنامه می نویسی؟
شاید مشکل از VB باشه چون کوتیشن رو بعنوان کامنت در نظر می گیره.

‍Peter Norton
پنج شنبه 06 اردیبهشت 1386, 20:56 عصر
برای امتحانم که شده پرانتزهاتو بردار اگه جواب نداد به ActiveConnection اونو بدون دستور Execute اجرا کن و به Rst وصل کن احتمالاً جواب میده.