PDA

View Full Version : چطوری بفهمم بانک اطلاعاتیم توسط کاربر دیگری باز است یا خیر



alib537123
شنبه 25 بهمن 1382, 14:19 عصر
من می خوام برنامه ای بنویسم که در شبکه استفاده کنم من دنبال یک تابع و روش کار آن می گردم که بفهمم این بانک توسط کاربر دیگر باز شده یا نه.

میرسی خوشحال می شم منو راهنمایی کنید
با تشکر فراوان

alib537123
شنبه 25 بهمن 1382, 14:20 عصر
در ضمن برنامه من تحت داس و فاکس پرو می باشد. قابل توجه برنامه نویسان

alib537123
شنبه 25 بهمن 1382, 14:21 عصر
من می خوام برنامه ای بنویسم که در شبکه استفاده کنم من دنبال یک تابع و روش کار آن می گردم که بفهمم این بانک توسط کاربر دیگر باز شده یا نه.

میرسی خوشحال می شم منو راهنمایی کنید
با تشکر فراواندر ضمن برنامه من تحت داس و فاکس پرو می باشد. قابل توجه برنامه نویسان

kia1349
یک شنبه 26 بهمن 1382, 13:46 عصر
تابع used()
توضیحات:
Determines if an alias is in use or a table is open in a specific work area.

تابع aused()
توضیحات:
Places table aliases and work areas for a data session into a variable array.

مثال:
OPEN DATABASE (HOME(2) + 'Data\testdata') EXCLUSIVE
USE Customer IN 0
CLEAR
? AUSED(gaInuse)
DISPLAY MEMORY LIKE gaInuse
CLOSE DATABASES
_________________
عاشق FoxPro

rezaTavak
دوشنبه 27 بهمن 1382, 12:34 عصر
سلام و صد سلام

فکر کنم منظور شما این باشه که میخواهید بدانید که یک فایل توسط دیگری باز باشد یا خیر؟ این فایل به صورت Share باشد یا Exclusive. خوب تابعی که بتواند این کار را بکند میتواند بر دو اصل استوار گردد:

اولین راه : اگر فایل توسط دیگری بصورت Share باز باشد توسط دیگر نیز میشود آنرا باز کرد ولی اگر Exclusive باشد نمیتوان. بنابراین شما میتوانید فایل را در هر دو حالت Share و Exclusive امتحان کنید و اگر خطایی بدست آمد آنر Handle کنید. مثلا در صورتیکه Set Exclusive در حالت Off باشد شما فایل را به صورت Share باز میکنید یا حتی میتوانید در جلوی دستور use کلمه Share را قرار دهید. اگر با خطا مواجه شدید نشان میدهد که فایل توسط دیگری یا برنامه دیگر به صورت Exclusive باز شده. اما اگر خطا نداد باید بعد شما Set Exclusive را در حالت On قرار داده و دوباره جدول را باز کنید. اگر خطا نداد فایل توسط دیگری باز نیست اما اگر خطا داد فایل توسط دیگری به صورت Share باز شده. این ملزم به هدایت خطاهاست که من زیاد با آن موافق نیستم.

دومین راه: دومین راه را من خودم امتحان کردم و تابعی در این مورد نوشتم که در اینجا مشاهده میفرمایید. منطق تابع مذکور این است : اگر فایلی باز نشود یا وجود ندارد یا به صورت Exclusive توسط دیگری باز شده است. بنابراین اگر باز شد دو حالت داریم: اول اینکه فایل توسط دیگری به صورت Share باز شده که آنرا با تابع Fopen امتحان میکنیم. در دو حالت با Attrib 0 و 2 که در تابع آنرا مشاهده خواهید فرمود. مقادیری که این تابع برمیگرداند بدین شرح است: 1 فایل توسط دیگری به صورت مشترک (Share) باز شده. 2: فایل توسط دیگری باز نشده 3 فایل توسط دیگری به صورت انحصاری (Exclusive) باز شده 4 فایل با این نام وجود ندارد

امیدوارم این تابع برای شما درست کار کند و همان چیزی که شما مد نظر دارید را انجام دهد.

یاد آوری: برای اینکه برنامه ای را بفهمید تحت شبکه درست کار میکند میتوانید آنرا در ویندوز دوبار اجرا کنید. اگر برنامه تحت Dos هم باشد مهم نیست فقط Shell برنامه بصورت Dos خواهد بود.

در پایان اگر این تابع درست کار نکرد مرا هم مطلع بفرمائید.
در ضمن فایل به صورت Prg در آورید.


محمد رضا توکل

rezaTavak
چهارشنبه 29 بهمن 1382, 00:22 صبح
سلام

فکر کنم کسی از این برنامه خوشش نیومده!


__________________________________________________ _____________

ALI RAFFIE
چهارشنبه 09 اردیبهشت 1383, 13:04 عصر
جناب آقای توکل دست شما درد نکنه تابع مفیدی بود.
دیگران یا مثل من از روش اول استفاده می کنن یا اینه روی برنامه های تحت شبکه کار نمی کنند.در هر صورت تابع شما از روش اول مفیدتر است.