DBNULL TO TYPE STRING IS NOT VALID
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()
é 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()
Tá disparando o erro em qual linha?
LLAIA o erro não mostra a linha, mas em textes que fiz, o erro ocorre quando entra no laço FOR
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.
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.
Muito provavelmente o erro esteja em uma dessas linhas:
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
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