INSERT COM DATAGRIDVIEW
Eu estou fazendo de cabeça, por isso tantos erros. Tente assim:
Private Sub SalvaGridAccess()
[txt-color=#e80000]dim con As OleDbConnection = GetConnection()[/txt-color]
[txt-color=#e80000]Dim Transacao As OleDbTransaction[/txt-color]
Try
con.Open()
[txt-color=#e80000]Transacao = con.BeginTransaction()[/txt-color]
dim cmd As New OleDbCommand
cmd.Connection = con
cmd.Transaction = Transacao
cmd.CommandType = CommandType.Text
cmd.CommandText = [Ô]INSERT INTO ContasApagar (IDLancamento, DataPagamento, Valor)[Ô] & _
[Ô]VALUES (@IDLancamento, @DataPagamento, @Valor)[Ô]
For i As Integer = 0 To DataGridView1.Rows.Count - 1
cmd.Parameters.Clear()
cmd.Parameters.Add([Ô]@IDLancamento[Ô], OleDbType.VarChar).Value = DataGridView1.Rows.Item(i).Cells(0).Value.ToString
cmd.Parameters.Add([Ô]@DataPagamento[Ô], OleDbType.Date).Value = DataGridView1.Rows.Item(i).Cells(1).Value
cmd.Parameters.Add([Ô]@Valor[Ô], OleDbType.Double).Value = DataGridView1.Rows.Item(i).Cells(2).Value
cmd.ExecuteNonQuery()
Next i
Transacao.Commit()
Catch ex As Exception
Transacao.Rollback()
MessageBox.Show(ex.Message)
Finally
con.Close()
End Try
End Sub
deixa ver....
vc diz q os dados vem de texts, então imagino q vc valide os dados e insira em um datatable q sera a fonte de dados do grid, se vc faz esse caminho, os dados foram validados na inclusão no datatable, então pq não faz o laco no datatable onde tem certeza dos dados serem validos?
agora se dos texts vc adiciona direto no grid, já são outros 500....
vc diz q os dados vem de texts, então imagino q vc valide os dados e insira em um datatable q sera a fonte de dados do grid, se vc faz esse caminho, os dados foram validados na inclusão no datatable, então pq não faz o laco no datatable onde tem certeza dos dados serem validos?
agora se dos texts vc adiciona direto no grid, já são outros 500....
Private Sub SalvaGridAccess()
Try
Using con As OleDbConnection = GetConnection()
con.Open()
Using cmd As New OleDbCommand
cmd.Connection = con
cmd.CommandType = CommandType.Text
Dim SQL as String = null
For i As Integer = 0 To DataGridView1.Rows.Count - 1
cmd.Parameters.Clear()
SQL =+ [Ô]INSERT INTO ContasApagar (IDLancamento, DataPagamento, Valor)[Ô] & _
[Ô]VALUES ([ô][Ô] & DataGridView1.Rows.Item(i).Cells(0).Value.ToString & [Ô][ô],[Ô] &_
[Ô][ô][Ô] &DataGridView1.Rows.Item(i).Cells(1).Value & [Ô][ô],[ô][Ô] & DataGridView1.Rows.Item(i).Cells(2).Value & [Ô][ô]);[Ô]
Next i
cmd.CommandText = SQL
cmd.ExecuteNonQuery()
End Using
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
repare que o cmd.ExecuteNonQuery fica fora do loop. Aqui se vc quizer aperfeiçoar é só colocar um tratamento dentro do loop quanto a questão de datas
A todos os que responderam em pleno domingão, muito obrigado... isso prova que este é melhor fórum sobre programação que conheço, e que vocês são ótimos!!!
Optei por deixar da seguinte forma:
Algo a acrescentar ?
Optei por deixar da seguinte forma:
Private Sub SalvaGridAccess()
Using con As OleDbConnection = GetConnection()
con.Open()
Using Transacao As OleDbTransaction = con.BeginTransaction()
Using cmd As New OleDbCommand
Try
cmd.Connection = con
cmd.Transaction = Transacao
cmd.CommandType = CommandType.Text
cmd.CommandText = [Ô]INSERT INTO ContasApagar (IDLancamento, DataPagamento, Valor )[Ô] & _
[Ô]VALUES (@IDLancamento, @DataPagamento, @Valor)[Ô]
For i As Integer = 0 To DataGridView1.Rows.Count - 1
cmd.Parameters.Clear()
cmd.Parameters.Add([Ô]@IDLancamento[Ô], OleDbType.VarChar).Value = DataGridView1.Rows.Item(i).Cells(0).Value
cmd.Parameters.Add([Ô]@DataPagamento[Ô], OleDbType.Date).Value = DataGridView1.Rows.Item(i).Cells(1).Value
cmd.Parameters.Add([Ô]@Valor[Ô], OleDbType.Double).Value = DataGridView1.Rows.Item(i).Cells(2).Value
cmd.ExecuteNonQuery()
Next i
Transacao.Commit()
Catch ex As Exception
Transacao.Rollback()
MessageBox.Show(ex.Message)
Finally
con.Close()
End Try
End Using
End Using
End Using
End Sub
Algo a acrescentar ?
Tá de Boa
Acho que agora a parte do Finally ficou desnecessária.
Nos demais, show de bola! é isso ai!
Nos demais, show de bola! é isso ai!
Agora a parte mais chata...Quem pontuar? kkkk
o JABA
Tópico encerrado , respostas não são mais permitidas