PDA

View Full Version : دریافت اطلاعات کوئری در یک متغیر که به هیچ ارتباطی به گرید ویو نداشته باشه



amnhck123
سه شنبه 03 دی 1392, 18:11 عصر
ببینید دوستان من هرچی توی اینترنت دنبال این گشتم که نتایج یک کوئری در یک متغیر یا یک آرایه ذخیره بشه هیچی پیدا نکردم حتی توی فیلم های آموزشی هم این مورد رو میان همش به گرید ویو میچسبوننش
من اومدم یک متد توی فایل XSD (دیاگرام دیتابیس) تعریف کردم که چند تا مقدار رو برمیگردونه حالا چطوری میتونم خروجی این کوئری رو توی یک آرایه و یا یک متغیر ذخیره کنم .
این هم کوئری من
http://p30up.ir/images/jaw8n5o2f56v6ri2o6gk.png
مثلا من به خیال خودم اومدم اینطوری این کار رو کردم ولی این خط کد کار نمیکنه :


string username = "amin";
label1.Text = tbl_UsersTableAdapter.GetFullname(@username).ToStr ing();

sohil_ww
سه شنبه 03 دی 1392, 18:20 عصر
از دیتا ست و دیتاتیل می تونی استفاده کنی

amnhck123
سه شنبه 03 دی 1392, 18:22 عصر
از دیتا ست و دیتاتیل می تونی استفاده کنی
عزیز خیلی ممنون که جواب دادی ولی من تازه اومدم توی دات نت میشه دقیقا بگی چطوری باید از اینا استفاده کنم . به شدت پروژم گیر کرده به این موضوع

amnhck123
سه شنبه 03 دی 1392, 19:05 عصر
دوستان دیگه میشه بگین دقیقا سینتکس دستوراتی که باید استفاده کنم چی هست؟

abbas.oveissi
سه شنبه 03 دی 1392, 19:07 عصر
من توی اینجا (آخرش) نشون دادم چه جوری میشه نتیجه رو ریخت توی دیتاست،بعد از اونجا میتونی هرکار میخوای بکنی : http://barnamenevis.org/showthread.php?433413-%DA%A9%D8%B3%DB%8C-%D9%86%DB%8C%D8%B3-%D8%AC%D9%88%D8%A7%D8%A8-%D9%85%D9%86%D9%88-%D8%A8%D8%AF%D9%87%D8%9F%DA%A9%D8%AF-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-sql-%D8%B1%D9%88-%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%85
البته یه روش دیگه هم هست که کوئری بزنی ،بعد یه حلقه بذاری و تک تک رکورد هارو بخونی و هرکاری میخوای باهاشون بکنی.نیازی به دیتاست و ... هم نیست.

amnhck123
سه شنبه 03 دی 1392, 19:46 عصر
عزیز ممنون تاپیک رو دیدم ولی دقیقا نفهمیدم باید چی کارکنم
شما اگر اون دو خط کدی که من نوشتم و اون عکسی که فرستادم رو نگاه کنید فکر کنم دقیقا متوجه بشید من چی میخوام
من از اون روش استفاده کردم ولی توی این روش کوئری مستقیما زده شده

abbas.oveissi
سه شنبه 03 دی 1392, 19:59 عصر
عزیز ممنون تاپیک رو دیدم ولی دقیقا نفهمیدم باید چی کارکنم
شما اگر اون دو خط کدی که من نوشتم و اون عکسی که فرستادم رو نگاه کنید فکر کنم دقیقا متوجه بشید من چی میخوام
من از اون روش استفاده کردم ولی توی این روش کوئری مستقیما زده شده

آخه این خط شما اصن کلا نباید اجرا بشه،فکر کنم مشکل داره :label1.Text = tbl_UsersTableAdapter.GetFullname(@username).ToStr ing();واسه همین درک نکردم چیه منظورتون

amnhck123
سه شنبه 03 دی 1392, 20:17 عصر
ببین عزیز من یک متد کوئری درست کردم به نام Getfullname که یک ورودی به اسم username رو به عنوان پارامتر میگیره
حالا من از طریق تیبل آداپتور اون متد رو فراخونی کردم و پارامتر رو هم بهش ارسال کردم
بعد من یک لیبل دارم که خاصیت تکست اون رو مساوی این خط کد قرار دادم
(به حساب خودم این خط کد خروجیش میشه همون مقدار خروجی کوئری من ) که البته این طوری نشد و وقتی برنامه رو اجرا میکنم همون lable1 رو مینویسه

sohil_ww
سه شنبه 03 دی 1392, 20:33 عصر
ببین عزیز من یک متد کوئری درست کردم به نام Getfullname که یک ورودی به اسم username رو به عنوان پارامتر میگیره
حالا من از طریق تیبل آداپتور اون متد رو فراخونی کردم و پارامتر رو هم بهش ارسال کردم
بعد من یک لیبل دارم که خاصیت تکست اون رو مساوی این خط کد قرار دادم
(به حساب خودم این خط کد خروجیش میشه همون مقدار خروجی کوئری من ) که البته این طوری نشد و وقتی برنامه رو اجرا میکنم همون lable1 رو مینویسه

دوست عزیز با صحبت های که شما کردی نباید مقدارو برابر با labe1 یک قرار بده بلکه باید اونو یه متن مثل system.row یا یه چیزی شبیه این (چون دقیق نمی دونم کوئری چی هست )


