Usuário com melhor resposta
como mover um registro especifico de uma tabela para outra

Pergunta
-
olá pessoal, gostaria de saber como eu movo um registro de uma tabela para outra tabela idêntica, não é copiar de uma tabela para outra é mover mesmo, clicando na datagrid para selecionar e depois no botão e mover de uma tabela para outra, não tenho ideia de como fazer isso v b
Respostas
-
Prezado Arlindo.
Pelo que entendi, você quer algo semelhante a transferir (retirar e depositar) R$ 100,00 da conta corrente para conta poupança.
Para isto você deve fazer:
Select dados da tabela origem
Insert dados selecionados na tabela destino.
Delete dados selecionados da tabela origem.
Você pode fazer as operações uma a uma, confirmando se a anterior foi executada e realizando a próxima, porém aconsellho a utlizar transaction, onde as operações são feitas "simultaneamente" e, se houver erro, volta tudo ao estado anterior. (como se caísse o sistema durante a transferência e o dinheiro voltasse para a conta corrente).
No site do Macoratti há muitos exemplos (no Google digite: transaction vb macoratti)
Segue um exemplo em Access.
Se ajudou, por gentileza, marque como útil/resposta.
Dim CONN As New OleDbConnection() CONN.ConnectionString = Psr_ConnectionString Dim CMD As OleDbCommand = CONN.CreateCommand Try CONN.Open() Dim trans As OleDbTransaction = CONN.BeginTransaction CMD.Transaction = trans Try CMD.CommandText = "insert into cadastro_ccb (ccb_nome, ccb_cnpj, ccb_fundo_fixo, ccb_endereco, ccb_numero, ccb_complemento, ccb_bairro, ccb_cidade, ccb_uf, ccb_pais, ccb_cep, ccb_telefone, ccb_fax, ccb_email, ccb_site, " & _ "ccb_observacao_1, ccb_observacao_2, ccb_observacao_3, ccb_observacao_4, ccb_observacao_5, ccb_observacao_6, ccb_observacao_7, ccb_observacao_8, ccb_operador, ccb_data_hora) " & _ "values ('" & Lsr_Nome & "', '" & Lsr_CNPJ & "', '" & Lsr_Valor & "', '" & _ Ar_Endereço(0) & "', '" & Ar_Endereço(1) & "', '" & Ar_Endereço(2) & "', '" & Ar_Endereço(3) & "', '" & Ar_Endereço(4) & "', '" & Ar_Endereço(5) & "', '" & _ Ar_Endereço(6) & "', '" & Ar_Endereço(7) & "', '" & Ar_Contatos(0) & "', '" & Ar_Contatos(1) & "', '" & Ar_Contatos(2) & "', '" & Ar_Contatos(3) & "', '" & _ Ar_Observação(0) & "', '" & Ar_Observação(1) & "', '" & Ar_Observação(2) & "', '" & Ar_Observação(3) & "', '" & Ar_Observação(4) & "', '" & Ar_Observação(5) & "', '" & Ar_Observação(6) & "', '" & Ar_Observação(7) & "', '" & Psr_Operador & "', #" & Now.ToString("MM/dd/yyyy HH:mm:ss") & "#)" CMD.ExecuteNonQuery() CMD.CommandText = "select top 1 ccb_id from cadastro_ccb where ccb_nome = '" & Lsr_Nome & "' order by ccb_id" Psr_ID_CCB = CStr(CMD.ExecuteScalar) CMD.CommandText = "insert into caixa values (" & Psr_ID_CCB & ", '" & Lsr_Valor & "', 0, 0, '" & Psr_Operador & "', #" & Now.ToString("MM/dd/yyyy HH:mm:ss") & "#, 'fundo fixo inicial', '" & Lsr_Valor & "')" CMD.ExecuteNonQuery() Dim CONN2 As New OleDbConnection() CONN2.ConnectionString = Psr_ConnectionString Dim CMD2 As OleDbCommand = CONN2.CreateCommand CMD2.CommandText = "select item_codigo, item_descricao, item_preco from cadastro_item_geral" CONN2.Open() Dim RD As OleDbDataReader = CMD2.ExecuteReader While RD.Read() CMD.CommandText = "insert into cadastro_item values (" & Psr_ID_CCB & ", '" & RD.GetString(0) & "', '" & RD.GetString(1) & "', " & RD.GetDouble(2).ToString.Replace(",", ".") & ", 0, '" & Psr_Operador & "', #" & Now.ToString("MM/dd/yyyy HH:mm:ss") & "#)" CMD.ExecuteNonQuery() End While trans.Commit() RD.Close() CONN2.Close() Return 1 Catch ex As Exception Try trans.Rollback() Catch ex1 As OleDbException If CONN.State = 1 Then CONN.Close() Psr_Erro = ex1.ToString Return -1 End Try If CONN.State = 1 Then CONN.Close() Psr_Erro = ex.ToString Return -1 End Try CONN.Close() Return 1 Catch ex As Exception If CONN.State = 1 Then CONN.Close() Psr_Erro = ex.ToString Return -1 End Try End Function
MARIANO1776
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 31 de janeiro de 2018 18:02
Todas as Respostas
-
Prezado Arlindo.
Pelo que entendi, você quer algo semelhante a transferir (retirar e depositar) R$ 100,00 da conta corrente para conta poupança.
Para isto você deve fazer:
Select dados da tabela origem
Insert dados selecionados na tabela destino.
Delete dados selecionados da tabela origem.
Você pode fazer as operações uma a uma, confirmando se a anterior foi executada e realizando a próxima, porém aconsellho a utlizar transaction, onde as operações são feitas "simultaneamente" e, se houver erro, volta tudo ao estado anterior. (como se caísse o sistema durante a transferência e o dinheiro voltasse para a conta corrente).
No site do Macoratti há muitos exemplos (no Google digite: transaction vb macoratti)
Segue um exemplo em Access.
Se ajudou, por gentileza, marque como útil/resposta.
Dim CONN As New OleDbConnection() CONN.ConnectionString = Psr_ConnectionString Dim CMD As OleDbCommand = CONN.CreateCommand Try CONN.Open() Dim trans As OleDbTransaction = CONN.BeginTransaction CMD.Transaction = trans Try CMD.CommandText = "insert into cadastro_ccb (ccb_nome, ccb_cnpj, ccb_fundo_fixo, ccb_endereco, ccb_numero, ccb_complemento, ccb_bairro, ccb_cidade, ccb_uf, ccb_pais, ccb_cep, ccb_telefone, ccb_fax, ccb_email, ccb_site, " & _ "ccb_observacao_1, ccb_observacao_2, ccb_observacao_3, ccb_observacao_4, ccb_observacao_5, ccb_observacao_6, ccb_observacao_7, ccb_observacao_8, ccb_operador, ccb_data_hora) " & _ "values ('" & Lsr_Nome & "', '" & Lsr_CNPJ & "', '" & Lsr_Valor & "', '" & _ Ar_Endereço(0) & "', '" & Ar_Endereço(1) & "', '" & Ar_Endereço(2) & "', '" & Ar_Endereço(3) & "', '" & Ar_Endereço(4) & "', '" & Ar_Endereço(5) & "', '" & _ Ar_Endereço(6) & "', '" & Ar_Endereço(7) & "', '" & Ar_Contatos(0) & "', '" & Ar_Contatos(1) & "', '" & Ar_Contatos(2) & "', '" & Ar_Contatos(3) & "', '" & _ Ar_Observação(0) & "', '" & Ar_Observação(1) & "', '" & Ar_Observação(2) & "', '" & Ar_Observação(3) & "', '" & Ar_Observação(4) & "', '" & Ar_Observação(5) & "', '" & Ar_Observação(6) & "', '" & Ar_Observação(7) & "', '" & Psr_Operador & "', #" & Now.ToString("MM/dd/yyyy HH:mm:ss") & "#)" CMD.ExecuteNonQuery() CMD.CommandText = "select top 1 ccb_id from cadastro_ccb where ccb_nome = '" & Lsr_Nome & "' order by ccb_id" Psr_ID_CCB = CStr(CMD.ExecuteScalar) CMD.CommandText = "insert into caixa values (" & Psr_ID_CCB & ", '" & Lsr_Valor & "', 0, 0, '" & Psr_Operador & "', #" & Now.ToString("MM/dd/yyyy HH:mm:ss") & "#, 'fundo fixo inicial', '" & Lsr_Valor & "')" CMD.ExecuteNonQuery() Dim CONN2 As New OleDbConnection() CONN2.ConnectionString = Psr_ConnectionString Dim CMD2 As OleDbCommand = CONN2.CreateCommand CMD2.CommandText = "select item_codigo, item_descricao, item_preco from cadastro_item_geral" CONN2.Open() Dim RD As OleDbDataReader = CMD2.ExecuteReader While RD.Read() CMD.CommandText = "insert into cadastro_item values (" & Psr_ID_CCB & ", '" & RD.GetString(0) & "', '" & RD.GetString(1) & "', " & RD.GetDouble(2).ToString.Replace(",", ".") & ", 0, '" & Psr_Operador & "', #" & Now.ToString("MM/dd/yyyy HH:mm:ss") & "#)" CMD.ExecuteNonQuery() End While trans.Commit() RD.Close() CONN2.Close() Return 1 Catch ex As Exception Try trans.Rollback() Catch ex1 As OleDbException If CONN.State = 1 Then CONN.Close() Psr_Erro = ex1.ToString Return -1 End Try If CONN.State = 1 Then CONN.Close() Psr_Erro = ex.ToString Return -1 End Try CONN.Close() Return 1 Catch ex As Exception If CONN.State = 1 Then CONN.Close() Psr_Erro = ex.ToString Return -1 End Try End Function
MARIANO1776
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 31 de janeiro de 2018 18:02
-
Boa tarde,
Por falta de retorno essa thread está encerrada.
Se necessário favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.