PDA

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



afshin000
پنج شنبه 27 فروردین 1394, 23:39 عصر
با سلام خدمت هموطنان
من یک مشکل دارم وان اینطور است که ایا می شود با استفا ه از یک کد فهمید یک پایگاه داده در حال استفاده هست یا نه ودر صورت استفاده شدن منتظر بماند وبعد از فهمیدن اینکه ا زپایگاه فوق استفاده نمی شود شروع به استفاده از پایگاه (مثلا ثبت داده) شود

Abbas Amiri
جمعه 28 فروردین 1394, 12:13 عصر
با سلام خدمت هموطنان
من یک مشکل دارم وان اینطور است که ایا می شود با استفا ه از یک کد فهمید یک پایگاه داده در حال استفاده هست یا نه ودر صورت استفاده شدن منتظر بماند وبعد از فهمیدن اینکه ا زپایگاه فوق استفاده نمی شود شروع به استفاده از پایگاه (مثلا ثبت داده) شود
سلام
برای گرفتن لیست Users و وضعیت کانکت آنها می توانید از لینک زیر استفاده کنید:
https://support.microsoft.com/en-us/kb/285822

ام اگر تابعی برای منظور خودتان بخواهید با کمی دستکاری در کدهای لینک فوق می توانیم داشته باشیم:
Function IsUserConnect(strUser As String) As Boolean
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim j As Long

On Error GoTo ErrHandler
Set cn = CurrentProject.Connection
Set rs = cn.OpenSchema(adSchemaProviderSpecific, , _
"{947bb102-5d43-11d1-bdbf-00c04fb92675}")

Do While Not rs.EOF
If StrComp(rs.Fields(1), strUser, vbTextCompare) And rs.Fields(2) Then
IsUserConnect = True
Exit Do
End If
rs.MoveNext
Loop
cn.Close
Exit Function

ErrHandler:
For j = 0 To cn.Errors.Count - 1
Debug.Print "Conn Err Num : "; cn.Errors(j).Number
Debug.Print "Conn Err Desc: "; cn.Errors(j).Description
Next j
Resume Next
End Function


این مثال برای فایل اکسس جاری است و برای منظورهای دیگر بایستی ConnectionString شی cn در مثال را برای آن تنظیم کنید
موفق باشید

afra891
شنبه 15 آذر 1399, 19:49 عصر
سلام. چطور میشه از کد بالا یا کد اون سایت تو فرم استفاده کرد؟

padide55
شنبه 15 آذر 1399, 20:46 عصر
با سلام خدمت هموطنان
من یک مشکل دارم وان اینطور است که ایا می شود با استفا ه از یک کد فهمید یک پایگاه داده در حال استفاده هست یا نه ودر صورت استفاده شدن منتظر بماند وبعد از فهمیدن اینکه ا زپایگاه فوق استفاده نمی شود شروع به استفاده از پایگاه (مثلا ثبت داده) شود
سلام
منظورتون دقیقا چی هست
وضعیت اشتراک فایلتون در شبکه چجوریه
یک فایل در شبکه هست و همه استفاده میکنیدو شورتکات دسکتاپ درست کرده اید
و یا forend back end هست.
یک فایل تیبلهادر شبکه هست و بقیه با فایل در دسکتاپ خودشون کار میکنند؟

شما میتوانید تعیین کنید که یک فایل دو بار باز نشود . ولی در ابتدا روش کار با نرم افزارتون رو مشخص کنید.

مسئله دوم .
در هنگام باز شدن برنامه میخواید چک کند اگر برنامه یک بار توسط کاربر دیگر باز است .بسته شود.؟

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

ضمنا این تاپیک رو مطالعه فرمایید (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=2434624&viewfull=1#post2434624)