PDA

View Full Version : سوال: فراخواني تابع درون دستور AdoQuery-Select



javad3d
دوشنبه 15 مهر 1387, 11:04 صبح
با سلام
آيا راهي براي اجراي دستور زير وجود دارد.

Selec *,(Select name from Subtable Where id=name)As Field1,Field2=+DelphiFunction() +from Tablename


Field2 از نوع رشته و خروجي تابع DelphiFunction نيز از نوع رشته مي باشد.


با تشكر

ghabil
سه شنبه 16 مهر 1387, 00:38 صبح
اگر منظورت اینه که مثلا خروجی این تابع یکبار حساب بشه و برای همه سطرها یک چیز باشه اینطوریه :


ADoQuery.Select := 'Selec *,(Select name from Subtable Where id=name)As Field1,Field2= ''' +DelphiFunction() + '''from Tablename'


اما اگر منظورت اینه که به ازای هر سطر یکبار اجرا بشه تابعت و مقدار متفاوت برگردونه ، نه نمیشه ، باید از Stored Procedure ها function های اسکیوال سرور استفاده کنی.
البته قرار که توب Black Fish این امکان پیدا سازی بشه ولی من خودم هنوز ندیدم.
SQLServer 2005 هم با زبانهای دات نتی این کار رو میکنه تا حدودی...

javad3d
سه شنبه 16 مهر 1387, 06:54 صبح
اگر منظورت اینه که مثلا خروجی این تابع یکبار حساب بشه و برای همه سطرها یک چیز باشه اینطوریه :


ADoQuery.Select := 'Selec *,(Select name from Subtable Where id=name)As Field1,Field2= ''' +DelphiFunction() + '''from Tablename'


اما اگر منظورت اینه که به ازای هر سطر یکبار اجرا بشه تابعت و مقدار متفاوت برگردونه ، نه نمیشه ، باید از Stored Procedure ها function های اسکیوال سرور استفاده کنی.
البته قرار که توب Black Fish این امکان پیدا سازی بشه ولی من خودم هنوز ندیدم.
SQLServer 2005 هم با زبانهای دات نتی این کار رو میکنه تا حدودی...

با سلام و تشكر ويژه
آيا راه حل دوم قابل حمل و انتقال به كامپيوتر هاي ديگر است(منظورم خروجي نهايي برنامه است) يا اينكه در همه SQL ها ي ديگر نيز بايد توابع رو تعريف كرد؟

ghabil
سه شنبه 16 مهر 1387, 16:29 عصر
اون تابع میشه جزوی از دیتابیست دیگه ، تو به هر حال هرجایی که برنامت رو ببری باید دیتابیس رو هم نصب کنی ، خب این تابع هم همراهش نصب میشه.

javad3d
چهارشنبه 17 مهر 1387, 08:11 صبح
با سلام
و تشكر از راهنمائي هايتان