ولی برای این که مقدایر و بریزی تو دیتاست Sql dataadabter یه متد داره به نام fill که می تونی از اون استفاده کنی

خیلی خیلی این ها تو همین سایت توضیح داده شدن یه سرچ بزن پیدا می کنی ) موفق باشی

abbas.oveissi
سه شنبه 03 دی 1392, 20:35 عصر
ببین عزیز من یک متد کوئری درست کردم به نام Getfullname که یک ورودی به اسم username رو به عنوان پارامتر میگیره
حالا من از طریق تیبل آداپتور اون متد رو فراخونی کردم و پارامتر رو هم بهش ارسال کردم
بعد من یک لیبل دارم که خاصیت تکست اون رو مساوی این خط کد قرار دادم
(به حساب خودم این خط کد خروجیش میشه همون مقدار خروجی کوئری من ) که البته این طوری نشد و وقتی برنامه رو اجرا میکنم همون lable1 رو مینویسه

ببخشید حواسم نبود شما از GetFullName استفاده کردید،من حواسم به Fill بود :لبخندساده:
بعد پارامتر ورودی نیازی به @ ندارده دیگه ،همون میتونی بنویسی username. نکته ی بعد هم اینه مقدار بازگشتی این تابع از جنس DataTable هست و نمیتونی toString کنی نمایشش بدی.
میتونی اینکارو بکنی :Database1DataSet1.tbl_UsersDataTable d= tbl_UsersTableAdapter.GetFullname(username);
object[] obj=d.Rows[0].ItemArray; //recorde avalo migiire
MessageBox.Show(obj[2].ToString()); //sotoone sevome record ro neshoon mide

amnhck123
سه شنبه 03 دی 1392, 20:39 عصر
عزیز خیلی ممنون ولی من کارم خیلی فوری هست میشه خودتون همین چند خطی که میگید که خروجیش به صورت دیتاتیبل هست رو همین جا برام بنویسید؟
پروژم لنگ همین مونده

amnhck123
سه شنبه 03 دی 1392, 20:43 عصر
من اینطوری تغییر دادم ولی بازم جواب رو نشون نمیده میشه بگی مشکل از کجاست ؟


string username = "amin";
DataTable dt = new DataTable();
dt= tbl_UsersTableAdapter.GetFullname(username);
label1.Text = dt.Rows[0]["fullname"].ToString();

abbas.oveissi
سه شنبه 03 دی 1392, 20:48 عصر
من اینطوری تغییر دادم ولی بازم جواب رو نشون نمیده میشه بگی مشکل از کجاست ؟


string username = "amin";
DataTable dt = new DataTable();
dt= tbl_UsersTableAdapter.GetFullname(username);
label1.Text = dt.Rows[0]["fullname"].ToString();
اگر دقت کنید من مقدار بازگشتی رو نریختم توی DataTable ،ریختم توی Database1DataSet1.tbl_UsersDataTable که Database1DataSet1 اسم دیتاست ام هست و همون tbl_UsersDataTable اسم دیتاتیبل ام.

amnhck123
سه شنبه 03 دی 1392, 20:57 عصر
دو تا نکته :
1- من اسم دیتاستم هست DBHozsehdataset ولی بهش گیر میده

houzehDBDataSet.tbl_Users d = tbl_UsersTableAdapter.GetFullname(username);
2-اون کدی که من نوشتم و به جای دیتاست از دیتاتیبل استفاده کردم مشکلش کجاست که ارور نمیده ولی کار هم نمیکنه؟

abbas.oveissi
سه شنبه 03 دی 1392, 21:02 عصر
1- چرا گیر میده؟؟قانونا که باید درست باشه.
2- کد خودت رو اینجوری کن،شاید کار بکنه : dt.Rows[0][1].ToString();حدس میزنم که وقتی از DataTable شیء ساختی ،اسم ستون ها رو نمیشناسه.

amnhck123
سه شنبه 03 دی 1392, 21:29 عصر
1-کد خودم رو اون تغییری که شما گفتید رو هم انجام دادم ولی کد خودم انجام نشد
2- یک عکس از کد شما هم گذاشتم که خود ویژوال استودیو تشخیصش میده ولی بعد که پر میکنم متن رو ارور میده ارورش هم اینه

Error 5 'Houzeh.FrmMain.houzehDBDataSet' is a 'field' but is used like a 'type'

amnhck123
سه شنبه 03 دی 1392, 21:45 عصر
آقا فکر کنم مشکل کد من چیز دیگه ای بود چون الان که اجراش میکنم این ارور رو میده

http://p30up.ir/images/wm2htkdbfi098gt7no4.png

abbas.oveissi
سه شنبه 03 دی 1392, 22:21 عصر
آقا فکر کنم مشکل کد من چیز دیگه ای بود چون الان که اجراش میکنم این ارور رو میده

http://p30up.ir/images/wm2htkdbfi098gt7no4.png

خب باید اسم کلاس رو بنویسی ، نه اینکه یک شیء .اسم دیتاست رو بنویس بعد نقطه بذار بعدش اسم دیتاتیبل.
ببین از روی کد زیر منظورمو میفهمی :class Book
{
int a;
public book(int _a)
{
this.a=_a;
}
}


///// man migam ino beneviis
Book a= ....


//// to injoorii neveshtii ke error dade
Book b1;
b1 a= ....

amnhck123
چهارشنبه 04 دی 1392, 00:27 صبح
با تشکر از آقا عباس گل مشکل رفع شد