PDA

View Full Version : مشکل در شمارش تعداد رکوردهای یک فیلد



gheysar14
دوشنبه 24 تیر 1387, 10:54 صبح
من این کد رو نوشتم ولی جواب صحیح رو بر نمیگردونه یعنی همش (1-) میده مشکل چیه؟





cmd.CommandText = "select count(*) from tblUser where active=1"
cmd.CommandType = CommandType.Text
cmd.Connection = objConnection
count_active = cmd.ExecuteNonQuery
Lb_member.Text = count_active.ToString

naeeme
دوشنبه 24 تیر 1387, 11:08 صبح
count_active = cmd.ExecuteNonQuery
Lb_member.Text = count_active.ToString

استفاده اشتباه از متد ExecuteNoneQuery!
این متد تعداد ردیفهایی که دستور شما بر روی اونها تاثیر می گذاره رو بر می گردونه! دستوری که شما نوشتین، تاثیر بر روی ردیفها نمیذاره! بلکه یک ردیف با یک ستون برمی گردونه. شما باید از متد fill برای پر کردن یک Datatable یا متد Execuutereder برای خواندن ردیف استفاده کنید

Modifier
دوشنبه 24 تیر 1387, 11:17 صبح
سلام علیکم

مقدار برگشتیه ExecuteNonQuery یک عدد int میباشد که نشان دهنده تعداد رکوردی هست که مورد تاثیر قرار گرفته. مثلا تعداد رکورد هایی که ثبت شده (توسط transaction شما)

نکته بعد اینکه Count(*) زیاد معنی نداره !

در ضمن "شمارش تعداد رکوردهای یک فیلد " یعنی چی ؟ فیلد یک جز ای هست که غیر قابل تجزیه میباشد.
تعداد فیلدهای یک رکورد معنی داره ولی تعداد رکورد های یک فیلد ...!!!!!

میتونی برای گرفتن مقدار بازگشتی از executereader استفاده کنی.
یا از stored procedure با استفاده از دستور return.

موفق باشی

یا علی

gheysar14
دوشنبه 24 تیر 1387, 12:03 عصر
کد زیر رو نوشتم ولی باز جواب درست نمیده این بار همش 1 برمیگردونه




cmd.CommandText = "select count(*) from tblUser where active=1"

cmd.CommandType = CommandType.Text
dr = cmd.ExecuteReader
While dr.Read
count_active = count_active + 1

End While

Lb_member.Text = count_active.ToString

naeeme
دوشنبه 24 تیر 1387, 13:30 عصر
من یه پیشنهاد دارم. شما این لینک (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executereader(VS. 71).aspx) رو مطالعه کنین.
این طور که مشخصه شما درست متوجه نحوه استفاده از این متد ها نشدین.
کد درست به شکل زیر هست:


dr = sqlCommand.ExecuteReader()
if dr.Read() then
strCount = dr(dr.FieldCount - 1).ToString()
endif

Sub Zero
دوشنبه 24 تیر 1387, 14:12 عصر
این جور که از کد شما مشخصه میخواید تعداد رکوردهای یه جدول را به دست بیارید.
در دات نت برای برگرداندن فقط یک مقدار از متد sqlCommand.ExecuteScalar استفاده میشه .

gheysar14
دوشنبه 24 تیر 1387, 15:24 عصر
با کد زیر مشکلم حل شد



Lb_member.Text = cmd.ExecuteScalar