2 ضمیمه
تغییر مکان یه مقدار در Combox
با سلام .
چگونه مقدار خالی رو از سطر سوم به سطر اول انتقال دهم به طوری که همین ترتیب حفظ شود.
اگه امکان داره به دور روش زیر بنده رو راهنمایی کنید.
1- کد نویسی در فرم لود برنامه.
2- دستورات واکشی اطلاعات از بانک .
SELECT Count, name
FROM sortzonecount
ORDER BY Count DESC, name DESC
مسلئه را سخت نکرده باشم.
طبق تصویری که برای شما عزیزان گذاشتم فقط می خوام مقدار خالی به سطر اول انتقال پیدا کنه.
ممنون دوستان
نقل قول: تغییر مکان یه مقدار در Combox
از دوستان محلی بزارین مرحمتی کنید!!!!!
نقل قول: تغییر مکان یه مقدار در Combox
خب remove كن بعد بيا به اول ايتمهاي combobox لونو insert كن
cmb.items.removeat(2);
cmb.items.insert(0,"");
نقل قول: تغییر مکان یه مقدار در Combox
نقل قول:
نوشته شده توسط
hamid_hr
خب remove كن بعد بيا به اول ايتمهاي combobox لونو insert كن
cmb.items.removeat(2);
cmb.items.insert(0,"");
از توجه شما ممنون ولی به ازای هر بار اجرا معلوم نیست که مقدار خالی کجا باشه پس یک حلقه جستجو می خواد.
خدایش سوال رو خیلی ناقص پرسیدم.
ولی این تابع رو براتون می زام
این تابع دو تا دیتا تیل رو می گیره و این دو رو باهم ادغام می کنه. به این صورت که آیتم های پرکاربرد را در ابتدای مممم و بقیه فیلدها رو بدونه حالت تکراری قرار می دهد.
void filllist(ComboBox Cbx,DataTable sortCount,DataTable allname)
{
List<string> l = new List<string>();
l.Add("");
DataTable dt1 = new DataTable();
dt1 = sortCount;
foreach (DataRow r in dt1.Rows)
{
string str = r["name"].ToString();
if (str != "")
l.Add(str);
}
DataTable dt2 = new DataTable();
dt2 = allname;
foreach (DataRow r2 in dt2.Rows)
{
bool isfind = false;
string str2 = r2["name"].ToString();
foreach (DataRow r1 in dt1.Rows)
{
string str1 = r1["name"].ToString();
if (str2 == str1)
isfind = true;
}
if (!isfind)
l.Add(str2);
}
List<string> l2 = new List<string>();
foreach (string str in l.ToArray().Distinct())
{
l2.Add(str);
}
Cbx.DataSource = l2;
}
نقل قول: تغییر مکان یه مقدار در Combox
خب وقتي داري ميريزت داخلl2 چك كن اگه برابر "" بود ثبت نكن فقط يه متغير بزار بشماره ببينه چند تاس در اخر با يك for به تعداد اون متغيير اونا رو درج كن
نقل قول: تغییر مکان یه مقدار در Combox
اون دو تا دیتاتیبل چجوری پر میشن. فکر کنم همه اینکارهارو بتونی سمت sql موقع دریافت اطلاعات انجام بدی نیازی به این همه کد نیست.
کوئری هایی که اطلاعات رو واکشی میکنی بزار و بگو چه خروجی مد نظرت هست.
نقل قول: تغییر مکان یه مقدار در Combox
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
اون دو تا دیتاتیبل چجوری پر میشن. فکر کنم همه اینکارهارو بتونی سمت sql موقع دریافت اطلاعات انجام بدی نیازی به این همه کد نیست.
کوئری هایی که اطلاعات رو واکشی میکنی بزار و بگو چه خروجی مد نظرت هست.
دوست عزیز فکر نکنم سمت Sql بشه این خروجی رو به صورت یکجا داشته باشیم.
بر اساس تعداد درج باید ترتیب قرارگیری آیتم هادر Combox مشخص شود.
دیتاتیبا اول این کار را انجام می دهد.
SELECT TOP (100) PERCENT COUNT(*) AS Count, dbo.tblzone.name
FROM dbo.tblmain INNER JOIN
dbo.tblzone ON dbo.tblmain.idzone = dbo.tblzone.id
WHERE (dbo.tblmain.membership = 1)
GROUP BY dbo.tblzone.name
ORDER BY Count DESC, dbo.tblzone.name DESC
خوب دیتاتیبل دوم نام تمام حوزهای موجود رو بگرمی گردونه.
SELECT name
FROM tbltasilat
WHERE (name <> '') AND (name <> N'ندارد')
ORDER BY name
حالا ما یک لیست درست کرده مقدار اول این عنصر "" می زاریم
بعد دیتا تیبل اول رو اضافه می کنیم.
بعد دیتاتیبل دوم را با حذف تکراری ها به لیست اضافه می کنیم.
خوب کلیت کار اومد دستتون.
اگه میشه، این همه کار رو به یک باره سمت sql انجام داد آموزش بیدن ممنون
نقل قول: تغییر مکان یه مقدار در Combox
ای کاش ساختار جداولتون رو هم میذاشتید.
اینو امتحان کنید:
with t_cte
as
(
SELECT TOP (100) PERCENT COUNT(*) AS Count,
dbo.tblzone.name
FROM dbo.tblmain
INNER JOIN
dbo.tblzone
ON dbo.tblmain.idzone = dbo.tblzone.id
WHERE dbo.tblmain.membership = 1
GROUP BY dbo.tblzone.name
ORDER BY Count DESC, dbo.tblzone.name DESC
)
SELECT name
FROM t_cte
UNION
SELECT name
FROM tbltasilat
WHERE name <> '' AND name <> N'ندارد'
ORDER BY name
3 ضمیمه
نقل قول: تغییر مکان یه مقدار در Combox
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
ای کاش ساختار جداولتون رو هم میذاشتید.
اینو امتحان کنید:
سلام کدهای شما خروجی تصویر شماره یک روداشت
مقادیر نام حوزه ها رو داخل تصویر شماره دو گذاشتم در جدول اصلی
خروجی مورد نظر خودم هم داخل تصویر شماره سه
خوب اگه دقت کنید کدها شما خروجی مورد نظر ور نداره اگه براتون امکان داره می تونید اصلاحش کنید دقیقا همین خروجی رو داشته باشه مثل combox سمت چپ
ممنون
درزم کدها یکم اشکال داشت که اصلاح شد
WITH t_cte AS (SELECT TOP (100) PERCENT COUNT(*) AS Count, tblzone.name
FROM tblmain INNER JOIN
tblzone ON tblmain.idzone = tblzone.id
WHERE (tblmain.membership = 1)
GROUP BY tblzone.name
ORDER BY Count DESC, tblzone.name DESC)
SELECT name
FROM t_cte AS t_cte_1
UNION
SELECT name
FROM tblzone AS tblzone_1
WHERE (name <> '') AND (name <> N'ندارد')
نقل قول: تغییر مکان یه مقدار در Combox
منظورت مرتب سازیه؟
تست کردم union نتیجه رو مرتب میکنه.
نقل قول: تغییر مکان یه مقدار در Combox
[QUOTE=Mahmoud.Afrad;1782156]منظورت مرتب سازیه؟
تست کردم union نتیجه رو مرتب میکنه.
نه.
سورت باید براساس تعداد استفاده از نام حوزه باشد.
حوزه 7 روح الله دو بار تکرار شده در مکان دوم قرار می گیرد بعد از " "
حوزه 2 فتح دو بار تکرار شده در مکان سوم
حوزه 1 حزب الله یک بار تکرار شده در مکان چهارم
حال بقیه نام حوزه ها به صورت مرتب شده اضافه بشن. در مکان الی آخر
فکر نکنم بشه دستوراتی نوشت که در سمت Sql به یک بار اجرا بشه. درسته؟
نقل قول: تغییر مکان یه مقدار در Combox
اگر تعداد بعد از اجتماع رو میخوای میتونی هر دو سلکت رو union all کنی و بعد بر حسب تعداد مرتب کنی. top(100) percent هم یعنی صد در صد رکوردها پس اضافه هست میتونی حذفش کنی.
WITH t_cte
AS
(
SELECT tblzone.name
FROM tblmain INNER JOIN
tblzone ON tblmain.idzone = tblzone.id
WHERE tblmain.membership = 1
UNION ALL
SELECT name
FROM tblzone AS tblzone_1
WHERE (name <> '') AND (name <> N'ندارد')
)
SELECT name
FROM t_cte
GROUP BY name
ORDER BY COUNT(name) DESC , name DESC