PDA

View Full Version : نمایش inner join دو جدول در dataGridView



zahra111
شنبه 02 خرداد 1388, 00:27 صبح
سلام. می خوام بدونم با استفاده از ویزارد میشه inner join دو جدول رو در dataGridView نمایش داد؟ چطور؟
اگه بدون ویزارد بخوام انجام بدم ، کدش چیه؟ نمایش اطلاعات یه جدول درdataGridView رو با استفاده از کد می دونم اما واسه inner join دو جدول نمیدونم منبع داده dataGridView رو چطور به dataset وصل کنم؟

Mahdi1001
شنبه 02 خرداد 1388, 00:46 صبح
salam
in dastore Join dar Sql

Select "NameField"
From "NameTable1" join "NameTable2"
On "shartejoini" indastor 2jadvalo join mikone
inner join daghighan me3 join

pesar irooni
شنبه 02 خرداد 1388, 02:06 صبح
نمیدونم شما از dataset که خود .NET بصورت ویزارد تولید میکنه (فایهای XSD) استفاده میکنید یا نه؟
(قسمت Add -> New Item -> DataSet)
اگه استفاده کنید کافیه یه tableAdapter اضافه کنی که تو selectesh از دستوری که همراه با join هست استفاده میکنی. یعنی یه ویزارد میده مثل وقتی که میخوای تو sql یه view بصورت ویزارد تعریف کنی.
اگه استفاده نمیکنی میتونی یه view تو sql بسازی که inner join جدولات باشه و تو C# میتونی مثل یه table با view رفتار کنی.
حتی میتونی از یه sqlCommand استفاده کنی که دستورش همون دستوری که میخوای و یا حتی stored procedure.
روش دیگه ای هم هست که با استفاده از dataRelation و DataTable ها میتونی inner join بزنی که من پیشنهاد میکنم از روش اول یا دوم استفاده کنید.

HamidNazari
شنبه 02 خرداد 1388, 02:11 صبح
نمیدونم سوالتون رو درست متوجه شدم یا نه ولی فرقی نمی کنه که query شما یه select معمولیه یا با inner join یا حتی scalar . دیتاگرید هر چی رو بگیره همون رو نشون میده .

saeeedft
شنبه 02 خرداد 1388, 02:30 صبح
سلام،هیچ فرقی با یک دستور نمیکنه،درحالت یک جدولی شما فقط طلاعات رو از یک جدول می خونید،اما اینجا از دو جدول،فقط دستور inner join رو باید بنویسید .

zahra111
شنبه 02 خرداد 1388, 10:22 صبح
salam



in dastore Join dar Sql


Select "NameField"
From "NameTable1" join "NameTable2"
On "shartejoini" indastor 2jadvalo join mikone
inner join daghighan me3 join



اگه دقت کرده باشین نگفتم join رو بلدنیستم. سر اتصال به dataGridvewمشکل دارم.

zahra111
شنبه 02 خرداد 1388, 10:31 صبح
سلام،هیچ فرقی با یک دستور نمیکنه،درحالت یک جدولی شما فقط طلاعات رو از یک جدول می خونید،اما اینجا از دو جدول،فقط دستور inner join رو باید بنویسید .

مشکل سر اینه که تو کد نویسی بعد از اینکه dataGridView1.DataSource = DataSet1 قرار دادم dataGridView1.DataMember رو مساوی چی قرار بدم؟

pesar irooni
شنبه 02 خرداد 1388, 11:51 صبح
مشکل سر اینه که تو کد نویسی بعد از اینکه dataGridView1.DataSource = DataSet1 قرار دادم dataGridView1.DataMember رو مساوی چی قرار بدم؟

شما میتونی DataSource دیتاگریدتون رو یه Table و یا یه View قرار بدی و لازم نیست که حتما DataSet باشه. مثلا:

dataGridView1.DataSource = MyDataTable
یا

dataGridView1.DataSource = MyDataView
یا

dataGridView1.DataSource = DataSet1.Tables["MyTable"]

zahra111
شنبه 02 خرداد 1388, 12:31 عصر
شما میتونی DataSource دیتاگریدتون رو یه Table و یا یه View قرار بدی و لازم نیست که حتما DataSet باشه. مثلا:

dataGridView1.DataSource = MyDataTable
یا

dataGridView1.DataSource = MyDataView
یا

dataGridView1.DataSource = DataSet1.Tables["MyTable"]

مشکل من اینه که نمیدونم به جای mytable اسم کدوم جدول رو بنویسم چون دارم از join دوتا جدول استفاده می کنم.

zahra111
شنبه 02 خرداد 1388, 12:33 عصر
به نتیجه رسیدم:
;()dataGridView1.DataSource = DataSet1.Tables[0].DefaultView.ToTable

