PDA

View Full Version : مشکل با استخراج از بانک



toopak
سه شنبه 26 شهریور 1387, 16:28 عصر
سلام دوستان
من یه کد دارم که اینه


Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted

Label1.Text = ComboBox1.Text.ToString
Dim ds As New DataSet
Dim inssql As String
Dim cmdsql As New OleDbCommand
inssql = "SELECT count(sid) as noo,sum(fee*(comi/100)) as ajans,sum(fee) as allfee,sum(fee-(fee*(comi/100))) as driver FROM tbservices where drname='" & Label1.Text & "'"
cmdsql.Connection = con
cmdsql.CommandText = inssql
Dim DR As OleDbDataReader
DR = cmdsql.ExecuteReader
DR.Read()
If DR.HasRows = False Then
Label4.Text = ""
Label3.Text = ""
Label2.Text = ""
Label5.Text = ""
Else
Label4.Text = DR("allfee")
Label3.Text = DR("driver")
Label2.Text = DR("ajans")
Label5.Text = DR("noo")
End If

End Sub

کارش اینه که از توی دیتابیس یه سری اطلاعات رو استخراج میکنه
بر اساس یکی از فیلدها
حالا مشکل اینه که وقتی پیدا نمیکنه به جای اینکه
این دستور رو اجرا کنه

Label4.Text = ""
Label3.Text = ""
Label2.Text = ""
Label5.Text = ""
تو قسمت قرمز ارور زیر رو میده


Conversion from type 'DBNull' to type 'String' is not valid
این یعنی چی؟

toopak
سه شنبه 26 شهریور 1387, 23:33 عصر
خواهش میکنم کمکم کنید :-(

salehbagheri
سه شنبه 26 شهریور 1387, 23:40 عصر
این یعنی اینکه بعضی از فیلدهای جدولت Null یا خالی از داده هستند که این باعث بروز مشکل شده!

morteza_261
سه شنبه 26 شهریور 1387, 23:58 عصر
سلام
این تیکه کدتون رو:

If DR.HasRows = False Then
Label4.Text = ""
Label3.Text = ""
Label2.Text = ""
Label5.Text = ""
Else
Label4.Text = DR("allfee")
Label3.Text = DR("driver")
Label2.Text = DR("ajans")
Label5.Text = DR("noo")
End If


به این شکل بنویسید:


If DR.HasRows Then
Label4.Text = DR("allfee")
Label3.Text = DR("driver")
Label2.Text = DR("ajans")
Label5.Text = DR("noo")
Else
Label4.Text = ""
Label3.Text = ""
Label2.Text = ""
Label5.Text = ""
End If



من تو یه برمانه کد رو اینطوری نوشته بودم و حتی در صورت خالی بودن فیلد جواب میداد.یه امتحانی کنید:




If CmbSearch.Text = "نام"Then
WHERE = "Fname Like N'" & TxtSearch.Text & "%'"
PubSqlCom.CommandText = "SELECT * FROM TblPhoneBook WHERE " & WHERE
PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()
PubSqlDR = PubSqlCom.ExecuteReader()
If PubSqlDR.HasRows Then
While PubSqlDR.Read()
Lst = ListView1.Items.Add(PubSqlDR("Id"))
Lst.SubItems.Add(1).Text = (PubSqlDR("Id"))
Lst.SubItems.Add(2).Text = (PubSqlDR("FName"))
Lst.SubItems.Add(3).Text = (PubSqlDR("LName"))
Lst.SubItems.Add(4).Text = (PubSqlDR("CodePhone"))
Lst.SubItems.Add(5).Text = (PubSqlDR("PhoneNum"))
Lst.SubItems.Add(6).Text = (PubSqlDR("MobileNum"))
EndWhile
Else
MessageBox.Show("موردی برای جستجو یافت نشد", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button3, MessageBoxOptions.RightAlign)
TxtSearch.Clear()
EndIf


ایام به کام