PDA

View Full Version : سوال: بدست آوردن نام جدول در دیتابیس



kablayi
پنج شنبه 16 خرداد 1387, 19:53 عصر
چطور میتونم ...
آخ ببخشید... سلام ... :خجالت:
میخواستم بدونم میشه نام جداول درون یه دیتابیس رو بدست بیارم و نمایش بدم ؟؟؟؟؟؟ :متفکر:

محمدامین شریفی
پنج شنبه 16 خرداد 1387, 23:41 عصر
همشهری با datagridview کار کردی vb.net؟
یه کم کاری که می خوای بکنی را بیشتر توظیح بده
تو access یه نام field داریم یه caption شایدم text هست درست یادم نمی یاد
پایگاه داه شما چیست؟

khz-web1
جمعه 17 خرداد 1387, 02:32 صبح
منظور این آقا اینکه چطور نام یه جدول رو داخل دات نت بدست بیارم .....

Dariuosh
جمعه 17 خرداد 1387, 08:49 صبح
تو جدول مستر تمام اطلاعاتي که ميخواي هست

Amateur_G
جمعه 17 خرداد 1387, 12:35 عصر
سلام .
اگر از sql استفاده مي كنيد مي توانيد با دستور زير تمام اطلاعات در مورد جداولي كه داريد استفاده مي كنيد به دست آوريد:


SELECT Table_Name FROM Information_Schema.Tables

و اگر از اشيا oledb استفاده مي كنيد كد زير را امتحان كنيد:


Dim schemaTable As DataTable = _
conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
New Object() {Nothing, Nothing, Nothing, "TABLE"})


اميدوارم مشكاتان حل شده باشد.:تشویق:

khz-web1
جمعه 17 خرداد 1387, 20:38 عصر
میشه این کد رو داخل علامت کد بزارید.....

با تشکر

kablayi
جمعه 17 خرداد 1387, 23:21 عصر
سلام .
اگر از sql استفاده مي كنيد مي توانيد با دستور زير تمام اطلاعات در مورد جداولي كه داريد استفاده مي كنيد به دست آوريد:


SELECT Table_Name FROM Information_Schema.Tables

و اگر از اشيا oledb استفاده مي كنيد كد زير را امتحان كنيد:


Dim schemaTable As DataTable = _
conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
New Object() {Nothing, Nothing, Nothing, "TABLE"})


اميدوارم مشكاتان حل شده باشد.:تشویق:

کد شما رو امتحان کردم هر کاری کردم اون جواب نداد ....


تو جدول مستر تمام اطلاعاتي که ميخواي هست

میشه بیشتر توضیح بدین ...
این جدول مستر چی هست ...؟ ممنون

ببینید من می خوام نام جدولمو پیدا کنم تا بتونم دیتاگرید رو با اون جدول خاص پر کنم ...
یه مثال میزنم تا بهتر متوجه بشین که میخوام چیکار کنم ...
ببینید فرض کنید من اطلاعات مربوط به فروشم رو در طول یک سال در جدولی به نام Forosh85 ذخیره کردم ... این تا اینجا داشته باشید
خوب کاری که من کردم اینه که هر موقع که بخوام میتونم یه جدول دیگه مثل Forosh86 یا Forosh87 یا هر نام دیگه ای در حین برنامه بسازم تا اطلاعات سال جدید رو در اون ذخیره کنم و اطلاعات سال قبل در دیتابیس باقی بمونه یعنی یه جور بایگانی کردن اطلاعات ... :کف:
حالا مشکلم اینه که اگر بخوام به جداول بایگانی دسترسی داشته باشم بایستی نام اون جداول رو داشته باشم تا بتونم اون جدول رو لود کنم و اطلاعات اونو تو دیتا گرید یا هر چیز دیگه نمایش بدم ... :عصبانی++:

دیتابیسم هم اکسسه...

محمدامین شریفی
جمعه 17 خرداد 1387, 23:50 عصر
من که از کدای جناب Amateur_G سر در نیاوردم.
اگه منظورت همون باش که khz-web1 از دومین کد amateur_g باید بشه

Amateur_G
یک شنبه 19 خرداد 1387, 01:36 صبح
سلام.
ببين با ديد روي ديتابيس كار كردي؟
منظورم view است.
ميتوني يه ديد روي database بزاري كه اون جداولي كه مي خواي بهت بده.
يه امتحاني هم با يه function تو خود اكسس بكن ببين ميتوني تابعي بنويسي كه نام table به عنوان خروجي بده.منم اگه تونستم روش كار ميكنم ولي قول نميدم.شرمنده.
موفق باشيد.

Amateur_G
یک شنبه 19 خرداد 1387, 02:01 صبح
راستي براي توضيح كدي كه نوشتم بگم كه اين كد يك آرايه ميده كه نام table ها توي اون قرار داره اينم تابع كاملش(قابل نداره:چشمک:):



