PDA

View Full Version : سوال: چگونه اجرا شدن یک کد بصورت Timer در برنامه



pmoshir
پنج شنبه 07 خرداد 1388, 21:04 عصر
با سلام خدمت تمامی دوستان و همکاران

نیاز به یک ماژول دارم که بصورت اتوماتیک و تایمر یک کد خاص رو چک کنه.بعنوان مثال هر 30 ثانیه یک بار وجود قفل سخت افزاری در برنامه چک بشود.

متشکر میشم اگه کمکم کنید

pmoshir
شنبه 09 خرداد 1388, 11:52 صبح
مجدد درخواست کمک دارم.متشکرم

مهدی قربانی
شنبه 09 خرداد 1388, 12:52 عصر
سلام
شما مي تونيد از رخداد On Timer و Timer براي اين منظور استفاده كنيد .

pmoshir
شنبه 09 خرداد 1388, 20:25 عصر
جناب قربانی در جریان هستم باید از رخداد timer استفاده کنم ولی نمی خوام با فرم این کار انجام شه میخوام در خود برنامه timer چک بشه.با تشکر از همکاریتون

alirezabahrami
یک شنبه 10 خرداد 1388, 16:47 عصر
جناب قربانی در جریان هستم باید از رخداد timer استفاده کنم ولی نمی خوام با فرم این کار انجام شه میخوام در خود برنامه timer چک بشه.با تشکر از همکاریتون
با سلام
يك فرم داراي ايونت ها يا رخدادهاي زيادي از جمله رخداد timer ميباشد كه در محيط اكسس ، اين رخداد فقط براي فرم در نظر گرفته شده است . مثلاً اگر ايونت ها يا رخدادهاي يك گزارش نگاه كنيد مبينيد كه فاقد چنين ايونتي ميباشند و كنترل هاي داخلي يك فرم يا گزارش نيز از اين قاعده مستثني نيستند . پس نتيجه ميگيريم كه تايمر نمي تواند برنامه ائي جداگانه و مستقل از فرم باشد و اگر منظورت استفاده از ابزار تايمري كه در محيط vba ميباشد و جهت استفاده از آن بايد آن را از بيرون به داخل فرم (بصورت drug and drop) انتقال بدهيد بايد عرض كنم در آنجا هم ابزار تايمر جزئي از فرم قرار ميگيرد و كاركرد آن نيز مانند كاركرد تايمر اكسس ميباشد .
ضمناً از استاد عزيز و بزرگوارم جناب آقاي قرباني كه بنده شخصاً با وجود اطلاعات اندكم در محضرايشان تلمذ مينمايم ،استدعا دارم چنانچه در اظهار نظرم اشكالي وجود دارد اصلاح فرمايند.
با تشكر

pmoshir
یک شنبه 10 خرداد 1388, 23:16 عصر
با سلام مجدد

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

e601
دوشنبه 11 خرداد 1388, 00:19 صبح
با سلام مجدد

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

سلام

دوست عزیز خوشبختانه این کار شدنی هست :چشمک:

برای راحتی کار شما و جلوگیری از ایجاد سردرگمی تابع مربوطه رو نوشتم که بصورت زیر هست :


Public Sub eTimer(InterVal As Integer)
Dim Start
Start = Timer
Do While Timer < Start + InterVal
DoEvents
Loop
End Sub

مقدار آرگومان InterVal همون میزان زمان مورد نظر شما برای تایمر هستش. در واقع اگر شما میخوای بعد 30 ثانیه عملیات مورد نظرت انجام بشه میتونی تابع فوق رو بصورت زیر فراخوانی کنی :


eTimer 30
YourAction

YourAction هم عملیات مورد نظر شما برای چک کردن قفل سخت افزاریتون هست.

موفق باشید...

alirezabahrami
دوشنبه 11 خرداد 1388, 10:12 صبح
سلام

دوست عزیز خوشبختانه این کار شدنی هست :چشمک:

برای راحتی کار شما و جلوگیری از ایجاد سردرگمی تابع مربوطه رو نوشتم که بصورت زیر هست :









Public Sub eTimer(InterVal As Integer)








Dim Start
Start = Timer
Do While Timer < Start + InterVal
DoEvents
Loop

End Sub


