PDA

View Full Version : اجرا دستور بعد از چند ثانيه



مشتاق یادگیری
سه شنبه 23 تیر 1388, 01:16 صبح
سلام دوستان
دو فيلد دارم كه مي خواهم به آنها مقدار بدهم . بعد مقدار فيلد اول مقدار دوم بعد چند ثانيه مقدار بگيرد

فيلد1 =a فيلد2=b

a=12
بعد 5 ثانبه ( در اينجا از چه دستوري استفاده كنم)
b=14

alirezabahrami
سه شنبه 23 تیر 1388, 08:23 صبح
سلام دوستان
دو فيلد دارم كه مي خواهم به آنها مقدار بدهم . بعد مقدار فيلد اول مقدار دوم بعد چند ثانيه مقدار بگيرد

فيلد1 =a فيلد2=b

a=12
بعد 5 ثانبه ( در اينجا از چه دستوري استفاده كنم)
b=14
با سلام
دوست عزيز سؤالت داراي جواب است به شرطي كه يك مفداري بيشتر توضيح بدهيد .
موفق باشيد

amirzazadeh
سه شنبه 23 تیر 1388, 08:40 صبح
سلام دوستان
دو فيلد دارم كه مي خواهم به آنها مقدار بدهم . بعد مقدار فيلد اول مقدار دوم بعد چند ثانيه مقدار بگيرد

فيلد1 =a فيلد2=b

a=12
بعد 5 ثانبه ( در اينجا از چه دستوري استفاده كنم)
b=14
دوست من ميتوني از دستور for .....next استفاده كني:
dim i as integer
a=12
for i =1 to 10000
next i
b=14
اگر زمان وقفه مناسب نبود خودت ميتوني كم و زيادش كني
.........................
موفق باشيد

مهدی قربانی
سه شنبه 23 تیر 1388, 09:40 صبح
سلام
امكان استفاده از توابع API هم براي اين منظور هست ، شما مي تونيد از Sleep براي ايجاد وقفه بر اساس واحد ميلي ثانيه بهره بگريد .
اين قسمت رو در بالاي ماجول فرمتون كپي كنيد :

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


و در قسمت مورد نظرتون كد رو به اين شكل بنويسيد :


a=12
Call Sleep(5000)
b=14

مقدار 5000 در اصل همون 5 ثانيه مورد نظر شماست .

مشتاق یادگیری
سه شنبه 23 تیر 1388, 18:11 عصر
با سلام و تشكر از اساتيد محترم قرباني و امير زاده
ضمنا جناب امير زاده با افزايش مقدار 10000 خطا مي گيرد فكر كنم مربوط به خط
dim i as integer
مي باشد كه با
تعريف i=0 مشكل برطرف شد

nabeel
سه شنبه 23 تیر 1388, 20:38 عصر
سلام مشتاق یادگیری

از مشخصه های TimerInterval و رویداد On Timer استفاده کنید تا هیچ یک از نقائص دو پست 3 و 4 رو نداشته باشید
در پست شماره سه , در واقع شما نمیتونید زمان دقیقی رو جهت فاصله زمانی دو رویداد داشته باشید , چرا که تکمیل یک حلقه تابعی از سرعت سیستم هستش یعنی برای یک حلقه با تعداد سیکل ثابت زمان میتونه به صورت متغیر باشه

در خصوص پست شماره 4 هم تابع Sleep منجر به مختل شدن کامل عملیات کاربر تا پایان زمان مد نظر میشه
( کاربر قادر به انجام هیچ فعالیت دیگه ای نیست تا دوره زمانی به صورت کامل سپری بشه )

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

موفق باشید

amirzazadeh
چهارشنبه 24 تیر 1388, 07:50 صبح
با سلام و تشكر از اساتيد محترم قرباني و امير زاده
ضمنا جناب امير زاده با افزايش مقدار 10000 خطا مي گيرد فكر كنم مربوط به خط
dim i as integer
مي باشد كه با
تعريف i=0 مشكل برطرف شد
دوست من بهتره متغير I رو به صورت long تعريف كنين تا در اعداد بزرگتر خطا نده.در ضمن اگر به زمان دقيق وقفه نياز داشتين ميتونين از اين كد استفاده كنين.

Public Function Pause(NumberOfSeconds As Variant)
On Error GoTo Err_Pause

Dim PauseTime As Variant, Start As Variant

PauseTime = NumberOfSeconds
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop

Exit_Pause:
Exit Function

Err_Pause:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_Pause

End Functionبراي فراخواني در برنامه با زمان فرضي 5 ثانيه از عبارت زير استفاده كنيد

a = 12
Call Pause(5)
b = 12