PDA

View Full Version : where+group by+order by



MOSTAFANAVVAB
شنبه 25 اسفند 1386, 20:20 عصر
با سلام مجدد
دوستان با عرض پوزش فراوان بازم من
این کد را هر کاری می کنم در قسمتی که where را مساوی یک comboboxدر فورم می کنم عرور می گیرم و برنامه پیغام باگینگ میده
در ضمن
الباقی جمله که بنا به فرض group و یا order by است را قبول نمی کنه

چکنم؟
adap1 = newOleDbDataAdapter("Select City,Ostan from Addersses where Ostan ="+"'" +(comboBox2 .Text )+"'"+" group by City Order by City", con);
comand1 = newOleDbCommandBuilder(adap1);
adap1.Fill(set1, "Addersses");
دقیقا با این کد adapter.fillخطا میگیره
که خطاش به این معنی که دستور سلکت یک مشکلی داره

mohammad272005
شنبه 25 اسفند 1386, 23:49 عصر
شاید نامربوط باشه ولی شما چرا از OLE برای اتصال به SQL استفاده می‏کنید؟ مگه ابزارهای SQL چه‏شه؟

MOSTAFANAVVAB
یک شنبه 26 اسفند 1386, 12:36 عصر
شاید نامربوط باشه ولی شما چرا از OLE برای اتصال به SQL استفاده می‏کنید؟ مگه ابزارهای SQL چه‏شه؟


دوست عزیز از پیامی که زیر نوشته تان بود چیز زیادی متوجه نشدم
ولی به علت اینکه تمام یوزرهای جامعه ما اکثرا از برنامه افیس استفاده میکنند مصلحت را در آن دیدم که با انتخاب اکسس به عنوان دیتابیس از حجیم شدن حجم برنامه ام جلو گیری کنم

ibd_iran
دوشنبه 27 اسفند 1386, 07:11 صبح
OleDbDataAdapter ad=new OleDbDataAdapter("select City,Ostan from Addersses where Ostan='"+ comboBox2 .Text +"' group by City Order by City ",[نام کانکشن]);
این را بنویس

ibd_iran
دوشنبه 27 اسفند 1386, 07:13 صبح
برای پویا کردن خط sql از این روش استفاده کن
'"+اینجا متغییر یا اشیا را بنویس +"'

مهدی رحیم زاده
دوشنبه 27 اسفند 1386, 13:30 عصر
adap1 = newOleDbDataAdapter("Select City,Ostan from Addersses where Ostan like '" + comboBox2.Text + "' group by City Order by City", con);
comand1 = newOleDbCommandBuilder(adap1);
adap1.Fill(set1, "Addersses");
اینو هم می تونی استفاده کنی . البته بهتره که Error ای که میده رو بزاری تا بشه بهتر جواب داد .
موفق باشید .

mohammad272005
دوشنبه 27 اسفند 1386, 22:38 عصر
هرجا NET 2.0. نصب باشه، SQL Server 2005 Express هم نصبه پس نیازی به نصب مجدد SQL همراه برنامه نیست.

Xcalivorse
دوشنبه 27 اسفند 1386, 23:22 عصر
مصطفی جان دلیل این مساله این است که وقتی داری در دستور SELECT از GROUP BY استفاده می کنی نمی تونی به غیر از فیلدی که داری ازش GROUP BY می گیری فیلد دیگری رو نمایش بدی. مثلا دستور زیر خطا میده :

SELECT Name,Family FROM Students GROUP BY Name

ولی اگر به صورت زیر تغییرش بدی درست کار میکنه

SELECT Name FROM Students GROUP BY Name

همچنین وقتی در مقابل GOUP BY از یک فیلد استفاده کردی، نمی تونی با استفاده از یک فیلد دیگه ORDER BY رو انجام بدی.

البته برای فهمیدن تعداد داده در هر دسته میتونی از تابع (*)COUNT استفاده کنی یا بر اساس اون هم داده ها رو مرتب کنی ولی در این مورد به کارت نمیاد.

امیدوارم تونسته باشم کمکت کنم.

MOSTAFANAVVAB
سه شنبه 28 اسفند 1386, 13:20 عصر
مصطفی جان دلیل این مساله این است که وقتی داری در دستور SELECT از GROUP BY استفاده می کنی نمی تونی به غیر از فیلدی که داری ازش GROUP BY می گیری فیلد دیگری رو نمایش بدی. مثلا دستور زیر خطا میده :

SELECT Name,Family FROM Students GROUP BY Name

ولی اگر به صورت زیر تغییرش بدی درست کار میکنه

SELECT Name FROM Students GROUP BY Name

همچنین وقتی در مقابل GOUP BY از یک فیلد استفاده کردی، نمی تونی با استفاده از یک فیلد دیگه ORDER BY رو انجام بدی.

البته برای فهمیدن تعداد داده در هر دسته میتونی از تابع (*)COUNT استفاده کنی یا بر اساس اون هم داده ها رو مرتب کنی ولی در این مورد به کارت نمیاد.

امیدوارم تونسته باشم کمکت کنم.
______________________]دوست عزیزم
ببین پس با این حرف شما نتیجه میگیریم برای اینکه بخواهیم از یک تیبل که فرض کن 5 تا فیلد داره برای گروپ کردنشون باید برای هرکدو یک دستور سلکت بنویسیم و اداپتر و سایر مخلفات را بنویسیم
یا
جلوی گروپبای یک ستاره بزاریم

ولی من چیزه دیگه ای میگم==چون من نیاز به این دارم کهحتما در یک دستور سلکت دو یا بیشتر فیلد سلکت بشه ولی یکیشو چون نشون میدم همونو برام گروپبای کنه و اوردر بای کنه

حلا چیزی به نظرت میرسه یا نه

Smart User
چهارشنبه 29 اسفند 1386, 20:55 عصر
برای استفاده از group by باید هرچی فیلد توی سلکتت استفاده کردی تو group by هم بنویسی.. مثلا اگر 5 تا فیلد رو سلکت کردی همون 5 تا رو مجددا توی group by هم بنویسی.. ولی فیلدهای محاسباتی (count, sum ...)رو نباید توی گروپ بای بیاری..
ولی برای order by رو هرکدوم که بخوای میتونی مشکل نداره..

مهدی رحیم زاده
پنج شنبه 01 فروردین 1387, 07:11 صبح
مصطفی جان دلیل این مساله این است که وقتی داری در دستور SELECT از GROUP BY استفاده می کنی نمی تونی به غیر از فیلدی که داری ازش GROUP BY می گیری فیلد دیگری رو نمایش بدی. مثلا دستور زیر خطا میده :

SELECT Name,Family FROM Students GROUP BY Name

ولی اگر به صورت زیر تغییرش بدی درست کار میکنه

SELECT Name FROM Students GROUP BY Name

همچنین وقتی در مقابل GOUP BY از یک فیلد استفاده کردی، نمی تونی با استفاده از یک فیلد دیگه ORDER BY رو انجام بدی.

البته برای فهمیدن تعداد داده در هر دسته میتونی از تابع (*)COUNT استفاده کنی یا بر اساس اون هم داده ها رو مرتب کنی ولی در این مورد به کارت نمیاد.

امیدوارم تونسته باشم کمکت کنم.

دوست عزیز مطمئنی ؟؟؟؟؟
ِیه سری به Sql server بزن . فکر نمی کنم .