Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafaeldupalio

Copiar linha da tabela A para Tabela B

Recommended Posts

Galera tenho 2 tabelas no meu banco de dados 1 a matriz onde estao tds os ddos e outra que vai ser usada como historico(movimentação) como faço para copiar td conteudo de uma certa linha da tabela a para a tabela b?
Fiz da seguinte maneira me corrijam caso tenha uma maneira mais rápida e pratica de fazer isso.

Lembrando que uso banco em access.

vSql = "SELECT * FROM TAB_QUADRO_BRASFELS WHERE CT='"&var_ct&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
var_ct = myRst.fields("ct")
var_DNF = myrst.fields("Data_NF")
var_NFISCAL = myrst.fields("Nfiscal")
var_descricao = myrst.fields("Descricao")
var_descricao_item = myrst.fields("Descricao_item")
var_Processador = myrst.fields("Processador")
var_Men = myrst.fields("Mem")
var_HD = myrst.fields("HD")
var_data = myrst.fields("data")
var_Windows = myrst.fields("Windows")
var_office = myrst.fields("OFFICE")
var_valor= myrst.fields("valor")
var_departamento = myrst.fields("Departamento")
var_matricula = myrst.fields("Matricula")
var_usuario = myrst.fields("usuario")
var_status = myrst.fields("status")
var_Obs = myrst.fields("Obs")
var_vuni = myrst.fields("valor_uni")
vSql="INSERT INTO TAB_DEVOLUCAO_BRASFELS ("
vSql=vSql & "CT, "
vSql=vSql & "DATA_NF, "
vSql=vSql & "DESCRICAO, "
vSql=vSql & "NFISCAL, "
vSql=vSql & "DESCRICAO_ITEM, "
vSql=vSql & "MEM, "
vSql=vSql & "PROCESSADOR, "
vSql=vSql & "DATA, "
vSql=vSql & "HD, "
vSql=vSql & "OFFICE, "
vSql=vSql & "WINDOWS, "
vSql=vSql & "DEPARTAMENTO, "
vSql=vSql & "VALOR, "
vSql=vSql & "MATRICULA, "
vSql=vSql & "STATUS, "
vSql=vSql & "USUARIO, "
vSql=vSql & "OBS, "
vSql=vSql & "VALOR_UNI) values ('"
vSql=vSql & Var_CT & "','"
vSql=vSql & Var_DNF & "','"
vSql=vSql & Var_NFISCAL & "','"
vSql=vSql & Var_DESCRICAO & "','"
vSql=vSql & Var_DESCRICAO_ITEM & "','"
vSql=vSql & Var_PROCESSADOR & "','"
vSql=vSql & Var_Men & "','"
vSql=vSql & Var_HD & "','"
vSql=vSql & Var_DATA & "','"
vSql=vSql & Var_WINDOWS & "','"
vSql=vSql & Var_OFFICE & "','"
vSql=vSql & Var_VALOR & "','"
vSql=vSql & Var_DEPARTAMENTO & "','"
vSql=vSql & Var_MATRICULA & "','"
vSql=vSql & Var_USUARIO & "','"
vSql=vSql & Var_STATUS & "','"
vSql=vSql & Var_OBS & "','"
vSql=vSql & Var_VUNI &"')"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

já respondendo a mim mesmo ao executar aparece a msg

Microsoft JET Database Engine erro '80040e07'

Tipo de dados imcompatível na expressão de critério.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo está indicando que você está tentando inserir um campo com tipos de dados diferente tipo o último campo valor unitário está com apóstrofos ele é um campo texto? outra obs com a sua normalização redundância de dados não é legal a não ser em casos ter muitos usuários com muitos acessos o tempo todo ou para evitar uma consulta muito complexa que implicaria em performance... fora isso e outras exceções não é indicado não!! trabalhe com referência!! especificando somente os campos que irão modificar... mas se preferir manter a redundância veja se os campos estão na mesma ordem e faça assim pois você joga de uma tabela para outra!!

 

