PDA

View Full Version : استفاده همزمان چند نفر از اینترفیس اکسس در شبکه



mhamedm2008
سه شنبه 24 شهریور 1394, 00:27 صبح
با سلام
من یک فایل اکسس دارم که فقط شامل فرم و ریپورت و ماژول هست. این فایل توسط کد ها و دستور VBA به بانک اطلاعاتی SQL وصل میشه و کارهای مختلفی رو انجام میده.
حالا مشکل من توی آپدیت برنامه هست. چون تغییرات زیادی توی برنام میدم. و باید هربار توی سیستم ها فایل ها رو کپی کنم.می خواستم ببینم راهی وجود داره که فایل و توی سرور کپی کنم و همه از اونجا فایل و باز کنند.آیا مشکلی وجود میاد و یا اصلا این کار امکان داره؟؟
البته یه فکر دیگه هم به سرم زده که فکر نکنم امکان داشته. و اون هم اینکه تبدیل فایل اکسس به فایل dll. که اگر توی نوار ابزار آدس فایل رو بززند برنامه باز باشه.
با تشکر منتظر پاسخ دوستان هستم

Nazir Ahmad
سه شنبه 24 شهریور 1394, 06:54 صبح
سلام
بله میشه فایل اینترفیس رو توی شبکه قرار بدی و اونو با کاربران به اشتراک بذاری. (حد اقل یه شورت کد روی دسکتاپ هر کاربر)
اینطوری هر وفت که تغییرات لازم باشه دیگه نیازی نیست که فایل رو به یکی یکی از کاربران بدی.
من خودم فعلا از همین روش استفاده میکنم.
البته یه مشکل کوچولو داره که زمانی که یکی از کاربران داره با دیتابیس کار میکنه دیگه نمیتونی فایل رو تغییرات بدی و باید یا یه کپی از فایل بگیری و تغییرات رو اعمال کنی و دوباره اونو به جای فایل اصلی بذاری.

یا حق

amirzazadeh
سه شنبه 24 شهریور 1394, 07:57 صبح
سلام .
يه پيشنهاد ديگه.شما ميتونيد فايل آپديت رو بر روي كامپيوتر سرور قراربدين و موقع باز كردن برنامه توسط كاربر با چند خط كد فايل آپديت چك بشه اگر نسخه جديد موجود بود برنامه آپديت ميشه و گرنه به روال عادي اجرا ميشه.(من از اين روش استفاده ميكنم)
........................
موفق باشيد

Nazir Ahmad
چهارشنبه 25 شهریور 1394, 07:32 صبح
سلام .
يه پيشنهاد ديگه.شما ميتونيد فايل آپديت رو بر روي كامپيوتر سرور قراربدين و موقع باز كردن برنامه توسط كاربر با چند خط كد فايل آپديت چك بشه اگر نسخه جديد موجود بود برنامه آپديت ميشه و گرنه به روال عادي اجرا ميشه.(من از اين روش استفاده ميكنم)
........................
موفق باشيد
سلام
اگر امکان داره یه نمونه و یا کدهایی که نیاز هست رو ارایه بدید ممنون میشم.

یا حق

amirzazadeh
چهارشنبه 25 شهریور 1394, 18:40 عصر
سلام
اگر امکان داره یه نمونه و یا کدهایی که نیاز هست رو ارایه بدید ممنون میشم.

یا حق
سلام
يك نمونه كد براتون اپلود كردم البته بسته به مسير برنامه خودتون بايد تغييرات لازم رو اعمال كنيد.در شناسايي اپديت فرض بر اين بوده كه هر نسخه از برنامه داراي شماره ورژن در انتهاي نام خود هست مثلا bazdid3.1.mdb
كدها در رويداد لود فرم اول برنامه قرار داده ميشه مثل فرم ورود به نرم افزار

cdb = Mid(CurrentProject.Name, 7, 3)
' شماره ورژن برنامه رو ميگيره در اينجا 3.1
Path = "\\drmirzazadeh\Documents\update\"
' مسير بارگذاري شده فايل آپديت
PAT = Dir("\\drmirzazadeh\Documents\update\*.mde")
If Not PAT = vbNullString Then
' اگر فايل آپديت رو پيدا كنه

