PDA

View Full Version : سوال: نمايش نام جداول لينك شده در ليست باكس



abas1388
شنبه 06 خرداد 1391, 15:23 عصر
با سلام
با چه كدي ميتوان نام جداول لينك شده در برنامه را در يك ليست باكس به نمايش گذاشت ؟
با تشكر

Abbas Amiri
یک شنبه 07 خرداد 1391, 00:23 صبح
از کد زیر کمک بگیرید .


Dim tdf As TableDef
For Each tdf In CurrentDb.TableDefs
If tdf.Connect <> "" Then
MyCombo.AddItem tdf.Name
End If
Next

abas1388
یک شنبه 07 خرداد 1391, 13:01 عصر
تشكر
اگر در اين تالار آقاي اميري رو نداشتيم چكار مي كرديم!!!!!!!!!

abas1388
پنج شنبه 11 خرداد 1391, 22:26 عصر
باسلام مجدد
يك سؤال ديگر در رابطه با جداول لينك شده
در زمان اجراي فرم بصورت unbound كه از رويداد on error استفاده نميشود چگونه ميتوان فهميد كه ارتباط جدوال لينك شده با بانك اطلاعاتي بر قرار است يا نه؟
با تشكر

Abbas Amiri
جمعه 12 خرداد 1391, 02:15 صبح
احتمالا ساده ترین راه دسترسی به جدول از طریق رکوردست است . یک فانکشن ایجاد کنید ونام جدول را به عنوان آرگومان به آن ارسال و در آنجا یک رکوردست از جدول ایجاد کنید چنانچه خطایی اتفاق بیفتد ، ارتباط برقرار نشده و بالعکس.
چنانچه جداول غیرلینک را چک کنید جواب مثبت خواهد بود


Function TableConnected(TableName As String) As Boolean
On Error Resume Next
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(TableName)
If Err = 0 Then
TableConnected = True
Else
TableConnected = False
End If
End Function

abas1388
جمعه 12 خرداد 1391, 22:15 عصر
با عرض سلام و تشكر ازجناب اميري
عيناً فانکشن فوق را در بخش عمومي ماژول يك فرم وارد كردم و در رويداد كليك يك كمند باتن كد


TableConnected (TableName)

را تايپ نمودم. البته بجاي TableConnected = True و TableConnected = false پيغام فارسي ‹ارتباط برقرار است› و ‹ارتباط برقرار نيست› را جايگزين نمودم ولي در هر دو حالت با پيغام ‹ارتباط برقرار است› مواجه ميشوم يعني با قطع ارتباط جدول لينك شده هم همين پيغام صادر ميشود.
باتشكر

Abbas Amiri
جمعه 12 خرداد 1391, 23:00 عصر
این طورکه معلوم است فایل Back end شما روی شبکه است ، وفعلا بنده نمیتوانم دراین مورد چک کنم . بهتراست جواب شمارا دوستانی که در این امر تجربه بیشتری دارند ، بدهند

abas1388
شنبه 13 خرداد 1391, 06:32 صبح
این طورکه معلوم است فایل Back end شما روی شبکه است ، وفعلا بنده نمیتوانم دراین مورد چک کنم . بهتراست جواب شمارا دوستانی که در این امر تجربه بیشتری دارند ، بدهند
با سلام
خيرجناب اميري
با كامپيوتر منزل امتحان كردم
لطفاً دوستان ديگر هم امتحان كنند ، شايد من اشتباه كرده باشم
با تشكر

emami.sie
شنبه 13 خرداد 1391, 07:50 صبح
با سلام
خيرجناب اميري
با كامپيوتر منزل امتحان كردم
لطفاً دوستان ديگر هم امتحان كنند ، شايد من اشتباه كرده باشم
با تشكر

سلام
من هم امتحان کردم ، جواب نداد...
کد زیر رو یک امتحان بکنید:
Public Function fGetLinkPath(strTable As String) As String
Dim dbs As DAO.Database, stPath As String

Set dbs = CurrentDb()
On Error Resume Next
stPath = dbs.TableDefs(strTable).Connect
If stPath = "" Then
fGetLinkPath = vbNullString
'can change this to currentdb.name
Else
fGetLinkPath = Right(stPath, Len(stPath) _
- (InStr(1, stPath, "DATABASE=") + 8))
End If
Set dbs = Nothing
End Function

Public Function PathDBExist(MyPath As String) As Boolean
On Error GoTo err
Dim file_name As String

