PDA

View Full Version : نمایش تعداد رکورد با شرط



programerinfonet
سه شنبه 18 تیر 1392, 23:04 عصر
سلام دوستان
من میخوام دستور SELECT رو طوری بنویسم که مقدار برگشتی تعداد رکوردها باشه یعنی بگم تو بانک بگرده و تعداد افرادی که سنشان 20 سال می باشد رو در یک لیبل نمایش بده
چه طوری میشه این کار رو کرد
ممنونم

rezam44
سه شنبه 18 تیر 1392, 23:11 عصر
سلام دوستان
من میخوام دستور SELECT رو طوری بنویسم که مقدار برگشتی تعداد رکوردها باشه یعنی بگم تو بانک بگرده و تعداد افرادی که سنشان 20 سال می باشد رو در یک لیبل نمایش بده
چه طوری میشه این کار رو کرد
ممنونم


select * from table student where sen=20
سلام
فک کنم این باشه
دوستان اگه اشتباه باشه حتما بگن.. ممنون

CsharpNevisi
سه شنبه 18 تیر 1392, 23:30 عصر
select * from table student where sen=20
سلام
فک کنم این باشه
دوستان اگه اشتباه باشه حتما بگن.. ممنون

خب این که مقدار برگشتیش تعدا رکوردها نیست ... !!!
ولی میتونی این دوستورو بنویسی و تعداد رکوردهارو بشماری :
int c;
OleDbDataReader Rd;
a.oleDbConnection1.Open();
Rd = Command.ExecuteReader();
while (Rd.Read())
{
c++;
}
a.oleDbConnection1.Close();
MessageBox.Show(c.ToString());

programerinfonet
سه شنبه 18 تیر 1392, 23:35 عصر
نشد یعنی نفهمیدم میشه یک نمونه ی دیگه مثال بزنید ؟
نمیشه از SELECT COUNT استفاده کرد ؟
من فقط اسمشو شندیم :قهقهه:طرز استفادشو نمی دونم

khokhan
سه شنبه 18 تیر 1392, 23:41 عصر
نشد یعنی نفهمیدم میشه یک نمونه ی دیگه مثال بزنید ؟
نمیشه از SELECT COUNT استفاده کرد ؟
من فقط اسمشو شندیم :قهقهه:طرز استفادشو نمی دونم

"SELECT COUNT(*) FROM Users WHERE sen=20"



int iResults;

objConn.Open();

iResults = Convert.ToInt32(objCmd.ExecuteScalar().ToString()) ;

objConn.Close();

CsharpNevisi
سه شنبه 18 تیر 1392, 23:42 عصر
نشد یعنی نفهمیدم میشه یک نمونه ی دیگه مثال بزنید ؟
نمیشه از SELECT COUNT استفاده کرد ؟
من فقط اسمشو شندیم :قهقهه:طرز استفادشو نمی دونم

اینو نفهمیدی این که برا شما باید خیلی ساده باشه ... !!!
این دستورو بلد بودم ولی متاستفانه خاطرم نیست ... !!! خیلی از دستورات از یادم رفتن ... !!!
اینم همون کد ولی کامل شدش
OleDbCommand Command = new OleDbCommand();
frmAdminFirstSubmit a = new frmAdminFirstSubmit();
OleDbDataReader Rd;
Command.Connection = a.oleDbConnection1;
int Month1, Month2;
string today = Miladi2Shamsi(DateTime.Now);
Month1 = int.Parse(today.Substring(5, 2));
Command.CommandText = "select * from tblClint";
int c;
a.oleDbConnection1.Open();
Rd = Command.ExecuteReader();
while (Rd.Read())
{
c++;
}
a.oleDbConnection1.Close();
MessageBox.Show(c.ToString());

programerinfonet
سه شنبه 18 تیر 1392, 23:48 عصر
اینو نفهمیدی این که برا شما باید خیلی ساده باشه ... !!!
این دستورو بلد بودم ولی متاستفانه خاطرم نیست ... !!! خیلی از دستورات از یادم رفتن ... !!!
اینم همون کد ولی کامل شدش
OleDbCommand Command = new OleDbCommand();
frmAdminFirstSubmit a = new frmAdminFirstSubmit();
OleDbDataReader Rd;
Command.Connection = a.oleDbConnection1;
int Month1, Month2;
string today = Miladi2Shamsi(DateTime.Now);
Month1 = int.Parse(today.Substring(5, 2));
Command.CommandText = "select * from tblClint";
int c;
a.oleDbConnection1.Open();
Rd = Command.ExecuteReader();
while (Rd.Read())
{
c++;
}
a.oleDbConnection1.Close();
MessageBox.Show(c.ToString());