Public Function GetAccessTables(ByVal strAccessFilePath) As String()

Dim strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strAccessFilePath
Dim objConn As New OleDbConnection(strConn)
Dim intIndex As Integer

objConn.Open()

Dim dtTableNames As DataTable

dtTableNames = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables , _
New Object() {Nothing, Nothing, Nothing, "TABLE"})
Dim tblNames(dtTableNames.Rows.Count - 1) As String

objConn.Close()

For intIndex = 0 To dtTableNames.Rows.Count - 1

tblNames(intIndex) = dtTableNames.Rows(intIndex).Item("TABLE_NAME")

Next



GetAccessTables = tblNames

End Function


اگه بازم نشد بگيد وقت كردم بازم روش كار مي كنم.(يادتون نره من فقط يه آماتورم:چشمک:)
موفق باشيد.:تشویق:

kablayi
یک شنبه 19 خرداد 1387, 13:19 عصر
سلام به همه دوستان ...
آقا دست همتون درد نکنه ...
مشکل ما که حل نشد ...
یه جور دیگه پیاده سازیش میکنم ...

بازم ممنون ...

ha380403
یک شنبه 19 خرداد 1387, 22:12 عصر
البته از فانكنش بالا نميدانم چگونه بايد استفاده كنم ( مشاهده جداول يك ديتابيس در اكسس) علي اي حال اگر لطف بفرماييد و راهنمايي بفرماييد، بسيار متشكر هستم، متشكرتر خواهم بود. حسن اكبري

sh
یک شنبه 19 خرداد 1387, 22:28 عصر
از این کد ایده بگیر



http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=6325&lngWId=10

ha380403
دوشنبه 20 خرداد 1387, 17:49 عصر
دوست عزيز سلام و باز هم سلام - بسيار متشكرم. فانكشن بسيار خوبي است. من آن را اجرا كردم. ولي اينكه چگونه از آن در برنامه استفاده كنم، مشكل دارم. ولي داخل فانكشن كار خواهم كرد و نتيجه را به حضرتعالي اعلام خواهم نمود. حتماً شنيده اي كه ميگويند «نميدانم چگونه تشكر كنم» . شايد اين جمله، فقط يك تعارف باشد ولي من امروز واقعا به همين جمله رسيده ام و واقعا نميدانم چگونه از جنابعالي تشكر كنم. به هر صورت، خيلي خيلي ... ممنون و متشكر هستم . تو رو به خدا ارتباطت رو با حقير قطع نكن.
خدايت توفيق دهاد. حسن اكبري.

ha380403
دوشنبه 20 خرداد 1387, 18:33 عصر
چشمك عزيز، سلام، و باز هم سلام، نوشته بودي «از این کد ایده بگیر» و من همين كار رو كردم و مشكلم را به طور كامل حل كردم. نام جداول را از فاكنشن حضرتعالي به دست آوردم. با عرض معذرت در «كــد فانكنش» حضرتعالي با اجازه و معذرت دست بردم. براي اين كار بايستي: يك كليد و يك ليست باكس روي فرم داشته باشيم و كد ذيل را براي كليد مربوطه بنويسيم.
البته نام ديتابيس اكسس بنده «Molavi.mdb» ميباشد

Chesmak_GetAccessTables("Molavi.mdb", ListBox1).ToString()

فانكشن حضرتعالي نيز به صورت ذيل درآمده است:

Public Function Chesmak_GetAccessTables(ByVal strAccessFilePath As String, ByVal Lst As ListBox) As String
Dim strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strAccessFilePath
Dim objConn As New OleDbConnection(strConn)
Dim intIndex As Integer
objConn.Open()
Dim dtTableNames As DataTable
dtTableNames = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables , _
New Object() {Nothing, Nothing, Nothing, "TABLE"})
Dim tblNames(dtTableNames.Rows.Count - 1) As String
objConn.Close()
'Dim S As String = ""
For intIndex = 0 To dtTableNames.Rows.Count - 1
tblNames(intIndex) = dtTableNames.Rows(intIndex).Item("TABLE_NAME")
'S &= tblNames(intIndex) & vbCrLf
Lst.Items.Add(tblNames(intIndex))
Next
Return ""
End Function
تمام

1387/03/20
مخلص شما، حسن اكبري

Amateur_G
دوشنبه 20 خرداد 1387, 20:52 عصر
خوشحالم كه مشكل حل شد.
موفق باشيد.

parsavb
جمعه 24 خرداد 1387, 11:19 صبح
این رو یه نگاهی بنداز
http://barnamenevis.org/forum/attachment.php?attachmentid=19061&d=1213268239