مقدار آرگومان InterVal همون میزان زمان مورد نظر شما برای تایمر هستش. در واقع اگر شما میخوای بعد 30 ثانیه عملیات مورد نظرت انجام بشه میتونی تابع فوق رو بصورت زیر فراخوانی کنی :









eTimer 30









YourAction




YourAction هم عملیات مورد نظر شما برای چک کردن قفل سخت افزاریتون هست.


موفق باشید...



آقا مسعودي عزيز سلام
رسيدن بخير .
eTimer 30 در چه رخدادي فراخواني ميشود ؟ بنده در نمونه زير براي باز شدن فرم شماره 2 ، يك كمند باتن و يك تكست باكس در فرم شماره 1 قرار داده ام كه با كليك كردن بر روي كمند باتن ، عدد 125 در تكست باكس قرار ميگيرد و بعد از سپري شدن 5000 ميلي ثانيه فرم شماره 2 باز ميشود . و شرط باز شدن فرم شماره 2 را در رخداد on timer فرم شماره 1 قرار داد ه ام . حال سؤال اينجاست كه اگر از رخداد timer فرم شماره 1 استفاده نكنيم و با استفاده از تابع ارائه شده جنابعالي فرم 2 را باز كنيم به چه صورتي بايد عمل كنيم .

ضمناً آقا مسعودي ! اگر وقت داشتيد يك نگاهي هم به تاپيك Ctrl+p در بخش vb بنداز .
ارادتمند شما: بهرامي

e601
دوشنبه 11 خرداد 1388, 14:15 عصر
سلام

این سابروتین در هر جایی از برنامه میتونه فراخوانی بشه. این روش فرقش با تایمر خود فرم اینه که مثلا شما تایمر رو روی 5 ثانیه قرار دادی ولی نمیدونی کاربر دقیقا از ابتدای شروع محاسبه 5 ثانیه توسط اکسس ، روی دکمه کلیک کرده یا نه.
به بیان واضح تر امکان داره از زمان 5 ثانیه ای که شما برای تایمر تعیین کردی ، 4 ثانیه گذشته باشه و کاربر روی دکمه کلیک کنه در این حالت عملیات مورد نظر شما بعد از 1 ثانیه انجام میشه نه 5 ثانیه !!!

به هر حال از این روش در مواقعی استفاده میشه که یا امکان استفاده از تایمر فرم نیست یا تایمر فرم جوابگوی نیاز شما نیست.

نمونه ی شما رو برای استفاده از روش فوق اصلاح کردم که بهتر با این روش آشنا بشید.

در مورد تاپیک vb هم چشم بررسی میکنم.

موفق باشید...

pmoshir
سه شنبه 12 خرداد 1388, 22:47 عصر
با تشکر فراوان جناب مسعودیقفط یک سوال آیا میشه این کد در قالب یک ماژول در بیاد که بدون نیاز به فرم بصورت اتوماتیک اجرا بشه؟؟یعنی بدون نیاز به باز شدن و کلیک کردن روی فرم یا هر چیزه دیگه؟؟ممنون از همکاریتون

مهدی قربانی
چهارشنبه 13 خرداد 1388, 00:12 صبح
سلام
جناب pmoshir علت تاكيد شما اجراي ماجول بدون دخالت فرم چيه ؟

e601
چهارشنبه 13 خرداد 1388, 00:42 صبح
با تشکر فراوان جناب مسعودی فقط یک سوال آیا میشه این کد در قالب یک ماژول در بیاد که بدون نیاز به فرم بصورت اتوماتیک اجرا بشه؟؟یعنی بدون نیاز به باز شدن و کلیک کردن روی فرم یا هر چیزه دیگه؟؟ممنون از همکاریتون

مطمئنا میشه ! برای اینکار یک نمونه برای شما ضمیمه کردم.

یه کم هم در مورد نمونه توضیح میدم تا بهتر متوجه بشید :
شما فقط کافیه این پروسه رو یکبار در برنامت اجرا کنی تا تایمر مادامیکه برنامه در حال اجراست در حال چرخش باشه و اجرا بشه.
مسلما وقتی یک برنامه اجرا میشه یک فرم Startup هم قاعدتا داره. مثلا فرم خوش آمدگویی ! یا هر فرم دیگه ای...
کافیه تایمر خودمون رو در کد فرم فعال کنیم. همین و بس..!!!

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

