View Full Version : CodeContextObject
hamid-nice
چهارشنبه 06 آذر 1392, 12:02 عصر
با سلام
اگه یکی لطف کنه و در مورد CodeContextObject و نحوه کار با آن توضیح بده خیلی ممنون میشم(هر چی کاملتر بهتر)؟
با تشکر
Abbas Amiri
چهارشنبه 06 آذر 1392, 18:35 عصر
با سلام
اگه یکی لطف کنه و در مورد CodeContextObject و نحوه کار با آن توضیح بده خیلی ممنون میشم(هر چی کاملتر بهتر)؟
با تشکر
این خصوصیت نام شیئی که در بردارنده کدهای جاری(چه VBA و چه ماکرو) است ، را برمی گرداند . اگر مثال Help اکسس را هم اجرا کنید می بینید که CodeContextObject فرم جاری میباشد.
البته اینکار رو Screen.ActiveControl هم انجام می دهد ولی فرقش اینست که فرم ویا گزارشی که فوکوس دارد را برمیگرداند ولی در CodeContextObject فوکوس مهم نیست .
hamid-nice
چهارشنبه 06 آذر 1392, 19:46 عصر
help اکسس را دیده ام نمی شه ازش نتیجه خوبی گرفت
چنانکه فهمیدم CodeContextObject باید برای object مورد نظر تعریف بشه ولی هرچه سعی کردم و آنرا مثلا برای کوئری ست کردم درست عمل نکرد
فرضا برای کوئری Query1 که فیلد A را دارد برای شرط خالی نبودنش کد زیر را نوشتم ولی عمل نمی کنه و علتش را نمی دانم
Dim objCurrent As Object
Set objCurrent = CodeContextObject
CodeContextObject=Query1
With CodeContextObject
If (IsNull(.[A])) Then
msgbox"ok"
Else
msgbox"NOT Ok"
End If
End With
می دونم که توش اشتباه داره و یه چیزایی زیاده و یه چیزایی کم، اگه ممکنه اصلاح و چیزایی که لازم نیست را هم حذف کنید و اگه توضیحی لازم داره ممنون میشم .
با تشکر
Abbas Amiri
چهارشنبه 06 آذر 1392, 19:59 عصر
help اکسس را دیده ام نمی شه ازش نتیجه خوبی گرفت
چنانکه فهمیدم CodeContextObject باید برای object مورد نظر تعریف بشه ولی هرچه سعی کردم و آنرا مثلا برای کوئری ست کردم درست عمل نکرد
فرضا برای کوئری Query1 که فیلد A را دارد برای شرط خالی نبودنش کد زیر را نوشتم ولی عمل نمی کنه و علتش را نمی دانم
Dim objCurrent As Object
Dim strMsgboxTitle As String
Set objCurrent = CodeContextObject
CodeContextObject=Query1
With CodeContextObject
If (IsNull(.[A])) Then
msgbox"ok"
Else
msgbox"NOT Ok"
End If
End With
می دونم که توش اشتباه داره اکه ممکنه اصلاح کنید و اگه توضیحی لازم داره ممنون میشم
با تشکر
فکر کنم شما مورد استفاده از این خصوصیت را درست متوجه نشده اید . در مورد کوئری ، چنانچه شما در آن از یک تابع که خودتان ساخته اید استفاده کنید می توانید در آن تابع شیئی که تابع را فراخوانی کرده را پیداکنید .
ّFunction MyFunction()
Dim objCurrent As Object
Set objCurrent = Application.CodeContextObject
With objCurrent
If .Name = "MyQuery" Then
' .................
Else
'..................
End If
End With
End Function
hamid-nice
چهارشنبه 06 آذر 1392, 20:14 عصر
درسته هنوز خوب متوجه نشدم که اون آبجکتی که نامش را می نویسم به این معنی هست که اگه اکتیو بود عملیات را انجام بده یا نه کافی باز باشه یا نه حتی اگه باز نباشه خودش اجرا می کنه و عملیات انجام می شه ؟
من کد زیر را برای دگمه روی فرم unbound نوشتم ولی هیچ عملی انجام نمی ده؟!
Dim objCurrent As Object
Set objCurrent = Application.CodeContextObject
With objCurrent
If .Name = "Query1" Then
If (IsNull(.[a])) Then
MsgBox "ok"
Else
MsgBox "NOT Ok"
End If
End If
End With
اشکال از کجاست؟ به صورت Function هم عمل نکرد !؟
با تشکر
hamid-nice
جمعه 08 آذر 1392, 16:05 عصر
با سلام
جناب امیری لطفا اشکال کد های بالا را راهنمایی بفرمایید و ابهام بنده را در مورد این مساله برطرف نمایید.
با تشکر
Abbas Amiri
جمعه 08 آذر 1392, 19:35 عصر
با سلام
جناب امیری لطفا اشکال کد های بالا را راهنمایی بفرمایید و ابهام بنده را در مورد این مساله برطرف نمایید.
با تشکر
متاسفانه در مورد کوئری جواب نمیدهد . باید از طریق کد و یا ماکرو فراخوانی شده باشد. شما دقیقا چکاری میخواهید انجام دهید ؟
hamid-nice
شنبه 09 آذر 1392, 00:39 صبح
من می خواستم از مقدار فیلد کوئری Duplicate برای بررسی خالی بودن آن به طور مستقیم ( بدون استفاده از فرم و ... ) در VBA استفاده کنم
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.