PDA

View Full Version : سوال: مشکل در برگداندن یک مقدار در دیتاتیبل



hercool
پنج شنبه 17 مرداد 1392, 19:14 عصر
سلام دوستان
مشکل این کدم اینه که مقدار رو داخل دیتاتیبل نمی کنه
البته کد من که مشاهده می کنید یک مقدار بیشتر بر نمی گردونه من فکر کردم برزیمش داخل دیتا تیبل اما ارور میده که همچنین ستونی نامعتبره هست زمانی که ادا\تور می خواد مقدار رو داخل دیتاتیبل \ر کنه
ممنون میمش کمکم کنید که چطور مقدار برگشتی رو بریزم داخل دیتاتیبل یا یک متغییر البته یک مقدار بیشتر نیست که از نوع int هم هست
کد خطا

Invalid column name 'MB
کد برنامه

private void button1_Click(object sender, EventArgs e)
{
string cod = textBox1.Text;
SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT idname from namefield where nametable="+cod, con);
SqlDataAdapter ada = new SqlDataAdapter(com);
DataTable dt = new DataTable();
ada.Fill(dt);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
MessageBox.Show("" + row[column]);
}
}
}

sohil_ww
پنج شنبه 17 مرداد 1392, 19:30 عصر
private void button1_Click(object sender, EventArgs e)
{
string cod = textBox1.Text;
SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT idname from namefield where nametable="+cod, con);
com.executenumqury();
SqlDataAdapter ada = new SqlDataAdapter(com);
DataTable dt = new DataTable();
ada.Fill(dt);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
MessageBox.Show("" + row[column]);
}
}

البته با Vs نزدمو همینجا ویرایش کردم

hercool
پنج شنبه 17 مرداد 1392, 19:44 عصر
سهیل جان بابت پاسخت ممنون
اما نه بازم همون ارور رو میده

sohil_ww
پنج شنبه 17 مرداد 1392, 20:23 عصر
دوست عزیز سورستو بزار ببینم می شه کاریش کرد

hercool
پنج شنبه 17 مرداد 1392, 20:35 عصر
من چون برنامه اصلیم به مشکل خورد یدونه نمونه کوچیک گرفتم که بازم مشکل داشت
این کل سورس تست کوچیک هست
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}



private void button1_Click(object sender, EventArgs e)
{
string cod = textBox1.Text;
SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True"); con.Open();
SqlCommand com = new SqlCommand("SELECT idname from namefield where nametable=" + cod, con);
com.ExecuteNonQuery();
SqlDataAdapter ada = new SqlDataAdapter(com);
DataTable dt = new DataTable();
ada.Fill(dt);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
MessageBox.Show("" + row[column]);
}
}

}

sohil_ww
پنج شنبه 17 مرداد 1392, 21:13 عصر
بیا دوست عزیز موفق باشی

