PDA

View Full Version : کنترل باز بوددن و یا بسته بودن فایل



محمد رضا بهبودی
پنج شنبه 04 دی 1399, 09:11 صبح
با سلام و احترام خدمت اساتید و دوستان محترم
من دو تا فایل اکسس با نام های تست 1 و تست 2 دارم . می خواهم در فایل تست 1 دکمه ای داشته باشم که با زدن ان برنامه کنترل کند که اگر فایل تست 2 باز است پیام ok دهد و در صورت بسته بودن فایل 2 پیام no صادر شود . لطفا در صورا امکان راهنمائی بفرمایید . ممنون

eb_1345
پنج شنبه 04 دی 1399, 12:07 عصر
با سلام و احترام خدمت اساتید و دوستان محترم
من دو تا فایل اکسس با نام های تست 1 و تست 2 دارم . می خواهم در فایل تست 1 دکمه ای داشته باشم که با زدن ان برنامه کنترل کند که اگر فایل تست 2 باز است پیام ok دهد و در صورت بسته بودن فایل 2 پیام no صادر شود . لطفا در صورا امکان راهنمائی بفرمایید . ممنون
سلام
ابتدا در قسمت عمومی فرم کد زیر را وارد کن :



Private Declare Function FindWindowA Lib "user32.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


بعد در رویداد کلیک یک کمند باتن کد زیر رو وارد کن :



Dim find As Long
find = find = FindWindowA(vbNullString, "Barnamenevis")
If Not find = 0 Then
MsgBox "Program xxx is closed"
Else
MsgBox "Program xxx is open"
End If


در کد بالا بجای Barnamenevis نام دیتابیس خودت را جایگزین کن ( همان نامی که در قسمت استارت آپ برای برنامه مشخص کرده اید )

padide55
پنج شنبه 04 دی 1399, 12:20 عصر
سلام دوستان
لطفا سوالات به این واضحی و تکراری نپرسید . یه مقدار جستجو کنید
control existfile in drive vba access

الان یک جستجو انجام بدین صدها نمونه در سایتهای ایرانی و خارجی هست

کد




Sub CheckFileExists ()

Dim strFileName As String
Dim strFileExists As String

strFileName = "C:\myfolder\myfolder2\Test File .accdb"
strFileExists = Dir(strFileName)

If strFileExists = "" Then
MsgBox "The selected file doesn't exist"
Else
MsgBox "The selected file exists"
End If

End Sub


و یا کد




Private Sub Command0_Click()

Dim oFolder As Object
Dim oFile As Object
Dim i As Integer

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\myfolder")


For Each oFile In oFolder.Files


If ofilename = abcd Then

MsgBox "file found " & oFile.Name
Else
MsgBox oFile.Name & "your file not found in folder ", vbOKOnly
End If

Next oFile


End Sub



نمونه