zahra111
شنبه 02 خرداد 1388, 12:38 عصر
کسی می دونه با استفاده از ویزارد چطور می تونم inner join دوتا جدول رو در dataGridView نمایش بدم؟

pesar irooni
شنبه 02 خرداد 1388, 13:51 عصر
شما سوال من رو جواب ندادید که از فایلهای XSD استفاده میکنید یا نه؟
شما با استفاده از ویزارد میتونی یه جدول بسازی که innerjoin دوتا جدول هست و برای bind کردن به دیتاگرید حتما باید از همون خاصیت DataSource استفاده کنی.
ابتدا روی پروژه راست کلیک میکنی Add ->New Item -> DataSet
و بعد روی صفحه ای که جلوتون باز شده راست کلیک کرده Add-> TableAdapter رو میزنی. بعد بصورت ویزارد connection رو تعریف میکنی و یا همون connection string ای که تو پروژه داری ازش استفاده میکنی بکار میبری و بعد از چند تا next یه صفحه جلوت باز میشه که ازت میخواد عبارت select مورد نظرت رو بنویسی. اینجا میتونی دکمه Query Builder رو بزنی تا join ات رو بصورت ویزارد بسازی. بعد هم که فینیش.
بعد کافیه یه dataGridView رو فرمت بندازی و از اون فلش کوچیک که سمت راست بالای گرید هست و از قسمت choose data source این جدولی رو که ساختی (یعنی inner join دو تا جدول) و از داخل DataSet که احتمالا بنام DataSet1 هست انتخاب کنی.
همه اینها 1 دقیقه هم طول نمیکشه.

mosafer_deltang
شنبه 09 خرداد 1388, 17:55 عصر
شما سوال من رو جواب ندادید که از فایلهای XSD استفاده میکنید یا نه؟
شما با استفاده از ویزارد میتونی یه جدول بسازی که innerjoin دوتا جدول هست و برای bind کردن به دیتاگرید حتما باید از همون خاصیت DataSource استفاده کنی.
ابتدا روی پروژه راست کلیک میکنی Add ->New Item -> DataSet
و بعد روی صفحه ای که جلوتون باز شده راست کلیک کرده Add-> TableAdapter رو میزنی. بعد بصورت ویزارد connection رو تعریف میکنی و یا همون connection string ای که تو پروژه داری ازش استفاده میکنی بکار میبری و بعد از چند تا next یه صفحه جلوت باز میشه که ازت میخواد عبارت select مورد نظرت رو بنویسی. اینجا میتونی دکمه Query Builder رو بزنی تا join ات رو بصورت ویزارد بسازی. بعد هم که فینیش.
بعد کافیه یه dataGridView رو فرمت بندازی و از اون فلش کوچیک که سمت راست بالای گرید هست و از قسمت choose data source این جدولی رو که ساختی (یعنی inner join دو تا جدول) و از داخل DataSet که احتمالا بنام DataSet1 هست انتخاب کنی.
همه اینها 1 دقیقه هم طول نمیکشه.
سلام امیدوارم با این که چند روز از ایجاد این تاپیک گذشته دوستان جواب من رو هم بدن
میشه بگین چرا بعد از ایجاد یک join روی دو جدول توی این قسمت Query Builder دیگه نمیشه عمل update رو با دستور زیر انجام داد

objTableAdapter.Update(objDataSet)

pesar irooni
شنبه 09 خرداد 1388, 19:10 عصر
چون بعد از زدن یه join روی دوتا جدول ما دیگه جداول اصلی رو نداریم و داریم با یه جدول مجازی (درست مثل view) کار میکنیم. یعنی هر وقت که شما میخوای از این جدولی که ساختی select انجام بدی اون اول join رو انجام میده و بعد select رو روی داده های برگشتی اجرا میکنه. اگه میخوای update انجام بدی بصورت تک تک با نوشتن یک کوئری (با راست کلیک روی جدول توی دیتاست و زدن AddQuery...) انجام بده.

mosafer_deltang
یک شنبه 10 خرداد 1388, 02:12 صبح
اگه میخوای update انجام بدی بصورت تک تک با نوشتن یک کوئری (با راست کلیک روی جدول توی دیتاست و زدن AddQuery...) انجام بده.
میشه درباره این قسمت بیشتر توضیح بدین
مثلا کوئری update که تو این قسمت بنویسم کی و کجا و چه جوری فراخوانی میشه؟
یعنی چی به صورت تک تک

pesar irooni
یک شنبه 10 خرداد 1388, 03:27 صبح
یعنی یه update روی جدول اولی و بعد یه update روی جدول دومی.

update table1
set .....
where ...
update table2
set .....
where ...
شما فرض کن داری یه store procedure مینویسی. table adapter ها تو اینجا (فایلهای xsd) فقط ارتباط شما رو با دیتابیس برقرار میکنه با یه سری تسهیلات برای کوئری نویسی.