دوست عزیز منظور من "SELECT COUNT(*) FROM Users WHERE sen=20" این کد بود
باز در کل ازت ممنونم

CsharpNevisi
چهارشنبه 19 تیر 1392, 00:06 صبح
"SELECT COUNT(*) FROM Users WHERE sen=20"



int iResults;

objConn.Open();

iResults = Convert.ToInt32(objCmd.ExecuteScalar().ToString()) ;

objConn.Close();


خیلی ممنون از کدتون ... !!!
یه دستورم بود که مثل 5 تا ستون اولو انتخاب میکرد .... اون چجوری بود ؟؟؟

programerinfonet
چهارشنبه 19 تیر 1392, 00:32 صبح
من اینو نوشتم اما کار نمی کنه

OleDbDataReader myReader;
OleDbCommand cmdoledb =
new OleDbCommand("SELECT * FROM IssChq WHERE IChC ='1'"), my_cn;
myReader = cmdoledb.ExecuteReader();

if (myReader.Read())
{
lblchqno.Text = myReader["ITo"].ToString();
myReader.Close();
}

khokhan
چهارشنبه 19 تیر 1392, 01:00 صبح
یه دستورم بود که مثل 5 تا ستون اولو انتخاب میکرد .... اون چجوری بود ؟؟؟ منظورتون اینه :لبخند:...................................... ... البته ستون نه 5 تاردیف


"SELECT TOP(10) Model, Color, Price FROM Users WHERE sen=20"

hessam2003
چهارشنبه 19 تیر 1392, 01:25 صبح
سلام.
شما یک procedure ایجاد کنید و هرجا که بهش نیاز داشتین ازاش استفاده کنید.
کد داخل procedure:
select count(*) from table1 where old=20
موفق باشید.

sohil_ww
چهارشنبه 19 تیر 1392, 08:49 صبح
منظورتون اینه :لبخند:...................................... ...


"SELECT TOP(10) Model, Color, Price FROM Users WHERE sen=20"

top
برای بدست آوردن تعداد خاصی از داده هاس
ولی این کد داره 1 داده که بر می گردونه !


1
2
3
4
5
OleDbDataReader myReader;
OleDbCommand cmdoledb =
new OleDbCommand("SELECT * FROM IssChq WHERE IChC ='1'"), my_cn;

programerinfonet
چهارشنبه 19 تیر 1392, 10:49 صبح
سلام دوستان
مشکل این کد چیه که خطای data type mismatch in criteria expression

string countchq, lastchqno;
OleDbCommand objcom = new OleDbCommand("SELECT COUNT(IChqNo) FROM IssChq WHERE IChC ='" +chid+ "'", my_cn);
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC='" + chid + "'", my_cn);
countchq = objcom.ExecuteScalar().ToString();
lastchqno = objcom2.ExecuteScalar().ToString();
Tx_ChqNo.Text = Convert.ToString(Convert.ToInt64(countchq) + Convert.ToInt64(lastchqno));

veniz2008
چهارشنبه 19 تیر 1392, 11:23 صبح
سلام دوستان
مشکل این کد چیه که خطای data type mismatch in criteria expression

string countchq, lastchqno;
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC='" + chid + "'", my_cn);
lastchqno = objcom2.ExecuteScalar().ToString();
Tx_ChqNo.Text = Convert.ToString(Convert.ToInt64(countchq) + Convert.ToInt64(lastchqno));

سلام.
چطور یک رشته رو با یک عدد جمع کنه و توی یک رشته بریزه؟. معلومه خطای مچ نبودن (سازگار نبودن) نوع های داده رو میده.
من نمیدونم این فیلدها چی هستن ولی اگر عدد هستن و میخواید جمعشون رو داخل یک تکست باکس نشون بدی، اول در حالت int اونها رو جمع کنید و نتیجه نهایی رو به رشته تبدیل کنید. ولی اگر میخوای چند رشته رو با هم الحاق کنی دیگه نباید از Convert.Toint64 استفاده کنی.
خطای فوق بخاطر اینه که نوع های ناسازگار رو با هم جمع کردید.
موفق باشید.

