GAMBIARRA
Senhores, quero a opinião de vocês, tenho uma gambiarra query com um laço for next para carregar os parâmetros do meu insert conforme abaixo:
Como podem notar, preciso salvar o primeiro caractere de cada célula, até onde isso é seguro? ou em algum momento pode ser salvo nulo por exemplo, e minha relação vai pro ralo.
For i As Integer = 0 To DataGridView1.Rows.Count - 1
cmd.Parameters.Clear()
cmd.Parameters.Add([Ô]@codForma[Ô], OleDbType.Integer).Value = Convert.ToInt32(DataGridView1.Rows.Item(i).Cells(0).Value.Substring(0, 1))
cmd.Parameters.Add([Ô]@codSit[Ô], OleDbType.Integer).Value = Convert.ToInt32(DataGridView1.Rows.Item(i).Cells(1).Value.Substring(0, 1))
cmd.ExecuteNonQuery()
Next i
Como podem notar, preciso salvar o primeiro caractere de cada célula, até onde isso é seguro? ou em algum momento pode ser salvo nulo por exemplo, e minha relação vai pro ralo.
Preencha o grid com objetos, onde o operador seja o igual [Ô]=[Ô] por padrão.
Mestre KERPLUNK, quanto ao preenchimento do grid, faço validações e não existe nenhuma possibilidade da célula estar vazia, o meu medo é em algum momento o processamento falhar e não salvar o primeiro caractere da célula.
Se você não quer correr o risco de entrar dados nulos, então você terá que fazer uma validação. Criei um exemplo aqui, qualquer coisa adapte aÃ.
Para usar ficaria mais ou menos assim:
Public IsValid(cell As DataGridViewCell) As Boolean
if (cell.Value isNot Nothing) then
return true
End if
return false
End Function
Para usar ficaria mais ou menos assim:
For i As Integer = 0 To DataGridView1.Rows.Count - 1
if IsValid(DataGridView1.Rows.Item(i).Cells(0)) AndAlso IsValid(DataGridView1.Rows.Item(i).Cells(1)) then
cmd.Parameters.Clear()
cmd.Parameters.Add([Ô]@codForma[Ô], OleDbType.Integer).Value = Convert.ToInt32(DataGridView1.Rows.Item(i).Cells(0).Value.Substring(0, 1))
cmd.Parameters.Add([Ô]@codSit[Ô], OleDbType.Integer).Value = Convert.ToInt32(DataGridView1.Rows.Item(i).Cells(1).Value.Substring(0, 1))
cmd.ExecuteNonQuery()
End if
Next
Tópico encerrado , respostas não são mais permitidas