شما وقتی فایل ضمیمه رو گرفتی و واردش شدی فرمی باز میشه که دارای یک دکمه هست و کد فعال سازی تایمر در رویداد Click اون قرار داره. (که البته میتونه درون رویداد OnLoad فرم هم قرار بگیره)

بعد از کلیک کردن روی دکمه ، تایمر فعال میشه و بعد از هر 3 ثانیه پیامی نشون داده میشه. از این به بعد هر 3 ثانیه یکبار پیام نشون داده میشه چه فرم باز باشه چه بسته !

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

موفق باشید...

ali_bagheri34
چهارشنبه 13 خرداد 1388, 08:58 صبح
با سلام و خسته نباشيد
ايا اين امكان وجود دارد كه در يك ساعت خاصي مثلا ساعت 12 شب يك فانكش اجرا شود (مانند اس كيو ال ) كه مي توانيم بگوييم كه راس ساعت 12 شب يكبار كدي را اجرا شود

مهدی قربانی
پنج شنبه 14 خرداد 1388, 20:55 عصر
سلام
جناب pmoshir شما كه نفرموديد چرا مي خواين بدون اجراي فرم تايمر فعال بشه ولي به هر حال نمونه اي كه دوستمون جناب مسعودي زحمتش رو كشيدن شما مي تونيد بدون استفاده از فرم و بواسطه بكارگيري يك ماكرو AutoExec تايمر رو فعال كنيد .

مهدی قربانی
پنج شنبه 14 خرداد 1388, 20:58 عصر
با سلام و خسته نباشيد
ايا اين امكان وجود دارد كه در يك ساعت خاصي مثلا ساعت 12 شب يك فانكش اجرا شود (مانند اس كيو ال ) كه مي توانيم بگوييم كه راس ساعت 12 شب يكبار كدي را اجرا شود

سلام
در صورت باز بودن برنامه جواب مثبته .

pmoshir
یک شنبه 17 خرداد 1388, 22:28 عصر
با سلام خدمت دوستان و عذرخواهی بابت تاخیر در جواب

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

hamid-nice
چهارشنبه 21 فروردین 1392, 15:29 عصر
سلام
جناب pmoshir شما كه نفرموديد چرا مي خواين بدون اجراي فرم تايمر فعال بشه ولي به هر حال نمونه اي كه دوستمون جناب مسعودي زحمتش رو كشيدن شما مي تونيد بدون استفاده از فرم و بواسطه بكارگيري يك ماكرو AutoExec تايمر رو فعال كنيد .

با سلام

حلا چه طور می شه یک دگمه تعریف کرد تا این عمل را متوقف کنه
با تشکر

hamid-nice
جمعه 06 اردیبهشت 1392, 00:32 صبح
دوستان گرامی
جوابی برای این سوال هست ؟
با تشکر

Abbas Amiri
جمعه 06 اردیبهشت 1392, 01:15 صبح
با سلام

حلا چه طور می شه یک دگمه تعریف کرد تا این عمل را متوقف کنه
با تشکر

در سابروتین مربوطه یک حلقه بی پایان اجرا میشه و باید تغییراتی در ماژول داد و مثلا یک متغیر عمومی در آن تعریف کرد . و حلقه با مقدار آن چک شود . حال با مقداردهی به متغیر میتوانیم تایمر را روشن یا خاموش کنیم

hamid-nice
جمعه 06 اردیبهشت 1392, 13:56 عصر
سلام
دوست گرامی لطفا نمونه کدی قرار بدید در واقع من می خوام از توی یک فرم تابع را فراخوانی کنم و این لوپ شروع به کار کنه و در فرم دیگری وقتی فرم قبلی بسته شده ، با زدن یک دگمه این تابع را stop کنم

از Help خود access هم کدهای زیر را پیدا کردم ولی نتئنستن برای این هدف تغییر بدم

Dim PauseTime, start, Finish, TotalTime
If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
PauseTime = 5 ' Set duration.
start = Timer ' Set start time.
Do While Timer < start + PauseTime
DoEvents ' Yield to other processes.
Loop
Finish = Timer ' Set end time.
TotalTime = Finish - start ' Calculate total time.
MsgBox "Paused for " & TotalTime & " seconds"
Else
End
End If


با تشکر