در سایت برنامه نویس (https://barnamenevis.org/showthread.php?562536-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D9%85%D8%AC%D8%AF%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%DA%A9%D8%B3%D8%B3-ACCDE-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%DA%A9%D9%86%DB%8C%D9%85%D8%9F-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D9%88%D8%A8%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2-%D9%86%D8%B4%D9%88%D8%AF&p=2436328&viewfull=1#post2436328)

سایت 2 (https://www.everythingaccess.com/tutorials.asp?ID=FileExists%28%29-and-FolderExists%28%29)

سایت 3 (https://stackoverflow.com/questions/44434199/access-vba-check-if-file-exists)


سایت 4 (https://stackoverflow.com/questions/44434199/access-vba-check-if-file-exists)

eb_1345
پنج شنبه 04 دی 1399, 12:33 عصر
سلام دوستان
لطفا سوالات به این واضحی و تکراری نپرسید . یه مقدار جستجو کنید
control existfile in drive vba access

الان یک جستجو انجام بدین صدها نمونه در سایتهای ایرانی و خارجی هست

کد




Sub CheckFileExists ()

Dim strFileName As String
Dim strFileExists As String

strFileName = "C:\myfolder\myfolder2\Test File .accdb"
strFileExists = Dir(strFileName)

If strFileExists = "" Then
MsgBox "The selected file doesn't exist"
Else
MsgBox "The selected file exists"
End If

End Sub

نمونه

در سایت برنامه نویس (https://barnamenevis.org/showthread.php?562536-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D9%85%D8%AC%D8%AF%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%DA%A9%D8%B3%D8%B3-ACCDE-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%DA%A9%D9%86%DB%8C%D9%85%D8%9F-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D9%88%D8%A8%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2-%D9%86%D8%B4%D9%88%D8%AF&p=2436328&viewfull=1#post2436328)

سایت 2 (https://www.everythingaccess.com/tutorials.asp?ID=FileExists%28%29-and-FolderExists%28%29)

سایت 3 (https://stackoverflow.com/questions/44434199/access-vba-check-if-file-exists)


سایت 4 (https://stackoverflow.com/questions/44434199/access-vba-check-if-file-exists)


سلام جناب padide55 (https://barnamenevis.org/member.php?263869-padide55)
این کد شما مربوط به چک کردن وجود یا عدم وجود یک فایل در یک مسیر خاص است. خواسته آقای بهبودی اینست که چک شود که آیا برنامه مد نظرشان باز است یا نه ( اجرا شده یا نه ) ؟
که برای این منظور از کدهای پست 2 باید استفاده کنن

padide55
پنج شنبه 04 دی 1399, 12:41 عصر
سلام
اکی

این تاپیک در مورد کنترل باز بودن فایل (https://barnamenevis.org/showthread.php?562536-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D9%85%D8%AC%D8%AF%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%DA%A9%D8%B3%D8%B3-ACCDE-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%DA%A9%D9%86%DB%8C%D9%85%D8%9F-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D9%88%D8%A8%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2-%D9%86%D8%B4%D9%88%D8%AF&p=2436328&viewfull=1#post2436328)

eb_1345
پنج شنبه 04 دی 1399, 13:11 عصر
سلام
اکی

این تاپیک در مورد کنترل باز بودن فایل (https://barnamenevis.org/showthread.php?562536-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D9%85%D8%AC%D8%AF%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%DA%A9%D8%B3%D8%B3-ACCDE-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%DA%A9%D9%86%DB%8C%D9%85%D8%9F-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D9%88%D8%A8%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2-%D9%86%D8%B4%D9%88%D8%AF&p=2436328&viewfull=1#post2436328)


نه ، این تاپیک هم در مورد جلوگیری از اجرای مجدد یک برنامه است :لبخندساده:
عنایت بفرمائید جناب padide55 (https://barnamenevis.org/member.php?263869-padide55) ! منظور آقای بهبودی این است که ایشان دو تا برنامه ( نه یک برنامه) اکسس دارند که مستقل از همدیگر هستند و فرض کن الآن در محیط اجرائی یکی از برنامه ها در حال کارکردن هستن و یک برنامه ای دیگر دارند که میخواهند بفهمند که آن برنامه دیگر در حال حاضر باز است یا نه
مثلاً شما میخواهید از درون برنامه خودت چک کنید که آیا برنامه NotePad باز است یا نه
تا چند دقیقه دیگر یک فایل نمونه اینجا قرار میدهم ....

eb_1345
پنج شنبه 04 دی 1399, 13:31 عصر
در فایل نمونه ضمیمه دو دیتابیس با نام های S1 و S2 وجود دارد . دیتابیس S1 را اجرا کنید و بدون باز کردن دیتابیس دوم بر روی کمند باتن «چک کردن اجرای برنامه دوم» کلیک کنید ، مشاهده می کنید که پیغام دیتابیس S2 بسته است صادر میشود و حالا از همین فرم اقدام به باز کردن دیتابیس دوم بکنید و بر روی کمند باتن «چک کردن اجرای برنامه دوم» کلیک کنید در این مرحله مشاهده می کنید که پیغام دیتابیس S2 باز است صادر میشود.

eb_1345
پنج شنبه 04 دی 1399, 14:39 عصر
نمونه پست 7 برای اجرا در سیستم 64 بیتی هم اصلاح شد

Shahramdindoust
جمعه 05 دی 1399, 18:42 عصر
ببخشید برنامه دوم میتونه دیتابیس نباشه؟
مثلا چک کردن یه نرم افزار دیگه باشه
مثلا یه فایل word یا excel ?

eb_1345
جمعه 05 دی 1399, 19:24 عصر
مثلاً شما میخواهید از درون برنامه خودت چک کنید که آیا برنامه NotePad باز است یا نه



ببخشید برنامه دوم میتونه دیتابیس نباشه؟
مثلا چک کردن یه نرم افزار دیگه باشه
مثلا یه فایل word یا excel ?

همانطورکه در پست 6 اشاره کرده ام جواب بله است

محمد رضا بهبودی
شنبه 06 دی 1399, 08:03 صبح
با سلام و احترام
ممنون از هر دو استاد گرامی
البته من خودم هم با استفاده از کدهای ساده تر توانستم این موضوع را انجام دهم که نمونه فایل را پیوست می کنم . لطفا اگر نکته نادرستی دارد بفرمایید

Shahramdindoust
شنبه 06 دی 1399, 11:36 صبح
1- الان این دکمه ای که گذاشتید باز یا بسته بودن کدام برنامه را می سنجد؟
2- در چه شرایطی جواب "فایل بسته است" می دهد این که همه اش جواب "فایل باز است" می دهد؟
3- شاید خود اکسس را می سنجد که در این صورت فقط جواب "فایل باز است" خواهد داد

محمد رضا بهبودی
شنبه 06 دی 1399, 13:02 عصر
دوست عزیز
آدرس فایلی که کنترل می کند در رویداد کلیک دکمه نوشته شده است که من به طور مثال e:\test\aa.accdb را نوشتم . شما باید آدرس فایلی را که می خواهید باز یا بسته بودن ان کنترل شود را جایگرین این آدرس کنید
. من از این ماژول در برنامه خودم استفاده کردم و کاملا جواب می دهد .

Shahramdindoust
شنبه 06 دی 1399, 13:12 عصر
بله ممنون از بابت توضیح