PDA

View Full Version : سوال: select نشدن ا طلاعات از جدول ؟



vB.N3T
جمعه 10 آذر 1391, 16:11 عصر
دوستان مشکل این کد چیه ! اطلاعات رو نمیکشه بیرون


SqlConnection con = new SqlConnection();
SqlDataAdapter data;
DataSet g = new DataSet();
con.ConnectionString = "server=localhost;database=a;integrated security=true";
data = new SqlDataAdapter("select * from tbl_sabt_moshtari", con);
data.Fill(g);
dataGridView1.DataSource = g;

Mahmoud Zaad
جمعه 10 آذر 1391, 16:33 عصر
سلام
دیتاست برای نگهداری مجموعه ای از جدول ها هست و دیتا تیبل برای نگهداری اطلاعات (ستون ها و سطرها). پس شما باید از یه دیتاتیبل استفاده کنید. در ضمن وقتی یه جدول دارید نیاز به استفاده از دیتاست نیست. به نظرم کد رو به شکل زیر تغییر بدید:
SqlConnection con = new SqlConnection();
SqlDataAdapter data;
DataTable g = new DataTable();
con.ConnectionString = "server=localhost;database=a;integrated security=true";
data = new SqlDataAdapter("select * from tbl_sabt_moshtari", con);
data.Fill(g);
dataGridView1.DataSource = g;

vB.N3T
جمعه 10 آذر 1391, 16:46 عصر
بله درسته اما تو یه فیلم اموزشی دیدم به دیتا ست اطلاعات رو سلکت میکرد من هم دقیقا همون کد رو نوشتم انا عمل نکرد

vB.N3T
جمعه 10 آذر 1391, 17:02 عصر
عکس کد ها رو ضمینه کردم که تو فیلم هست95822

plus
جمعه 10 آذر 1391, 17:09 عصر
عکس کد ها رو ضمینه کردم که تو فیلم هست95822
شما بخش مربوط به Table Mapping که توی تصویر هست رو انجام ندادی.
بدون اون هم میشه فقط شما باید یه خط دیگه به کدتون اضافه کنی:


dataGridView1.DataMember = "tbl_sabt_moshtari";

اینطوری به گرید میگین که کدوم Table از DataSet رو انتخاب کنه.

Mahmoud Zaad
جمعه 10 آذر 1391, 17:09 عصر
شدن که میشه، ولی شما قسمت سومی که دورش خط کشیدید خط دوم رو ننوشته بودید یعنی این خط : dataGrid.DataMember="afrad";

vB.N3T
جمعه 10 آذر 1391, 17:28 عصر
اره تیبل مپ که اضافه هست اونو میتونیم از خاصیت (Collection) خود دیتا گرید تنظیمش کردن خیلی هم بهتر

این قطعه کد دقیقا کارش چیه
dataGridView1.DataMember = "tbl_sabt_moshtari";

plus
جمعه 10 آذر 1391, 19:35 عصر
اره تیبل مپ که اضافه هست اونو میتونیم از خاصیت (Collection) خود دیتا گرید تنظیمش کردن خیلی هم بهتر

این قطعه کد دقیقا کارش چیه
dataGridView1.DataMember = "tbl_sabt_moshtari";

DataSet که شما به عنوان DataSource به Grid دادی به خودش نمیتونه منبع نمایش داده واسه Grid باشه چون مجموعه ای از DataTable ها رو نگه میداره.واسه همین به Grid میگی که کدام عضو از DataSet رو برای نمایش انتخاب کنه.

این


DataSet g = ...
..
dataGridView1.DataSource = g;
dataGridView1.DataMember = "tbl_sabt_moshtari";

یه جورایی به این معادل هست:


DataSet g = ...
..
dataGridView1.DataSource = g.Tables["tbl_sabt_moshtari"];

DataTable نوع داده مناسب واسه نمایش در Grid هست نه DataSet.

vB.N3T
جمعه 10 آذر 1391, 23:10 عصر
این خط هم اضافه کردم اما باز مشکل داره

dataGridView1.DataMember = "tbl_sabt_moshtari";

vB.N3T
جمعه 10 آذر 1391, 23:19 عصر
کد ها اینه

SqlConnection con = new SqlConnection();
SqlDataAdapter data;
DataSet g = new DataSet();
con.ConnectionString = "server=localhost;database=workshop;integrated security=true";
data = new SqlDataAdapter("select * from tbl_sabt", con);
data.Fill(g);
dataGridView2.DataSource = g;
dataGridView2.DataMember = "tbl_sabt";
خطا این

Child list for field tbl_sabt cannot be created

plus
جمعه 10 آذر 1391, 23:54 عصر
شما بعد از data.Fill یک MessageBox بگذار و ببین اسم جدولی که به DataSet اضافه شده چیه؟


MessageBox.Show(g.Tables[0].TableName);

این اسم باید به عنوان مشخصه DataMember برای Grid تعیین بشه.البته با استفاده از BreakPoint گذاشتن و Watch هم میتونی اسم Table رو ببینی چیه.

vB.N3T
شنبه 11 آذر 1391, 00:04 صبح
بله با این ترفند نام table رو برگردوند در صورتی که من تو دیتا بیسم 3 تا تیبل دارم که هیچکدومشون اسمش table نیست
باز با این حال من کد رو به این صورت تغیر دادم

dataGridView2.DataMember = "table";
و فقط و فقط فیلد نیم جدول رو نمایش داد در صورتی که حدود 5 تا فیلد داره جدول

plus
شنبه 11 آذر 1391, 00:41 صبح
بله با این ترفند نام table رو برگردوند در صورتی که من تو دیتا بیسم 3 تا تیبل دارم که هیچکدومشون اسمش table نیست
باز با این حال من کد رو به این صورت تغیر دادم

dataGridView2.DataMember = "table";
و فقط و فقط فیلد نیم جدول رو نمایش داد در صورتی که حدود 5 تا فیلد داره جدول

من زیاد با DataAdapter کارنکردم الان چک کردم دیدم حالا که شما کدهای مربوط به mapping که در تصویر هست رو برداشتی، باید موقع Fill، یک اسم دلخواه به عنوان اسم Table بدی:



SqlConnection con = new SqlConnection();
SqlDataAdapter data;
DataSet g = new DataSet();
con.ConnectionString = "server=localhost;database=a;integrated security=true";
data = new SqlDataAdapter("select * from tbl_sabt", con);
data.Fill(g, "SabtTable");
dataGridView1.DataSource = g;
dataGridView1.DisplayMember = "SabtTable";