sql = 'INSERT INTO TAB_DEVOLUCAO_BRASFELS SELECT * FROM TAB_QUADRO_BRASFELS WHERE CT='"&var_ct&"'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo está indicando que você está tentando inserir um campo com tipos de dados diferente tipo o último campo valor unitário está com apóstrofos ele é um campo texto? outra obs com a sua normalização redundância de dados não é legal a não ser em casos ter muitos usuários com muitos acessos o tempo todo ou para evitar uma consulta muito complexa que implicaria em performance... fora isso e outras exceções não é indicado não!! trabalhe com referência!! especificando somente os campos que irão modificar... mas se preferir manter a redundância veja se os campos estão na mesma ordem e faça assim pois você joga de uma tabela para outra!!

 

sql = 'INSERT INTO TAB_DEVOLUCAO_BRASFELS SELECT * FROM TAB_QUADRO_BRASFELS WHERE CT='"&var_ct&"'"

Gustavo vlw mais uma vez! resolvido so faltava colocar o v antes do sql com sua dica deu certo.

sobre a redundancia eu sei é que a tabela quadro tem 2500 linhas e o material qnd é devolvido nao pode aparecer mais nessa tabela, e como preciso de um historico de quando foi devolvido resolvi copiar alinha inteira para a tabela devolução.

 

Cara sei que vc ja esta ajudando muito mas sem querer explorar, mas vc poderia me explicar quando e pq usamos os caracteres " , ',#,& o * eu sei que é para selecionar tudo mas o restante realmente eu nao sei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo está indicando que você está tentando inserir um campo com tipos de dados diferente tipo o último campo valor unitário está com apóstrofos ele é um campo texto? outra obs com a sua normalização redundância de dados não é legal a não ser em casos ter muitos usuários com muitos acessos o tempo todo ou para evitar uma consulta muito complexa que implicaria em performance... fora isso e outras exceções não é indicado não!! trabalhe com referência!! especificando somente os campos que irão modificar... mas se preferir manter a redundância veja se os campos estão na mesma ordem e faça assim pois você joga de uma tabela para outra!!

 

sql = 'INSERT INTO TAB_DEVOLUCAO_BRASFELS SELECT * FROM TAB_QUADRO_BRASFELS WHERE CT='"&var_ct&"'"

Gustavo vlw mais uma vez! resolvido so faltava colocar o v antes do sql com sua dica deu certo.

sobre a redundancia eu sei é que a tabela quadro tem 2500 linhas e o material qnd é devolvido nao pode aparecer mais nessa tabela, e como preciso de um historico de quando foi devolvido resolvi copiar alinha inteira para a tabela devolução.

 

Cara sei que vc ja esta ajudando muito mas sem querer explorar, mas vc poderia me explicar quando e pq usamos os caracteres " , ',#,& o * eu sei que é para selecionar tudo mas o restante realmente eu nao sei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

de uma maneira rápida...

 

sql básica

 

obs: evitar criar tabelas e campos com espaço, letra maiúscula e com acentos

 

exemplo de tabela = clientes(codnome,nomecompleto,datanascimento,sexo,profissao,quantosfilhos)

 

no exemplo acima temos o campo sexo que poderia ser masculino ou feminino mas não o campo é do tipo numerico onde zero representa masculino e um o feminino

 

quando o campo é texto que no exemplo é somente o campo nomecompleto ele deve estar entre apóstrofos vamos ao exemplo

 

sql = "select * from clientes where nomecompleto ='gustavo emygdio' "

 

acima é a instrução sql basica com as aspas duplas só no inicio e fim ... por que no asp devemos quebrar a sql para inserir valores dinamicos a sql ... COMO ASSIM VALORES DINÂMICOS??

 

se eu executa a sql acima somente irá executar a sql buscando o nomecompleto com a critério gustavo emygdio onde não resolve ... vamos a um exemplo dinâmico

 

nome = request.form("nomecompleto")

 

sql = "select * from clientes where nomecompleto = '" & nome & "'"

 

o e comercial (&) é um caracter especial para juntarmos 2 textos

 

