PDA

View Full Version : خطا مربوط به Select چند قیلد در بانک و نمایش آنها. ارور رو ببینید.



RIG000
چهارشنبه 07 اردیبهشت 1390, 15:07 عصر
این کد ها
string strq = String.Format("select id,sum (zarfiyat) ,gheymat,shomareparvande from table2 where id=2");
DataSet DS1 = new DataSet();
DS1.Clear();
OleDbConnection con = new OleDbConnection();


OleDbDataAdapter da = new OleDbDataAdapter();
con.ConnectionString = databaseAddress;
da.SelectCommand = new OleDbCommand();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = strq;
da.SelectCommand.CommandType = CommandType.Text;
da.Fill(DS1, "Tbl1");
con.Close();

اینم ارور

You tried to execute a query that does not include the specified expression 'id' as part of an aggregate function.
این query من مشکل داره نمیدونم چه شکلی میشه نوشت تا کاری که من میخام رو انجام بده

f_naderi
چهارشنبه 07 اردیبهشت 1390, 15:40 عصر
سلام مشکل query شما اینه که فیلدهایی رو در کنار تابع sum استفاده کردید ولی این فیلدها را در group by قرار نداده اید

RIG000
چهارشنبه 07 اردیبهشت 1390, 16:01 عصر
میشه query رو تصحیح کنید؟

RIG000
چهارشنبه 07 اردیبهشت 1390, 16:11 عصر
در ضمن یه مشکلی هم هست ببینید من تو حدولم تو بانک فیلد zarfiyat رو دارم خب ؟ اما اینجا دارم sum رو از ش میکشم. اگه این کد جواب هم بده بازهم تو کریستال ریپورت نشونش نمیده چون من یه دیتا ست درست کردم و خود فیلد zarfiyat رو تو بانک بهش اضافه کردم تو کریستال . نمونه برنامه رو میزارم بهتره ببینید . خیلی ممنون میشم مشکلمو حل کنین.

RIG000
چهارشنبه 07 اردیبهشت 1390, 17:16 عصر
کسی بلد نبود؟

RIG000
چهارشنبه 07 اردیبهشت 1390, 19:24 عصر
یکی لطفا کمک کنه .

gerdioz
چهارشنبه 07 اردیبهشت 1390, 21:52 عصر
Sstring strq = String.Format("select id,sum (zarfiyat) ,gheymat,shomareparvande from table2 where id=2 group by id,gheymat,shomareparvande");

f_naderi
پنج شنبه 08 اردیبهشت 1390, 01:40 صبح
کد بالا اشتباهه group by باید فقط روی id قرار بگیره وقتی با این query یک جدول موقت درست کردی بعد با یک حلقه ی for برای هر کدوم از id های استخراجی کوئری اول بقیه داده ها رو استخراج کن برای قسمت where کوئری دوم id رو برابر داده ی استخراجی کوئری اول قرار بده اینطوریکه:
ds.tables[0].rows[i][0];"select .... from .... where id="+(در کوئری اول sum رو هم بنویس)نمی دونم این راه چقدر درسته ولی می دونم که زیاد منطقی نیست

RIG000
پنج شنبه 08 اردیبهشت 1390, 17:35 عصر
این کد منه .

amespace Crsytal_Query
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static string databaseAddress = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}\db1.accdb", Environment.CurrentDirectory);

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
// id,zarfiyatSUM(zarfiyat),,gheymat,shomareparvande
string strq = String.Format("select id,sum(zarfiyat),gheymat,shomareparvande from table2 where id=2"
+" group by id,gheymat,shomareparvande "); //GROUP BY id");
// string strq = String.Format("select id,zarfiyat,gheymat,shomareparvande from table2 where id=2 "); //GROUP BY id");

DataSet DS1 = new DataSet();
DS1.Clear();
OleDbConnection con = new OleDbConnection();


OleDbDataAdapter da = new OleDbDataAdapter();
con.ConnectionString = databaseAddress;
da.SelectCommand = new OleDbCommand();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = strq;
da.SelectCommand.CommandType = CommandType.Text;
da.Fill(DS1, "Tbl1");
con.Close();

CrystalReport1 cr1 = new CrystalReport1();
cr1.SetDataSource(DS1.Tables["Tbl1"]);
crystalReportViewer1.ReportSource = cr1;

}
}
}
جواب من این شکلی تو کریستال میاد مثلا:
id اینجا باید sum zarfiyat باشه که نیست shomareparvande gheymat

2 خالی 100 20
2 خالی 200 40

----------------------------------------------------------------------------------------------------------------------------
این بالا خروجی من بود اما موضوع اینه که من باید اینو طوری طراحی کنم که که تو ظرفیت sum رو داشته باشم. من نمیدونم چقدر این کاری که کردم درست باشه . لطفا" برنامه ای رو که up کردم رو بردارین و روش کار کنین ببینین که طوری میشه ازش جواب گرفت خودمم موندم چه شکلب اینو کار کنم. لطفا" هر طوری که میشه کمک کنبن منو. در شمن دوسمونم سه کد بالا نوشت اما نمیدونم تا چه جوری بتونم ازش استفاده کنم . لطفا کمک کنین .

RIG000
جمعه 09 اردیبهشت 1390, 00:08 صبح
کسی بلد نبود؟