هرکول (http://uplod.ir/8tappj9gtffb/sarch_in_stimul.zip.htm)

فقط کانکشن استرینگشو خودت عوض کن
وقتی آپ کردم یادم افتاد

amir200h
پنج شنبه 17 مرداد 1392, 21:24 عصر
1-دوست من نوع فیلدی می داری باهاش شرطتو چک میکنی چیه؟
2- آیا مقدار تکست باکست فارسیه؟ یعنی شرطتو با یک رشته فارسی داری مقایسه میکنی؟

hercool
پنج شنبه 17 مرداد 1392, 21:27 عصر
نه شرط مقدارش کلمه انگلیسی هست

hercool
پنج شنبه 17 مرداد 1392, 21:35 عصر
سهیل جان زحمت کشیدی ممنون
اما دو تا مشکل یکیش اینه که من ریپورتر ندارم که حتی رفرنس بهش بدم
دوم اینه که من فقط اون مقدار رو می خوام یعنی من تهنا یه شماره دو رقمی که شماره id هست رو می خوام راهی سراغ داری که بشه این کار رو کرد؟

Mahmoud.Afrad
پنج شنبه 17 مرداد 1392, 21:45 عصر
hercool (http://barnamenevis.org/member.php?46942-hercool) خان اگر برای استفاده در کمبوباکس میخوای راهه اشتباهی رو انتخاب کردی.

hercool
پنج شنبه 17 مرداد 1392, 22:04 عصر
نه مقدار رو می خوام در جایی دیگه استفاده کنم کار با کمبو باکس هام تموم شده این مقداری که دارم میگیرم هم مربوط میشه به همون گرفتن شماره ای دی که اینجا توضیحش رو دادم

مهرداد صفا
پنج شنبه 17 مرداد 1392, 22:25 عصر
با سلام.
دو تا سوال در مورد کد شما:
متن خطا گفته ستونی به نام MB در جدول وجود ندارد در حالیکه شما ستون idname را خواستید! آیا این خطا مربوط به همین کد است؟
چرا مقداری که در شرط برای tablename چک می کنید را داخل '' قرار ندادید؟

"select idname from foo where tablename='"+cod+"'"///....

برای گرفتن مقدار هم می توانید از SqlDataReader به جای DataTable استفاده کنید. به این صورت:

SqlCommand command=new SqlCommand("your query",new SqlConnection(your ConnectionString));
command.Connection.Open();
SqlDataReader reader=command.ExecuteNonQuery();
reader.Read();
MessageBox.Show(reader[0].ToString());

hercool
جمعه 18 مرداد 1392, 08:34 صبح
مهرداد جان ممنون بابت پاسخت بزار اینجوری بگم
چند تا کمبو باکس دارم که هر کدوم به جدول وصل میشه
هر کدوم با مقادیر فیلد های جدول در valuemember و displaymember وصل شدن
حالا بحث سر اخرین کمبوباکس هست
من زمانی که روی کمبو باکس چهارم گزینه ای رو که فارسی هست رو انتخاب می کنم valuemember اش به مقدار ستونی در جدولم وصل میشه که با نام tablename وصل هست من اون مقدار رو با selectvalue میگیرم و میریزم داخل متغییری به نام codename میریزم(+code که شما نشون دادی)
تا اینجا مقدار معادل فارسی رو دارم حالا می خوام شماره ای دی رو در اون جدول بدست بیارم تا روش یه سری کار روی اون انجام بده اما مشکل اینجاست که نمیتونه این کار رو کنه
میاد زمانی که می خواد اداپتور مقدار رو توی دیتاتیبل پر کنه این ارور رو میده
مثلا زمانی که روی نام (فروش)کلید می کنم و باتن رو کلید می کنم تا مقدار ای دی رو بر گردونه ارور میده و متن ارور Invalid column name 'pis_Sales'. این است که pis_Sales برابر نام انگلیسی فروش هست

hercool
جمعه 18 مرداد 1392, 11:00 صبح
اومدم با linq کار کنم ارور نمیده اما کد بهم پس میده مقدار نیست
کد رو میزارم
linq1DataContext name = new linq1DataContext();
var que = from m in name.namefields where m.nametable == codename select m.idname;
MessageBox.Show("" + que);
}

public string nametable { get; set; }
}

اینم مربوط به خود کلاسش هست
namespace datasetcombo
{
partial class namefield
{
//public int idname { get; set; }
//public string nametable { get; set; }
//public string namefarsi { get; set; }
//public int number { get; set; }
}

partial class linq1DataContext
{
public int idname { get; set; }
public string nametable { get; set; }
public string namefarsi { get; set; }
public int number { get; set; }
}
}

hercool
جمعه 18 مرداد 1392, 11:29 صبح
یه پروژه کوچیک هم درست کردم که به صورت ایستا فقط یه مقدار رو برگدونه بازم نشد این دیگه چرا خودم هم نمی دونم

namespace testlinq
{
public partial class Form1 : Form
{
string note = "MB_Longtermdebt";
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
topDataContext content = new topDataContext();
var query = from p in content.namefields where p.nametable == note select p.idname;
dataGridView1.DataSource = query;
}
}
}