PDA

View Full Version : سوال در رابطه با یک SP



amin_913
یک شنبه 10 آذر 1387, 13:08 عصر
سلام
من یه Sp دارم با این محتوی:

CREATE PROCEDURE SPFind
@TableName varchar(25),
@FieldName varchar(25),
@Value varchar(25)
AS
DECLARE @Text varchar(350)

SET @TEXT='SELECT Count(*) as value FROM '+@TableName+' WHERE '+
@FieldName+' = '+''''+@Value+''''
Declare @SqlString NVarchar(250)
set @SqlString=N''+@Text+''
exec Sp_ExecuteSql @SqlString
GO

و میخوام تو برنامه یه Edit Or MaskEdit بزارم و هروقت کاربر کد رو وارد کرد،تو رخداد OnExit اون ادیت بیاد و کد رو چک کنه و اگر کد تکراری بود، پیغام بده و گرنه اجازه بده تا کاربر کارشو بکنه

ضمن این ک این نکته رو متذکر بشم که من مبتدی ام و اگر دوستان لطق کننو نحوه تنظیم AdoQuery و سایر موارد لازم رو هم بگن ممنون میشم.

این Sp قبلن استفاده شده و من هم میخواستم خودم پیاده سازیش کنم نتونتستم

کد پیاده سازی قبلی بدین صورت است:


object SPFind: TADOStoredProc
Connection = Con2DB
CursorType = ctStatic
ProcedureName = 'SPFind'
Parameters = <
item
Name = '@RETURN_VALUE'
DataType = ftInteger
Direction = pdReturnValue
Precision = 10
Value = 0
end
item
Name = '@TableName'
Attributes = [paNullable]
DataType = ftString
Size = 25
Value = 'h'
end
item
Name = '@FieldName'
Attributes = [paNullable]
DataType = ftString
Size = 25
Value = 'r'
end
item
Name = '@Value'
Attributes = [paNullable]
DataType = ftString
Size = 25
Value = 'r'
end>


لذا میخوام تا جایی که ممکنه پیاده سازی بدین صورت باشه

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

ممنون میشم که حتی المقدور مرحله به مرحله راهنمایی کنیدم

بدرود

m-khorsandi
یک شنبه 10 آذر 1387, 15:37 عصر
يعنی الان شما كلاً تو پياده‌سازی و استفاده مشكل داريد؟

amin_913
دوشنبه 11 آذر 1387, 17:27 عصر
سلام

منون از جوابتون

آره تقریبن چون هیچ کجا من آموزش تصویری ندیدم و آموزشهایی هم که بودن همه جسته گریخته به این موضوع پرداختند و همه به یک پارامتر بسنده کرده اند.

من کد SP, AdoStoredProcedure رو براتون گذاشتم چون این قبلن یه جا کار شده و حالا میخوام یکی پیدا بشه و دستور NaskEdit1.Onexit رو برام بنویسه من خودم از همین متوجه مراحل کار خواهم شد

ممنون

merced
دوشنبه 11 آذر 1387, 17:45 عصر
اين sp کليه و سه پارامتر داره TableName , FieldName , Value يعني اگه بهش نام جدول , نام فليد و مقدار رو بدي برات تعداد رکوردي که در شرايط (تعداد رکوردي که مقدار FieldName اون برابر Value باشه رو برميگردونه )

حالا :


procedure TForm1.Edit1Exit(Sender: TObject);
begin
ADOStoredProc1.Close ;
ADOStoredProc1.ProcedureName := 'SPFind' ;
ADOStoredProc1.Parameters[1].Value := 'Table1' ;
ADOStoredProc1.Parameters[2].Value := 'Field1' ;
ADOStoredProc1.Parameters[3].Value := 'Val' ;
ADOStoredProc1.Open ;
if ADOStoredProc1.Fields[0].AsInteger > 0 then
ShowMessage('the value Exist');
end;

amin_913
دوشنبه 11 آذر 1387, 19:18 عصر
ممنون
مقدار Val در مثال شما همون مقداریه که تو ادیت وارد میشه و موقع خروج چک میشه.
اما یه سوال دیگه
چون من این استوردذ پروسیجر رو پیاده سازی نکزدم و از یه مثال برداشتم میخواستم ببینم که مقادیری که قرمز کردم رو چرا هنگام ساختنش ، تعریف کرده؟
و اگر حروف r,h مقادیر استانداردی هستن، چه معنی میدن؟


Parameters = <
item
Name = '@RETURN_VALUE'
DataType = ftInteger
Direction = pdReturnValue
Precision = 10
Value = 0
end
item
Name = '@TableName'
Attributes = [paNullable]
DataType = ftString
Size = 25
Value = 'h'
end
item
Name = '@FieldName'
Attributes = [paNullable]
DataType = ftString
Size = 25
Value = 'r'
end
item
Name = '@Value'
Attributes = [paNullable]
DataType = ftString
Size = 25
Value = 'r'
end>

merced
سه شنبه 12 آذر 1387, 17:57 عصر
نه مقادير استانداردي نيست.
اگر اين مقادير وارد نشه موقع باز کردن sp (قبل از اينکه مقدار بده) يه خطا رخ ميده که مقدار خاليه
شايد خواسته sp رو بدون مقدار دادن (زمان طراحي يا اجرا) باز کنه.