a tralha (#) é para data veja o exemplo

'exemplo estático

sql = "select * from clientes where datanascimento = #12/25/2014#"

'exemplo dinâmico

dtnasc = request.form("datanascimento")

sql = "select * from clientes where datanascimento = #" & invertedata(dtnasc) & "#"

 

lembra do invertedata??? a sql é de padrão americano por isso devemos inverter para MM/DD/AAAA

 

e o campo número não tem caracter vamos ver...

'exemplo estático

 

sql = "select * from clientes where quantosfilhos =1"

 

'exemplo dinâmico

 

qfilhos = request.form("quantosfilhos")

 

sql = "select * from clientes where quantosfilhos= " & qfilhos

 

na sql acima não tem a aspar duplas não precisa no final... na estática tem por que eu tive que fechar o texto você entenderá melhor dando um response.write no sql tanto na dinâmica como na estática pois o resultado será o mesmo!!!

 

é o básico mas qualquer coisa é só perguntar... no que eu puder estou a disposição...

 

Sucesso!

att;

Gustavo Emygdio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

de uma maneira rápida...

 

sql básica

 

obs: evitar criar tabelas e campos com espaço, letra maiúscula e com acentos

 

exemplo de tabela = clientes(codnome,nomecompleto,datanascimento,---o,profissao,quantosfilhos)

 

no exemplo acima temos o campo ---o que poderia ser masculino ou feminino mas não o campo é do tipo numerico onde zero representa masculino e um o feminino

 

quando o campo é texto que no exemplo é somente o campo nomecompleto ele deve estar entre apóstrofos vamos ao exemplo

 

sql = "select * from clientes where nomecompleto ='gustavo emygdio' "

 

acima é a instrução sql basica com as aspas duplas só no inicio e fim ... por que no asp devemos quebrar a sql para inserir valores dinamicos a sql ... COMO ASSIM VALORES DINÂMICOS??

 

se eu executa a sql acima somente irá executar a sql buscando o nomecompleto com a critério gustavo emygdio onde não resolve ... vamos a um exemplo dinâmico

 

nome = request.form("nomecompleto")

 

sql = "select * from clientes where nomecompleto = '" & nome & "'"

 

o e comercial (&) é um caracter especial para juntarmos 2 textos

 

a tralha (#) é para data veja o exemplo

'exemplo estático

sql = "select * from clientes where datanascimento = #12/25/2014#"

'exemplo dinâmico

dtnasc = request.form("datanascimento")

sql = "select * from clientes where datanascimento = #" & invertedata(dtnasc) & "#"

 

lembra do invertedata??? a sql é de padrão americano por isso devemos inverter para MM/DD/AAAA

 

e o campo número não tem caracter vamos ver...

'exemplo estático

 

sql = "select * from clientes where quantosfilhos =1"

 

'exemplo dinâmico

 

qfilhos = request.form("quantosfilhos")

 

sql = "select * from clientes where quantosfilhos= " & qfilhos

 

na sql acima não tem a aspar duplas não precisa no final... na estática tem por que eu tive que fechar o texto você entenderá melhor dando um response.write no sql tanto na dinâmica como na estática pois o resultado será o mesmo!!!

 

é o básico mas qualquer coisa é só perguntar... no que eu puder estou a disposição...

 

Sucesso!

att;

Gustavo Emygdio.

Show gustavo esclareceu bastante mesmo. eu "aprendi" asp em um curso de 4 semanas e foi bem corrido, como sou meio cabeça quadrada gosto de usar as questões falando isso me ajuda mt por isso peço tanto a explicação.

 

Exemplo do meu raciocinio:.

 

nome = request.form("nomecompleto")

variavel nome (=) recebe, da pagina web(formulario web o texto"" do campo nomecompleto)

sql = "select * from clientes where nomecompleto = '" & nome & "'"

sql vai receber toda a seleção da tabela(clientes) onde a coluna nomecompleto for igual a variavel nome anteriormente declarada.

sei que é bem noob essa maneira de programar mas é assim que consigo entender e encontrar erros.

Muito obrigado pela explicação tinha uma deficiencia em entender a função de cada um deles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas seu raciocínio esta correto é desse jeito que se deve fazer mas te Adianto que precisa filtrar as sqlinjection pois sua SQL. Está vulnerável http://pt.wikipedia.org/wiki/Inje%C3%A7%C3%A3o_de_SQL leia sobre pois vc devera fazer uma função para apagar palavras chave para que isso aconteça...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.