DBNULL TO TYPE STRING IS NOT VALID

GILBERTOJW 28/03/2013 12:25:35
#421179
Pessoal alguém pode me ajudar à consertar a mensagem de erro que está acima ?
é uma planilha excel que carrego num datagrid, e na rotina abaixo eu coloco os dados num banco .mdb
Porém alguns dados são em branco.

Dim str1
Dim connS As String
connS = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.mdb;Persist Security Info=false;jet oledb:database password=gibadoexpresso340[Ô]
Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = connS


conect.Open()

Dim selcom As New OleDb.OleDbCommand
selcom.CommandText = [Ô]SELECT max(num) FROM [produtos];[Ô]
selcom.Connection = conect

Dim dr As OleDb.OleDbDataReader
dr = selcom.ExecuteReader()

While dr.Read()
intNum = dr.Item(0)
End While

conect.Close()

With DataGridView1

If .Rows.Count = 0 Then
MsgBox([Ô]Não existem ítens para serem carregados.[Ô])
Else
Try


cmd = New OleDb.OleDbCommand
cmd.Connection = Con
Dim strDatacadastro As Date
Dim strFamilia As String
Dim strProduto As String
Dim strFoto As String
Dim strUnidade As String
Dim douPrecoproduto As Double

Con.Open()

For x As Integer = 0 To DataGridView1.Rows.Count - 1
intNum = intNum + 1
strFamilia = DataGridView1.Rows(x).Cells(0).Value
strProduto = DataGridView1.Rows(x).Cells(1).Value
douPrecoproduto = DataGridView1.Rows(x).Cells(2).Value
strFoto = DataGridView1.Rows(x).Cells(3).Value
strUnidade = DataGridView1.Rows(x).Cells(4).Value
strDatacadastro = Today
str1 = [Ô]INSERT INTO produtos(num,familia,produto,precoproduto,foto,unidade,datacadastro)values(@num,@familia,@produto,@precoproduto,@foto,@unidade,@datacadastro)[Ô]
Dim com As New OleDb.OleDbCommand(str1, Con)
com.Parameters.AddWithValue([Ô]@num[Ô], intNum)
com.Parameters.AddWithValue([Ô]@familia[Ô], strFamilia)
com.Parameters.AddWithValue([Ô]@produto[Ô], strProduto)
com.Parameters.AddWithValue([Ô]@precoproduto[Ô], douPrecoproduto)
com.Parameters.AddWithValue([Ô]@foto[Ô], strFoto)
com.Parameters.AddWithValue([Ô]@unidade[Ô], strUnidade)
com.Parameters.AddWithValue([Ô]@datacadastro[Ô], strDatacadastro)
com.ExecuteNonQuery()
Next
MessageBox.Show([Ô]Gravado com sucesso![Ô], [Ô]Register[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As OleDb.OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Oledb Error[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]General Error[Ô])
End Try
End If
End With
Con.Dispose()
Con.Close()
LLAIA 28/03/2013 13:36:44
#421185
Tá disparando o erro em qual linha?
GILBERTOJW 28/03/2013 13:38:57
#421187
LLAIA o erro não mostra a linha, mas em textes que fiz, o erro ocorre quando entra no laço FOR
OMAR2011 28/03/2013 15:27:27
#421199
cmd = New OleDb.OleDbCommand
cmd.Connection = Con
Dim strDatacadastro As Date
Dim strFamilia As String
Dim strProduto As String
Dim strFoto As String
Dim strUnidade As String
Dim douPrecoproduto As Double

Con.Open()
Onde está a string de conexão?
Você não abriu nada.

[txt-color=#007100] con[/txt-color] = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.mdb;Persist Security Info=false;jet oledb:database password=gibadoexpresso340[Ô]

Isto é que tinha de fazer.
KERPLUNK 28/03/2013 17:49:30
#421218
Resposta escolhida
Muito provavelmente o erro esteja em uma dessas linhas:

strFamilia = DataGridView1.Rows(x).Cells(0).Value
strProduto = DataGridView1.Rows(x).Cells(1).Value
douPrecoproduto = DataGridView1.Rows(x).Cells(2).Value
strFoto = DataGridView1.Rows(x).Cells(3).Value
strUnidade = DataGridView1.Rows(x).Cells(4).Value

O que acontece é que alguma dessas células está com valor null e você está tentando atribuir um valor null à um tipo string. Mude os tipos string para String que o erro deve desaparecer, mesmo assim, verifique
Tópico encerrado , respostas não são mais permitidas