PDA

View Full Version : فیلتر کردن combobox



matinebi
یک شنبه 19 خرداد 1387, 02:15 صبح
لطفا طریقه فیلتر کردن کمبو باکسی که را که اگر در بانک چند فیلد یکسان وجود داشت فقط یکی از آنها را نمایش دهد را توضیح دهید

SYNDROME
یک شنبه 19 خرداد 1387, 05:40 صبح
لطفا طریقه فیلتر کردن کمبو باکسی که را که اگر در بانک چند فیلد یکسان وجود داشت فقط یکی از آنها را نمایش دهد را توضیح دهید
در زمان نوشتن دستور Select اطلاعات را Group By کنید تا اطلاعات یکسان حذف شود.


Select Name
From Tbl_Test
Group By Name

حالا فقط اطلاعاتی واکشی می شود که در آن تکراری وجود ندارد.
موفق باشید

matinebi
یک شنبه 19 خرداد 1387, 08:15 صبح
نه نباید اطلاعات حذف شوند چون فقط یک فیلد در رکورد مشابه وجود دارد

zman123456
یک شنبه 19 خرداد 1387, 15:39 عصر
من فکر کنم ابتدا مفاهیم رو درست بیان کنیم بهتر باشه.
چطور در یک جدول چند فیلد یکسان داریم که بخواهیم یکیشو نشون بدیم.فکر می کنم منظور رکوردهاست.
اگه می خواهی رکوردهای مشابه نمایش داده نشن و فقط یکی نمایش داده بشه در نوشتن query از عبارت DISTINCT استفاده کن تا تکراری ها رو حذف کنه.
اگه منظور نمایش رکوردها با یکسری اطلاعات مشابه و در بعضی فیلدها غیر تکراری باید از Group By استفاده بشه.
من تا همینجا درک کردم.

SYNDROME
یک شنبه 19 خرداد 1387, 20:14 عصر
لطفا طریقه فیلتر کردن کمبو باکسی که را که اگر در بانک چند فیلد یکسان وجود داشت فقط یکی از آنها را نمایش دهد را توضیح دهید



نه نباید اطلاعات حذف شوند چون فقط یک فیلد در رکورد مشابه وجود دارد
کمی واضحتر توضیح بدهید.
یک مثال بزنید تا بهتر متوجه شویم.
موفق باشید

matinebi
جمعه 24 خرداد 1387, 22:02 عصر
dataset.First;
while not dataset.Eof do
begin
ComboBox1.Items.Add(dataset['fildname']);
dataset.Next;

به صورت بالا من کمبو رو پر میکنم حالا در بانک اطلاعات مشابه وجود دارد
نمیخوام مشابهات نمایش داده شود

SYNDROME
جمعه 24 خرداد 1387, 22:16 عصر
نمیخوام مشابهات نمایش داده شود
خوب دوست عزیز همانطور که در پست بالا گفتم اگر بر اساس همان فیلدی که ComboBox را پر می کنی Group By کن تا مقادیر تکراری را در نمایش ندهد و مقادیر فیلتر شده را در Combo اضافه کن.
موفق باشید

اصغر (پآچ)
جمعه 24 خرداد 1387, 22:43 عصر
نه نباید اطلاعات حذف شوند چون فقط یک فیلد در رکورد مشابه وجود دارد

سلام دوست من

منظور دوست عزیزم Syndrome از اطلاعات مشابه حذف شوند اینه که دستور Select اونها رو انتخاب نمی کنه، هیچ اطلاعاتی از بانکت با استفاده از GroupBy حذف نخواهد شد فقط تکراری ها انتخاب نمی شوند.

شما می تونی همونطور که دوستمون گفت از دستور DISTINCT استفاده کنی


SLECT DISTINCT(field) FROM table

با استفاده از کد بالا تمام رکورد های کاملا مشابه انتخاب می شوند اما رکوردهایی که یک فیلد آنها مشابه باشد و بقیه فیلدها متمایز انتخاب میشوند مثلا:
در بانکت دوتا رکورد داری که مقدار فیلد name اونها "محسن" است ولی فیلد NID اونها دوتا مقدار متفاوت داره با دستور بالا به کمب. باکست دوتا محسن اضافه میشه

