PDA

View Full Version : سوال: ارور Conversion from type 'DBNull' to type 'String' is not valid.



toopak
پنج شنبه 28 شهریور 1387, 14:17 عصر
سلام:ناراحت:
آقا این ارور منو دیوونه کرده:اشتباه:

تو کد زیر

Label1.Text = ComboBox1.Text.ToString
Dim ds1 As New DataSet
Dim inssql1 As String
Dim cmdsql1 As New OleDbCommand
inssql1 = "SELECT count(sid) as noo,sum(fee) as allfee,sum(fee*(comi/100)) as ajans,sum(fee-(fee*(comi/100))) as driver FROM tbservices where (drname = '" & Label1.Text & "') AND ([date] BETWEEN '" & MaskedTextBox1.Text & "' AND '" & MaskedTextBox2.Text & "') "
cmdsql1.Connection = con
cmdsql1.CommandText = inssql1
Dim DR1 As OleDbDataReader
DR1 = cmdsql1.ExecuteReader
DR1.Read()
If DR1.HasRows Then
Label4.Text = DR1("allfee")
Label3.Text = DR1("driver")
Label2.Text = DR1("ajans")
Label5.Text = DR1("noo")
Label14.Text = "yes"
Else
Label14.Text = "noooo"
Label4.Text = ""
Label3.Text = ""
Label2.Text = ""
Label5.Text = ""
End If

تو قسمت قرمز ارور رو میده
یعنی وقتی نتیجه پیا نمیکنه این اروررو میده
اما من گذاشتم
Else
Label14.Text = "noooo"
Label4.Text = ""
Label3.Text = ""
Label2.Text = ""
Label5.Text = ""
پس چرا عمل نمیکنه؟:ناراحت:
چطوری کنترلش کنم که وقتی چیزی پیدا نکرد از db ارور نده؟
تو رو خدا کمک کنید:گریه:
ممنون

r_zamani
پنج شنبه 28 شهریور 1387, 14:27 عصر
خوب قبلش چک کن که مقدارش dbnull نباشه:

if dr1("...")<>DBNULL then ....
else
....
end if

toopak
پنج شنبه 28 شهریور 1387, 22:51 عصر
وقتی اینو میزنم
یعنی کدم رو مینویسم
If DR1("allfee") DR1.DBNull Then End If زیر DR1.DBNull
یه خط آبی میکشه و مینویسه
DR1.DBNull is not a member of "system.data.oledb.oledbdatareader
چیکار کنم؟
به خدا خیلی حیاتیه
کمکم کنید
دوستای برنامه نوییییس

Chabok
جمعه 29 شهریور 1387, 14:21 عصر
با سلام
بهتره یک تابع بنویسید که مقدار شما رو بگیره . اگر معادل DBNull.value بود string.empty برگردونه .

و به این صورت استفاده کنید :


Label4.Text = RNull(DR1("allfee"))

تابع هم بهتره آرگومانش رو بصورت Object بگیره و خروجی هم هر چیزی که صلاح میدونید .
شرطتون هم میتونه به این صورت باشه :


If MyObj Is DBNull Then

موفق باشید . خدانگهدار

mojtaba-saleh
جمعه 29 شهریور 1387, 21:18 عصر
این رو هم تست کن : DBNull.Value

reza6384
جمعه 29 شهریور 1387, 23:58 عصر
می تونید از TryCast هم استفاده کنید :



TryCast(Object , DataType)
ST = TryCast(SomeObject,String)


در صورتی که SomeObject یک DbNull باشه مقدار ST یک رشته تهی خواهد شد.

KurdSsTaji
دوشنبه 03 تیر 1398, 08:01 صبح
دوستان اگه از تو نرم افزار خطا بده بدون کد نویسی چطور حل میشه این خطا؟؟؟؟؟ممنون میشم یکی راهنمایی کنه