programerinfonet
چهارشنبه 19 تیر 1392, 11:34 صبح
مشکل اصلأ به اونجا نمیرسه به همون سلکت گیر میده
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC='" + chid + "'", my_cn);
اگه کد زیر رو بنویسم کار می کنه
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC=1", my_cn);

khokhan
چهارشنبه 19 تیر 1392, 12:06 عصر
مشکل اصلأ به اونجا نمیرسه به همون سلکت گیر میده
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC='" + chid + "'", my_cn);
اگه کد زیر رو بنویسم کار می کنه
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC=1", my_cn);
ظاهرا این chid بایستی مقدار بولین باشه که مقدار تکستی رو از یه جایی پاس می ده

اگه این فرض درسته باشه اینکه چطور مقادیر رو به بولین تبدیل میکنین مهمه و نوع مقدار هم همینطور کد مربو طه رو بگذارین ببینیم

veniz2008
چهارشنبه 19 تیر 1392, 12:29 عصر
مشکل اصلأ به اونجا نمیرسه به همون سلکت گیر میده
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC='" + chid + "'", my_cn);
اگه کد زیر رو بنویسم کار می کنه
OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC=1", my_cn);
این نشون میده که باید برای sql یک عدد بفرستید. chid احتمالا همونطور که دوستمون هم گفتن بولین هست و فقط از شما 0 (false) یا 1 (true) میگیره.
اینطوری بنویسید :

OleDbCommand objcom2 = new OleDbCommand("SELECT top 1 IChqNo FROM IssChq WHERE IChC=" + chid, my_cn);

programerinfonet
چهارشنبه 19 تیر 1392, 12:56 عصر
دوستان با این کد مشکلم حل شد و بزرگترین مقدار یک فیلد خاص رو گرفتم
OleDbCommand objcom2 = new OleDbCommand("SELECT max (IChqNo) FROM IssChq WHERE IChC=" + chid, my_cn);
حالا این احتمال هم هست که اصلأ رکوردی با IChC من وجود نداشته باشه که میخوام بره یک مقدار از یک جدول دیگه بیاره و جایگزین کنه
حالا باید چی کار کنم

programerinfonet
چهارشنبه 19 تیر 1392, 15:29 عصر
سوالمو یک جور دیگه می پرسم
من یک جدول دارم که توش مشخصات مربوط به دسته چک تعریف میشه به شکل زیر
1 بانک ملی 10برگ 2000
عدد 2000 شماره برگ اوله که سیستم خودش شماره ی 2010 رو به عنوان شماره برگ آخر ثبت می کنه
و همین طور یک جدول دارم که میاد از این دسته چک چک صادر می کنه و خودش شماره ی چک رو میزنه به این شکل که از دسته چک بانک ملی آخرین چک صادره رو پیدا می کنه و یک واحد به شماره چکش اضافه می کنه . این تا اینجاشو حل کردم حالا میخوام بگم اول چک کنه ببینه اصلأ از این دسته چک چکی صادره شده یا نه اگه شده که هیچ اگه نشده بره شماره برگه اولو که تو تعریف دسته چک ثبت کردمو بیاره
اینو چه طور بنویسم

khokhan
چهارشنبه 19 تیر 1392, 15:51 عصر
سوالمو یک جور دیگه می پرسم
من یک جدول دارم که توش مشخصات مربوط به دسته چک تعریف میشه به شکل زیر
1 بانک ملی 10برگ 2000
عدد 2000 شماره برگ اوله که سیستم خودش شماره ی 2010 رو به عنوان شماره برگ آخر ثبت می کنه
و همین طور یک جدول دارم که میاد از این دسته چک چک صادر می کنه و خودش شماره ی چک رو میزنه به این شکل که از دسته چک بانک ملی آخرین چک صادره رو پیدا می کنه و یک واحد به شماره چکش اضافه می کنه . این تا اینجاشو حل کردم حالا میخوام بگم اول چک کنه ببینه اصلأ از این دسته چک چکی صادره شده یا نه اگه شده که هیچ اگه نشده بره شماره برگه اولو که تو تعریف دسته چک ثبت کردمو بیاره
اینو چه طور بنویسم
دوراه داره یا باید شماره هاتون مرکب باشه و از هر دسته چک به دیگری فرق بکنه تا در مواقع لزوم از میان سایرین فیلترش کنین یا اینکه یه فیلد هم داشته باشین تا برای هر دسته چک شماره اختصاص بدین