موفق و موید باشی

matinebi
جمعه 24 خرداد 1387, 22:59 عصر
درسته دوست عزیز با group by درست میشه اما من 2 تا کمبو دارم که هر کدومشون به همون بانک وصله (با رکورد های مختلف)
زمانی که از group by استفاده میکنم فقط میتونم یکی از کمبو ها رو پر کنم

matinebi
جمعه 24 خرداد 1387, 23:00 عصر
مثلا یکی از کمبو ها به فیلد نام بانک وصله
یکی دیگش به فیلد شماره حساب

matinebi
جمعه 24 خرداد 1387, 23:04 عصر
//*******************************************name bank & shomare hesab
dataset.SQL.Clear;
dataset.SQL.Add('select name');
dataset.SQL.Add('from sabt_bank');
dataset.SQL.Add('group by name');
dataset.Open;
dataset.First;
WHILE NOT dataset.Eof DO
BEGIN
ComboBox9.Items.Add(dataset['name']);
//ComboBox10.Items.Add(dataset['shomare_h']);
dataset.Next;

کمبو 10 رو چطور پر کنم

اصغر (پآچ)
جمعه 24 خرداد 1387, 23:22 عصر
سلام دوست من

ببین دستور Select رو به شکل زیر تغییر بده


dataset.SQL.Clear;
dataset.SQL.Add('select *');
dataset.SQL.Add('from sabt_bank');
dataset.SQL.Add('group by name');
dataset.Open;
dataset.First;
WHILE NOT dataset.Eof DO
BEGIN
ComboBox9.Items.Add(dataset['name']);
//ComboBox10.Items.Add(dataset['shomare_h']);
dataset.Next;
end;

خوب حالا چه مشکلی تو پرکردن کمبو 10 داری؟

موفق و موید باشی

matinebi
شنبه 25 خرداد 1387, 00:02 صبح
این ارور رو میده و هیچ چیز در هر دو کمبو باکس نشون نمیده

Column'sabt_bank.shomare_h' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

اصغر (پآچ)
شنبه 25 خرداد 1387, 00:42 صبح
سالم دوست من
تو با همین دستور آخری این پیغام رو گرفتی؟

matinebi
شنبه 25 خرداد 1387, 01:10 صبح
بله با همین دستور آخری


dataset.SQL.Clear;
dataset.SQL.Add('select *');
dataset.SQL.Add('from sabt_bank');
dataset.SQL.Add('group by name');
dataset.Open;
dataset.First;
WHILE NOT dataset.Eof DO
BEGIN
ComboBox9.Items.Add(dataset['name']);
ComboBox10.Items.Add(dataset['shomare_h']);
dataset.Next;
end;

SYNDROME
شنبه 25 خرداد 1387, 05:50 صبح
فیلد Name را به جاری * قرار دهید تا مشکل حل شود.




dataset.SQL.Clear;
dataset.SQL.Add('select name');
dataset.SQL.Add('from sabt_bank');
dataset.SQL.Add('group by name');
dataset.Open;


هر فیلدی را که در جلوی GroupBy بنویسید باید در قسمت Select هم بنویسید.
اگر می خواهید از فیلد shomare_h این هم استفاده کنی باید آن را هم در کنار Name قرار دهید(در Group By و Select)
موفق باشید

matinebi
شنبه 25 خرداد 1387, 09:34 صبح
اگه منظورتون به صورت کد زیر می باشد که ارور نمیده اما هیچ فرقی با حالتی که group by نباشد ندارد باز هم تکراری ها رو نمایش میده


dataset.SQL.Clear;
dataset.SQL.Add('select shomare_h,name');
dataset.SQL.Add('from sabt_bank');
dataset.SQL.Add('group by shomare_h,name');
dataset.Open;
dataset.First;
WHILE NOT dataset.Eof DO
BEGIN
ComboBox9.Items.Add(dataset['name']);
ComboBox10.Items.Add(dataset['shomare_h']);
dataset.Next;