uf = Mid(PAT, 7, 3)
' ورژن رو چك ميكنه
If uf > cdb Then
' اگر شماره ورژن بزرگتر از فعلي باشه پيام آپديت موجود است آيا اپديت مي كنيد صادر ودر صورت تاييد كپي فايل آپديت در همان مسير 'جاري منتقل ميشه.
If MsgBox("äÓÎå ÌÏíÏ äÑã ÇÝÒÇÑ ãæÌæÏ ÇÓÊ" & vbNewLine & "ÂíÇ ãÇíá Èå ÇÑÊÞÇ äÓÎå äÑã ÇÝÒÇÑ åÓÊíÏ¿", vbOKCancel, "ÏíÊ" _
) = vbOK Then

FileCopy Path & PAT, CurrentProject.Path & "\" & PAT
MsgBox "ÈÑäÇãå Èå ÑæÒ ÑÓÇäí æ ÈÑ Ñæí ßÇãíæÊÑÔãÇ äÕÈ ÑÏíÏ" & vbNewLine & "áØÝÇ ãÌÏÏÇ ÈÑäÇãå ÑÇ ÇÌÑÇ äãÇííÏ", vbInformation, "ÏíÊ"
ReturnValue = ShellExecute(hWndAccessApp, "Open", K, 0&, 0&, SW_SHOWMAXIMIZED)

DoCmd.Quit
Else

End If
End If

'
End If

Nazir Ahmad
پنج شنبه 26 شهریور 1394, 08:54 صبح
تشکر گرامی
من کدها رو نظر به مسیرهای خودم تغییر دادم و در لود فرم گذاشتم اما هیچی نمیشه
cdb = Mid(CurrentProject.Name, 7, 3)' ÔãÇÑå æÑŽä ÈÑäÇãå Ñæ ãííÑå ÏÑ ÇíäÌÇ 3.1
Path = "\\DESKTOP-BHLQEU8\Users\MyHome\Desktop\DB\update\"
' ãÓíÑ ÈÇѐÐÇÑí ÔÏå ÝÇíá ÏíÊ
PAT = Dir("\\DESKTOP-BHLQEU8\Users\MyHome\Desktop\DB\update\*.accdb")
If Not PAT = vbNullString Then
' ÇÑ ÝÇíá ÏíÊ Ñæ íÏÇ ßäå
uf = Mid(PAT, 7, 3)
' æÑŽä Ñæ ß ãíßäå
If uf > cdb Then
' ÇÑ ÔãÇÑå æÑŽä ÈÒѐÊÑ ÇÒ ÝÚáí ÈÇÔå íÇ㠁ÏíÊ ãæÌæÏ ÇÓÊ ÂíÇ ÇÏíÊ ãí ßäíÏ ÕÇÏÑ æÏÑ ÕæÑÊ ÊÇííÏ ßí ÝÇíá ÏíÊ ÏÑ åãÇä ãÓíÑ 'ÌÇÑí ãäÊÞá ãíÔå.
If MsgBox("äÓÎå ÌÏíÏí ÇÒ ÈÑäÇãå ÏÑ ÏÑÓÊÑÓ ãíÈÇÔÏ. ÂíÇ ÈÑæÒ ãí˜äíÏ¿", vbOKCancel, "ÈÑæÒ ÑÓÇäí") = vbOK Then

FileCopy Path & PAT, CurrentProject.Path & "\" & PAT
MsgBox "ÓáÇã" & vbNewLine & "Úáí˜", vbInformation, "A?I?E"
ReturnValue = ShellExecute(hWndAccessApp, "Open", k, 0&, 0&, SW_SHOWMAXIMIZED)
DoCmd.Quit
Else

End If
End If
End If
نه پیغامی میده و نه کاری میکنه.

یا حق

amirzazadeh
پنج شنبه 26 شهریور 1394, 16:20 عصر
سلام
در صورت امكان نمونه خودتون رو اپلود كنيد.

Nazir Ahmad
شنبه 28 شهریور 1394, 08:58 صبح
سلام
در صورت امكان نمونه خودتون رو اپلود كنيد.
بفرمایید
البته دیتابیس اصلی م نیست و فقط یه نمونه است.

