PDA

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



pooya1072
یک شنبه 20 اسفند 1391, 17:18 عصر
سلام
من توی برنامه ام یک دیتابیس اسکیوال را فراخوانی کردم که حاوی یک جدول است.حالا توی برنامه این بانک رو توی یک دیتاست قرار دادم .با این دستور جدول در دیتاگریدویو نمایش داده نمیشه :







dgvNFC2.DataSource = NFFeedDataSet.Tables("T1")


ولی اگه به جای نام ایندکس جدول رو بزارم درست میشه :








dgvNFC2.DataSource = NFFeedDataSet.Tables(0)


به همین ترتیب من با به دست آوردن نام جدول اسکیوال مشکل دارم.
مشکل کار کجاست ؟

the king
یک شنبه 20 اسفند 1391, 18:31 عصر
سلام
من توی برنامه ام یک دیتابیس اسکیوال را فراخوانی کردم که حاوی یک جدول است.حالا توی برنامه این بانک رو توی یک دیتاست قرار دادم .با این دستور جدول در دیتاگریدویو نمایش داده نمیشه :






اول ببینید چه tablename و namespace ای رو اعلام می کنه :






dgvNFC2.DataSource = NFFeedDataSet.Tables("T1")


ولی اگه به جای نام ایندکس جدول رو بزارم درست میشه :








dgvNFC2.DataSource = NFFeedDataSet.Tables(0)


به همین ترتیب من با به دست آوردن نام جدول اسکیوال مشکل دارم.
مشکل کار کجاست ؟


یکبار و فقط یکبار این کد رو اجرا کنید :

Dim tbl As DataTable = NFFeedDataSet.Tables(0)
Clipboard.Clear()
Clipboard.SetText(String.Format( _
"dgvNFC2.DataSource = NFFeedDataSet.Tables(""{0}"", ""{1}"")" _
, tbl.TableName, tbl.Namespace) + vbNewLine _
+ String.Format("dgvNFC2.DataSource = NFFeedDataSet.Tables(""{0}"")" _
, tbl.TableName))


بعد کد بالا رو پاک کنید و همونجا که قبلا کد بالا رو نوشته بودید با Ctrl + V متنی که در حافظه Clipboard است Paste کنید.
دو تا سطر کد می نویسه که از یکی شون باید استفاده کنید. سطر اولی قطعا جواب میده اما دومی ممکنه کار نکنه.
اگر سطر دوم کدی که می نویسه همونی باشه که شما قبلا نوشته بودید از سطر اول استفاده کنید،
وگرنه اسم جدول رو اشتباه نوشته بودید و سطر دوم درست ئه.

pooya1072
یک شنبه 20 اسفند 1391, 19:10 عصر
با تشکر از شما دوست عزیز
متن زیر محتوی کلیپ بورد بعد از اجرای دستوره :

dgvNFC2.DataSource = NFFeedDataSet.Tables("Table", "")
dgvNFC2.DataSource = NFFeedDataSet.Tables("Table")
ولی اسم جدولی که من توی sql ایجاد کردم t1 بوده .نمی دونم چرا این اسم رو قبول نمی کنه!!!
این مجموعه دستورات اتصال بوده که من اجرا کردم .
دقت کنید میبینید که Command مربوط به دیتا آداپتور هم جدول T1 رو معرفی کرده!



Dim RowNumber As Integer = 0
Dim cn As New SqlConnection
cn.ConnectionString = "Data Source=pooyan-pc\SQLEXPRESS;Initial Catalog=Faravaresh Produce Control;UID=pooya1072;password=ahmadreza"
cn.Open()
Dim NFFeddDataAdapter As SqlDataAdapter = New SqlDataAdapter("select * from dbo.T1", cn)
NFFeddDataAdapter.Fill(NFFeedDataSet)
dgvNFC2.DataSource = NFFeedDataSet.Tables(0)

the king
یک شنبه 20 اسفند 1391, 19:55 عصر
با تشکر از شما دوست عزیز
متن زیر محتوی کلیپ بورد بعد از اجرای دستوره :

dgvNFC2.DataSource = NFFeedDataSet.Tables("Table", "")
dgvNFC2.DataSource = NFFeedDataSet.Tables("Table")
ولی اسم جدولی که من توی sql ایجاد کردم t1 بوده .نمی دونم چرا این اسم رو قبول نمی کنه!!!
این مجموعه دستورات اتصال بوده که من اجرا کردم .
دقت کنید میبینید که Command مربوط به دیتا آداپتور هم جدول T1 رو معرفی کرده!



Dim RowNumber As Integer = 0
Dim cn As New SqlConnection
cn.ConnectionString = "Data Source=pooyan-pc\SQLEXPRESS;Initial Catalog=Faravaresh Produce Control;UID=pooya1072;password=ahmadreza"
cn.Open()
Dim NFFeddDataAdapter As SqlDataAdapter = New SqlDataAdapter("select * from dbo.T1", cn)
NFFeddDataAdapter.Fill(NFFeedDataSet)
dgvNFC2.DataSource = NFFeedDataSet.Tables(0)


Fill کردن اون NFFeedDataSet باعث منتقل شدن اسم جداول مثل نام T1 نمیشه، اسم پیشفرض Table ها اگر یکی باشه "Table" ئه و
اگه بیشتر باشه "Table1" و "Table2" و ... شما هم کاری نکردید که این اسامی تغییر کنه.


Dim NFFeddDataAdapter As New SqlDataAdapter("select * from dbo.T1", cn)
Dim NFFeedDataTable As New DataTable()
NFFeddDataAdapter.Fill(NFFeedDataTable)
NFFeddDataAdapter.FillSchema(NFFeedDataTable, SchemaType.Source)
dgvNFC2.DataSource = NFFeedDataTable

hamzeh2009
جمعه 03 خرداد 1392, 10:23 صبح
روش استفاده صحیح :


NFFeddDataAdapter.Fill(NFFeedDataSet,"T1")


dgvNFC2.DataSource = NFFeedDataSet.Tables("T1")