programerinfonet
چهارشنبه 19 تیر 1392, 15:56 عصر
نه شماره ها به ترتیبه به این شکل که با تابع max بزرگترین شماره رو میگیرم و یک واحد بهش اضافه می کنم مشکل من اینجاس که اولین رکورد رو چه طوری ثبت کنم اولی میشه شماره ی خودش که موقع تعریف ثبت کردم اونو موندم

khokhan
چهارشنبه 19 تیر 1392, 16:05 عصر
نه شماره ها به ترتیبه به این شکل که با تابع max بزرگترین شماره رو میگیرم و یک واحد بهش اضافه می کنم مشکل من اینجاس که اولین رکورد رو چه طوری ثبت کنم اولی میشه شماره ی خودش که موقع تعریف ثبت کردم اونو موندم

پیشنهادم اینه که از یه تابع که می شه تعداد کاراکتر درش تعریف کرد استفاده کنین .
این تابع چک می کنه اگه شماره در بانک موجود نباشه خودش یه شماره پیش فرض ارائه می ده

همچنین همانطور که گفتم می تونین فرمت خاصی برای برای شماره هایتان اختصاص بدین مثلا شماره ها 5 رقمی باشه یا کتر و بیشتر و الی آخر

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

programerinfonet
چهارشنبه 19 تیر 1392, 16:19 عصر
ببینید برنامه ی جمن به این شکله
جدول دسته چک :
شماره حساب :
شماه برگه اول
شماره برگه آخر (تعداد برگ ها به طور خودکار محاسبه میشن)

یک جدولم دارم که چک ها در وجه مشتری صادر میشن
جدول صودر :
دسته چک :
شماره چک:(مشکل محسابه ی این فیلد به طور خودکاره)
مشتری
و...
من میخوام تو جدول دومی وقتی دسته چک انتخاب شد برنامه خودش چک کنه از اون دسته چک چند برگ چک صادر شده و چک خام بعدی رو شمارشو واسم بندازه
خوب اینو که با تابع max حل کردم . حالا اگر با انتخاب دسته چک هیچ چک صادره ای یافت نشد که به شماره یک واحد اضافه بشه چی ؟اینجاد باید شماره اولین برگه که تو جدول اول ثبت شده درج بشه
مشکل من اینه
امیدوارم تونسته باشم منظورمو بفهمونم

khokhan
چهارشنبه 19 تیر 1392, 16:44 عصر
ببینید برنامه ی جمن به این شکله
جدول دسته چک :
شماره حساب :
شماه برگه اول
شماره برگه آخر (تعداد برگ ها به طور خودکار محاسبه میشن)

یک جدولم دارم که چک ها در وجه مشتری صادر میشن
جدول صودر :
دسته چک :
شماره چک:(مشکل محسابه ی این فیلد به طور خودکاره)
مشتری
و...
من میخوام تو جدول دومی وقتی دسته چک انتخاب شد برنامه خودش چک کنه از اون دسته چک چند برگ چک صادر شده و چک خام بعدی رو شمارشو واسم بندازه
خوب اینو که با تابع max حل کردم . حالا اگر با انتخاب دسته چک هیچ چک صادره ای یافت نشد که به شماره یک واحد اضافه بشه چی ؟اینجاد باید شماره اولین برگه که تو جدول اول ثبت شده درج بشه
مشکل من اینه
امیدوارم تونسته باشم منظورمو بفهمونم

آهان از اون لحاظ :لبخند:
یه بنده خدایی یه برنامه حسابداری نوشته بود و یه بنده خدای دیگه زحمت دیکامپایلش رو کشیده بود:لبخند::چشمک:

توی اون برنامه قضیه از این قرار بود که یه جدول مجزا داشت و مشخصات دسته چکها قبل از استفاده درش درج می شد از جمله اینکه از چه شماره ای شروع می شه و در چه شماره ای پایان می پذیره

وقتی هم شماره آخر صادر می شد برنامه خود کار تقاضای دسته چک جدید می کرد