file_name = Split(MyPath, "\")(UBound(Split(MyPath, "\")))


If Dir$(MyPath) = file_name Then
PathDBExist = True
Else
PathDBExist = False
End If

Exit Function

err:
PathDBExist = False
Exit Function
End Function

Private Sub Command82_Click()
Dim CurrPath As String

Dim loTd As DAO.TableDef
CurrentDb.TableDefs.Refresh
For Each loTd In CurrentDb.TableDefs
CurrPath = fGetLinkPath(loTd.Name)
Exit For
Next loTd
Set loTd = Nothing
If PathDBExist(CurrPath) = True Then
'added to show progress bar
' For i = 1 To 100
' DoEvents
' PBar = i
' Next
'taken out due to application response slow
'If RefreshMyDBConnection(CurrPath) = True Then
'DoCmd.Close
'DoCmd.OpenForm "PRIS"
MsgBox "Connect: Yes"
'End If

Else
MsgBox "Connect: No"
End If
End Sub

موفق باشید
یا علی

abas1388
یک شنبه 14 خرداد 1391, 09:43 صبح
سلام
با عرض تشكر از جناب emami.sie
متاسفانه بنده نتوانستم با اين كد ها هم به نتيحه برسم.
من در يك فرم يك تكست باكس جهت نمايش مسير ديتابيس و يك كمند باتن جهت اجراي كد هاي فوق ايجاد كردم و در كدهاي فوق بجاي MyPath نام تكست باكس مسير ديتابيس را جايگزين نمودم ولي در نهايت با صرف نمايش مسير ديتابيس حواب MsgBox "Connect: Yes" است و اگر يك مسير اشتباه هم وارد شود باز جواب MsgBox "Connect: Yes" است و حتي اگر هيچ جدولي وجود نداشته باشد و يا ارتباطي هم بر قرار نباشد باز هم جواب MsgBox "Connect: Yes" است فقط در يك صورت جواب MsgBox "Connect: no" است كه مسير برنامه ناقص يا خالي باشد . ممنون ميشوم اگر با اراده يك نمونه بنده و دوستان ديگر را راهنمائي نمائيد
ضمناً بايد عرض كنم بعلت سرعت فوق العاده پائين اينترنتم نمي توانم نمونه اي كه ايجاد كردم را آپلودنمايم
باتشكر

emami.sie
یک شنبه 14 خرداد 1391, 12:18 عصر
سلام
این هم یک نمونه نسبتا کامل برای برقراری ارتباط بین اینترفیس و دیتابیس اکسس...
موفق باشید
یا علی

Abbas Amiri
یک شنبه 14 خرداد 1391, 13:57 عصر
جناب abas1388 (http://barnamenevis.org/member.php?120703-abas1388)

چنانچه فایل جداول لینک شده در همان کامپیوتر باشد شما به چه طریق حالات مختلف جهت امتحان عملکرد تابع ارسالی را چک کردید؟

abas1388
یک شنبه 14 خرداد 1391, 14:31 عصر
جناب abas1388 (http://barnamenevis.org/member.php?120703-abas1388)

چنانچه فایل جداول لینک شده در همان کامپیوتر باشد شما به چه طریق حالات مختلف جهت امتحان عملکرد تابع ارسالی را چک کردید؟
با سلام
ضمن تشكر ازجناب emami.sie بخاطر ارائه نمونه خوبشان
جناب اميري ! يكي از حالات امتحان اين بود كه بانك اطلاعاتي را در مسيري كه برنامه به جداول آن لينك بود را در مسير ديگري قرار ميدادم ، يا نام بانك اطلاعاتي يا نام جدول هاي بانك اطلاعاتي را عوض مي كردم.
باتشكر

Abbas Amiri
یک شنبه 14 خرداد 1391, 14:43 عصر
ولی با استفاده ازاین شیوه ها بنده نتیجه گرفتم . لطفا کد تغییر یافته را خودتان را به نمایش بذارید.

abas1388
یک شنبه 14 خرداد 1391, 16:50 عصر
ولی با استفاده ازاین شیوه ها بنده نتیجه گرفتم . لطفا کد تغییر یافته را خودتان را به نمایش بذارید.
سلام اگه شما امتحان كرده ايد و نتيجه گرفته ايد حتماً اشتباه از من بوده
بنده همانطور كه در پست 6 عرض كردم فانكشن جنابعالي را در بخش عمومي ماژول فرم وارد كردم و در يك كمند باتن كد


TableConnected (TableName)


را قرار دادم
بديهيست در اين كد بجاي TableName نام جدول لينك شده را جايگزين نموده ام
با تشكر

abas1388
دوشنبه 15 خرداد 1391, 10:43 صبح
سلام اگه شما امتحان كرده ايد و نتيجه گرفته ايد حتماً اشتباه از من بوده
بنده همانطور كه در پست 6 عرض كردم فانكشن جنابعالي را در بخش عمومي ماژول فرم وارد كردم و در يك كمند باتن كد


TableConnected (TableName)


را قرار دادم
بديهيست در اين كد بجاي TableName نام جدول لينك شده را جايگزين نموده ام
با تشكر
سلام مجدد
همانطور كه عرض كردم اشتباه از من بود راهكارجناب اميري حرف نداره
نام جدول مربوطه را بايد بين دو كوتيشن"" قرار ميدادم بصورن زير:


TableConnected("TableName")

با تشكر