amirzazadeh
شنبه 28 شهریور 1394, 19:38 عصر
سلام فايل ضميمه رو داخل درايو C كپي و بعد برنامه رو اجرا كنيد(علت انتخاب درايو C به خاطر آدرس دهي آپديت در اون مسير هست كه قابل تغيير هست.)

Nazir Ahmad
چهارشنبه 08 مهر 1394, 08:55 صبح
سلامamirzazadeh (http://barnamenevis.org/member.php?47888-amirzazadeh)گرامی
ممنون بابت جوابگویی
در صورت امکان میشه کدها رو طوری تغییر داد که اولا ورژن جدید رو بتونیم قبل از به روز کردن ببنیم. (مثلا وقتی برای بروز کردن سوال میکنه ورژن جدید رو هم نشون بده)
و مشکل دوم اینه که زمانی که ورژن جدید رو به محل جدید کپی میکنه ورژن قبلی رو پاک کنه.

یا حق

amirzazadeh
پنج شنبه 09 مهر 1394, 11:51 صبح
سلام نكته اول اينكه لطفا تاپيك رو شخصي نكنيدتا همه بتونن در پاسخ دهي مشاركت بكنند. در مورد سئوالتون فايل رو كمي تغيير دادم و ورژن رو ميتونيد ببينيد ولي حذف نسخه قديمي در اولين اجراي نسخه جديد اتفاق مييفته.(سعي كردم با دستور shell اينكار به صورت اتوماتيك انجام بشه ولي در ويندوز 7 و اكسس 2007 با خطا مواجه شدم تا نظر ساير دوستان چي باشه.)

alirezabahrami
پنج شنبه 09 مهر 1394, 15:17 عصر
سلام نكته اول اينكه لطفا تاپيك رو شخصي نكنيدتا همه بتونن در پاسخ دهي مشاركت بكنند. در مورد سئوالتون فايل رو كمي تغيير دادم و ورژن رو ميتونيد ببينيد ولي حذف نسخه قديمي در اولين اجراي نسخه جديد اتفاق مييفته.(سعي كردم با دستور shell اينكار به صورت اتوماتيك انجام بشه ولي در ويندوز 7 و اكسس 2007 با خطا مواجه شدم تا نظر ساير دوستان چي باشه.)
با سلام
ضمن تشکر از جناب میرزا زاده عزیز بخاطر نمونه فایل مفیدشان ، بنظر میرسد حذف فایل بعد از فرمان quite (بستن برنامه ) با مشکل مواجه شود و بدیهی قبل از فرمان فوق هم امری نشدنی است (چون فایلی که در حال اجراست نمی تواند خود را حذف نماید)
راهکار حقیر در اینجور مواقع استفاده از یک فایل واسط ( فایل اجرائی وی بی ) است .
اگر نمونه را ملاحظه بفرمائید بنده یک فایل اجرائی درکنار برنامه قرار داده ام و در این فایل نسخه قدیم و جدید را از طریق متد GetSetting که قبلاً در فایل اکسس از طریق SaveSetting در ریجیستری ذخیره نموده ام بدست آورده ام و در رویداد تایمر تعیین کرده ام که بعداز چند ثانیه نسخه قبلی را حذف و نسخه جدید اجرا شود .
یا علی

amirzazadeh
شنبه 11 مهر 1394, 19:32 عصر
سلام
با استفاده از ايده ا ي كه از جناب بهرامي گرفتم از امكان اسكريپت نويسي اكسس بهره گرفتم .حاصل نمونه اي شد كه به پيوست تقديم مي گردد.تنها مزيت اين نمونه البته اگه اسمشو بشه مزيت گذاشت استفاده از امكانات خود اكسس براي توليد بچ فايل بروز رساني هست.(دقت كنيد كه رفرنس microsoft Scripting Runtime تيك خورده باشه).

Nazir Ahmad
یک شنبه 12 مهر 1394, 06:40 صبح
تشکر از اساتید محترم که همکاری میکنند.
اما یه مشکل دیگه اینکه در صورتیکه ورژن برنامه از 9 بالاتر باشه مثلا 10 (البته همون عدد آخری مثلا 4.9 باشه جواب میده اما اگر 4.10 باشه دیگه جواب نمیده)
باز هم ممنون از پاسخگویی

یاحق

amirzazadeh
یک شنبه 12 مهر 1394, 07:27 صبح
سلام
در اين نمونه ورژن برنامه به صورت x.x يعني دو رقمي در نظر گرفته شده كه با كمي دستكاري ميشه به سه رقمي تبديل كرد ولي اصولا وقتي ورژن هاي شما با فاصله 0.1 افزايش پيدا ميكنه بعد از ورژن 4.9 بايد به ورژن 5.0 ارتقا پيدا كنه.
......................
موفق باشيد

Nazir Ahmad
یک شنبه 12 مهر 1394, 08:36 صبح
باز هم ممنون
اما آیا امکان داره که فایل رو به فرمت exe تبدیل کرد و تو اینترنت آپلود کرد و آدرس اینترنت رو در کدها داد و درصورت وجود نسخه جدید در همون آدرس عملیات بروز رسانی انجام بشه؟
البته من فایل رو توی Dropbox آپ کردم و اینم لینکشه https://www.dropbox.com/sh/1x28a1fsy9jjryy/AADY6BmkCrqxEVQ3K-TnnUg0a?dl=0
یا حق

amirzazadeh
یک شنبه 12 مهر 1394, 12:00 عصر
سلام
اكسس قابليت تبديل به فرم exe رو نداره .فقط ميتونيد برنامه خودتون رو به شكل mde يا ade تبديل و دسترسي به كدها و طراحي رو محدود كنيد.در مورد سئوال دوم بايد خدمتون بگم كه برنامه آپديت بر روي شبكه داخلي قابل اجرا و تست شده هست به اين معني كه فايل آپديت به صورت share بر روي سرور يا هر كامپيوتر عضو شبكه به اشتراك گذاشته ميشه و كلاينت ها در موقع اجراي برنامه در صورت وجود آپديت به صورت خودكار بروز رساني خواهند شد ولي بر روي اينترنت شما بايد از طريق ميزبان (وب سرويس)دسترسي هاي لازم رو كسب كنيد(كه من تجربه اي در اين زمينه ندارم).

Nazir Ahmad
دوشنبه 13 مهر 1394, 09:50 صبح
سلام دوباره
البته منظور من این بود که بتونیم همین کاری رو که در شبکه انجام میدیم (کدهایی که برای چک کردن بروز رسانی در محلی از شبکه نوشتید) به نحوی همین چک از داخل یه پوشه از شبکه نباشه و از یک آدرس از وب باشه. چنانچه لینکی که در پست قبلی قرار دادم دقیقا آدرس یه پوشه است و مثل اینکه ما داخل شبکه به یه پوشه دسترسی داشته باشیم در وب هم به این پوشه دسترسی داریم (با تمام فایلهای داخل این پوشه)
حالا آیا امکان داره که بجای آدرس درایو C و پوشۀ update لینک مذکور که باز هم آدرس یه پوشه در وب هست، قرار بگیره و چک از اون آدرس انجام بشه؟

درمورد تبدیل اکسس به exe هم منظورم استفاده از برنامه های DBtoEXE یا MDE Compiler بود.

یاحق

amirzazadeh
دوشنبه 13 مهر 1394, 19:02 عصر
سلام
چيزي كه خواسته شما رو براورده كنه يه سرور ftp هست.به اين صورت كه شما فايل اپديت رو برروي اين سرور اپلود ميكنيد بعد در رويداد لود فرم به جاي آدرس درايو C از آدرس ftp استفاده ميكنيد يه چيزي شبيه به اين :

Path = "ftp:\\212.200.197.23\update\"
شماره ذكر شده ip valid سرور ftp هست كه ميزبان شما در اختيارتون قرار ميده.(البته بايد از كامندهاي ftp هم به منظور ارتباط با سرور مذكور بهره بگيرين مثلا از داخل يك بچ فايل كه شامل آدرس سرور و نام كاربري و پسورد ميشه)در كل اين كار عملي هست ولي يه خورده زحمت داره.
...................
موفق باشيد