PDA

View Full Version : سوال: خطای Undefined function in expression



younes221
پنج شنبه 30 بهمن 1393, 11:35 صبح
سلام دوستان امیدوارم حالتون خوب باشه . من یک UDF ساختم به شکل زیر در VBA و اونو در Module1 ذخیره کردم :

Public Function Increament(ByVal originalnumber As Integer) As Integer Dim result As Integer
result = originalnumber + 10
Increament = result
End Function

سپس یک Query می سازم به نام Query1 و کد زیر رو داخلش قرار می دم :

SELECT Increament(Id)FROM Table1;




ولی خطای Undefined Function Increament in expression رو می ده .

ساختار جدول هم به شکل زیر هست :
128623

128622

پایگاه داده رو هم ضمیمه کردم . چرا خطای بالا رو میده ؟؟؟

میشه روند نوشتن User-Defined Function رو بگین؟

مرسی

New Account
پنج شنبه 30 بهمن 1393, 18:19 عصر
سلام

تابع مشکلی نداره و به درستی داره کار میکنه

متن خطا که اشاره به مبهم بودن تابع داره و در حال حاضر این خطا بی معنیه ( در فایل ساده ای که فرستادید )

ممکنه مشکل :

در بخش references باشه , Priority رفرنساتون رو عوض کنید

و یا ماحصل تداخل با مابقی ماژولهاتون باشه ( که البته در این فایل نشانی از اونها نیست )

به هر حال در تست فعلی مشکلی وجود نداره ضمن اینکه تا حد امکان ساده سازی توابع رو هم رعایت کنید :




Function Increament(originalnumber As Integer) As Integer
Increament = originalnumber + 10
End Function


موفق باشید

younes221
پنج شنبه 30 بهمن 1393, 19:33 عصر
دوست عزیز خیلی ممنون از لطف شما . در سیستم شما بدون مشکل اجرا میشه ؟؟

منظور از Priority چی هست ؟ ببخشید من در access مبتدی هستم . اگر میشه بیشتر راهنمایی بکنید . زیاد هم در نت جستجو کردم ولی چیزی دستگیریم نشد .
مرسی

New Account
جمعه 01 اسفند 1393, 08:24 صبح
سلام

بله , فایل شما بر روی سیستم بنده به درستی کار میکنه

دقت کنید اسم تابع رو در داخل محل استفاده ( حالا Query , Report و ... ) درست درج کرده باشید

خدمتتون عرض کردم تابع از دید اکسس در داخل اون پروسه ای که استفاده کردید مبهم تشخیص داده شده و یا به عبارتی دیگه داره میگه که تابعی با این نام وجود نداره

در فایلی که شما ارسال کردید عملکردش درسته حالا میمونه اون نمونه اصلی خودتون و یا نحوه استفادتون از تابع


در خصوص Priority , در محیط کد نویسی وارد بخش Tools و سپس References بشید

در کنار Listbox رفرنسهای انتخاب شده دو دکمه جهت دار بالا و پایین وجود دارند که با انتخاب هر رفرنس و بالا و پایین زدن دکمه ها میتونید موقعیت رفرنس رو در داخل لیست تغییر بدید و اولویت اجرایی اونها رو تعیین کنید ( در مورد نحوه و علت عملکردش قبلا نوشته بودم سرچ کنید باید بتونید پیداش کنید )

ولیکن اینها فقط جهت تست و خطاست بنده در داخل رفرنسهای فایل شما چیز غیر عادی رو ندیدم مگر اینکه در داخل فایل اصلیتون وجود داشته باشه

با تمام این اوصاف فایل ارسالی شما مشکلی بر روی سیستم بنده نداره و تابع داره کارش رو به درستی انجام میده ( به هر ID مقدار 10 عدد اضافه میکنه و بر روی خروجی نشون میده )


موفق باشید

younes221
سه شنبه 05 اسفند 1393, 21:32 عصر
خیلی ممنون درست شد . مشکل از Trust Location بود . فولدر رو به Trust Location انتقال دادم . مشکل حل شد .

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


SELECT number FROM tableNumbers WHERE isBirthDay(number)

توجه کنید در برنامه سی شارپ و با استفاده از OledbCommand انجام دادم .

ولی خطای Undefined function میده . مشکل از چی هست ؟