MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Copiar de uma (s) tabela para outra(s)

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Copiar de uma (s) tabela para outra(s)

    Mensagem  Assis 29/4/2013, 14:13

    Boa tarde amigos

    Este código é do Mestre JPaulo.
    Estou a tentar copiar dados de duas tabela para outras duas tabelas.
    A parte de copiar rst para rst1 está resolvida pois é sempre só uma linha a copiar.

    A parte para copiar rst2 para rst3 é que não estou a conseguir pois só consigo copiar a primeira linha, e esta parte pode ter uma ou muitas linhas para copiar.

    Isto é uma Guia de remessa para copiar para fatura.

    rst para rst1 é o cabeçalho da Guia. --- 1 Linha

    rst2 para rst3 sãoos detalhes da Guia -- Várias linha, mas como está o codigo consigo copiar só a primeira linha



    Private Sub Comando26_Click()
    Dim X As Long
    Dim rst, rst1, rst2, rst3 As Recordset

    Set rst = CurrentDb.OpenRecordset("select * from Consignacao")
    Set rst1 = CurrentDb.OpenRecordset("select * from Encomenda")

    Set rst2 = CurrentDb.OpenRecordset("select * from ConsignacaoDetalhes")
    Set rst3 = CurrentDb.OpenRecordset("select * from DetalhesArtigos")

    X = 0

    rst.MoveLast
    rst.MoveFirst

    rst2.MoveLast
    rst2.MoveFirst

    Do While Not rst.EOF

    X = X + 1
    rst1.AddNew
    rst3.AddNew
    rst1.Fields("LN").Value = Nz(DMax("ln", "Encomenda")) + 1
    rst1.Fields("Operação").Value = rst.Fields("Operação").Value
    rst1.Fields("Cliente").Value = rst.Fields("Cliente").Value
    rst1.Fields("Encomenda").Value = rst.Fields("encomenda").Value
    rst1.Fields("Encomendacliente").Value = rst.Fields("encomendacliente").Value
    rst1.Fields("Data").Value = Date
    rst1.Fields("Falta").Value = 1
    rst1.Fields("Recebift").Value = rst1.Fields("Falta").Value

    '-------------------- A patir daqui é que só copia a primeira linha ---------------

    rst3.Fields("lnd").Value = rst1.Fields("LN").Value
    rst3.Fields("Ref").Value = rst2.Fields("Ref").Value
    rst3.Fields("tipo").Value = rst2.Fields("Tipo").Value
    rst3.Fields("Descrição").Value = rst2.Fields("Descrição").Value
    rst3.Fields("Quant").Value = rst2.Fields("Quant").Value
    rst3.Fields("tamanho").Value = rst2.Fields("Tamanho").Value
    rst3.Fields("Preço").Value = rst2.Fields("Preço").Value
    rst3.Fields("Preçocusto").Value = rst2.Fields("Preçocusto").Value
    rst3.Fields("sys").Value = rst2.Fields("sys").Value

    'adiciona nas tabelas
    rst1.Update
    rst3.Update
    'apaga as tabela
    rst.Delete
    rst2.Delete
    'Else
    'se não encontra não faz nada

    rst.MoveNext
    rst2.MoveNext
    Loop
    If X > 0 Then
    MsgBox X & " Documento Consignação Registado Nas Vendas de Hoje ", vbQuestion, "Conforlar"
    Else
    End If
    Set rst = Nothing
    Call Comando6_Click
    End Sub


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  JPaulo 29/4/2013, 15:22

    Não me lembro, mas tudo bem...

    Tente fazer o Do While isolado para cada bloco.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  Assis 29/4/2013, 18:15

    JPaulo
    O amigo não se lembra mas ela foi feta só com um modulo.

    Fiz assim mas da erro no vermelho
    A parte sublinhada a AZUL será assim: É a ligação entre a fatura e os detalhes da fatura.


    Dim X As Long
    Dim rst, rst1 As Recordset

    Set rst = CurrentDb.OpenRecordset("select * from Consignacao")
    Set rst1 = CurrentDb.OpenRecordset("select * from Encomenda")

    X = 0

    If rst.RecordCount = 0 Then Exit Sub

    rst.MoveLast
    rst.MoveFirst

    Do While Not rst.EOF

    X = X + 1
    rst1.AddNew

    rst1.Fields("LN").Value = Nz(DMax("ln", "Encomenda")) + 1
    rst1.Fields("Operação").Value = rst.Fields("Operação").Value
    rst1.Fields("Cliente").Value = rst.Fields("Cliente").Value
    rst1.Fields("Encomenda").Value = rst.Fields("encomenda").Value
    rst1.Fields("Encomendacliente").Value = rst.Fields("encomendacliente").Value
    rst1.Fields("Data").Value = Date
    rst1.Fields("Falta").Value = rst.Fields("Falta").Value
    rst1.Fields("Recebift").Value = rst1.Fields("Falta").Value

    'adiciona nas tabelas
    rst1.Update

    'apaga as tabela
    rst.Delete

    'Else
    'se não encontra não faz nada

    rst.MoveNext

    Loop
    If X > 0 Then
    MsgBox X & " Documento Consignação Registado Nas Vendas de Hoje ", vbQuestion, "Conforlar"
    Else
    End If
    Set rst = Nothing

    '---------------------------------------


    Dim Y As Long
    Dim rst2, rst3 As Recordset


    Set rst2 = CurrentDb.OpenRecordset("select * from ConsignacaoDetalhes")
    Set rst3 = CurrentDb.OpenRecordset("select * from DetalhesArtigos")

    Y = 0

    If rst2.RecordCount = 0 Then Exit Sub

    rst2.MoveLast
    rst2.MoveFirst

    Do While Not rst2.EOF

    Y = Y + 1

    rst3.AddNew

    rst3.Fields("lnd").Value = rst1.Fields("LN").Value
    rst3.Fields("Ref").Value = rst2.Fields("Ref").Value
    rst3.Fields("tipo").Value = rst2.Fields("Tipo").Value
    rst3.Fields("Descrição").Value = rst2.Fields("Descrição").Value
    rst3.Fields("Quant").Value = rst2.Fields("Quant").Value
    rst3.Fields("tamanho").Value = rst2.Fields("Tamanho").Value
    rst3.Fields("Preço").Value = rst2.Fields("Preço").Value
    rst3.Fields("Preçocusto").Value = rst2.Fields("Preçocusto").Value
    rst3.Fields("sys").Value = rst2.Fields("sys").Value

    'adiciona nas tabelas

    rst3.Update
    'apaga as tabela

    rst2.Delete


    rst2.MoveNext
    Loop
    If Y > 0 Then
    MsgBox Y & " Documento Consignação Registado Nas Vendas de Hoje ", vbQuestion, "Conforlar"
    Else
    End If
    Set rst2 = Nothing


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  JPaulo 29/4/2013, 20:55

    Assis, vou estar com o access na mão daqui a 1 hora, pode anexar aqui parte do banco para eu ver o que se passa ?


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  Assis 30/4/2013, 00:04

    Amigo
    Por causa do tamanho não consegui postar aqui, e enviei para o seu Mail
    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  JPaulo 30/4/2013, 09:48

    Teste por favor;



    Private Sub Comando26_Click()
    Dim X As Long
    Dim Y As Long
    Dim rst, rst1 As Recordset
    Dim rst2, rst3 As Recordset
    Dim intLN As Integer

    Set rst = CurrentDb.OpenRecordset("select * from Consignacao")
    Set rst1 = CurrentDb.OpenRecordset("select * from Encomenda")
    Set rst2 = CurrentDb.OpenRecordset("select * from ConsignacaoDetalhes")
    Set rst3 = CurrentDb.OpenRecordset("select * from DetalhesArtigos")

    X = 0
    Y = 0

    If rst.RecordCount = 0 Then Exit Sub

    rst.MoveLast
    rst.MoveFirst

    Do While Not rst.EOF

    X = X + 1
    rst1.AddNew

    rst1.Fields("LN").Value = Nz(DMax("ln", "Encomenda")) + 1
    rst1.Fields("Operação").Value = rst.Fields("Operação").Value
    rst1.Fields("Cliente").Value = rst.Fields("Cliente").Value
    rst1.Fields("Encomenda").Value = rst.Fields("encomenda").Value
    rst1.Fields("Encomendacliente").Value = rst.Fields("encomendacliente").Value
    rst1.Fields("Data").Value = Date
    rst1.Fields("Falta").Value = rst.Fields("Falta").Value
    rst1.Fields("Recebift").Value = rst1.Fields("Falta").Value

    'Insere o LN na variavel
    intLN = rst1.Fields("LN").Value

    'adiciona nas tabelas
    rst1.Update
    rst.MoveNext
    Loop
    If X > 0 Then
    MsgBox X & " Documento Consignação Registado Nas Vendas de Hoje ", vbQuestion, "Conforlar"
    Else
    End If


    If rst2.RecordCount = 0 Then Exit Sub

    rst2.MoveLast
    rst2.MoveFirst

    Do While Not rst2.EOF

    Y = Y + 1

    rst3.AddNew

    rst3.Fields("lnd").Value = intLN 'Ind é o LN da variavel
    rst3.Fields("Ref").Value = rst2.Fields("Ref").Value
    rst3.Fields("tipo").Value = rst2.Fields("Tipo").Value
    rst3.Fields("Descrição").Value = rst2.Fields("Descrição").Value
    rst3.Fields("Quant").Value = rst2.Fields("Quant").Value
    rst3.Fields("tamanho").Value = rst2.Fields("Tamanho").Value
    rst3.Fields("Preço").Value = rst2.Fields("Preço").Value
    rst3.Fields("Preçocusto").Value = rst2.Fields("Preçocusto").Value
    rst3.Fields("sys").Value = rst2.Fields("sys").Value

    'adiciona nas tabelas
    rst3.Update
    rst2.MoveNext
    Loop

    If Y > 0 Then
    MsgBox Y & " Documento Consignação Registado Nas Vendas de Hoje ", vbQuestion, "Conforlar"
    Else
    End If

    'basta apenas um delete
    rst.MoveLast
    rst.MoveFirst
    rst.Delete

    Set rst = Nothing
    Set rst1 = Nothing
    Set rst2 = Nothing
    Set rst3 = Nothing
    End Sub



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  Assis 30/4/2013, 11:40

    Obrigado JPaulo

    Perfeito


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  JPaulo 30/4/2013, 12:37

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  Assis 25/7/2013, 22:07

    JPaulo

    Desculpe reabrir o tópico.

    Neste código elaborado pelo amigo seria possivel uma pequena Alteração


    Nesta parte:

    rst3.AddNew

    rst3.Fields("Quant").Value = rst2.Fields("Quant").Value

    Se o campo "Quant" for igual a 0 (Zero) não gravava essa linha

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  JPaulo 26/7/2013, 10:01

    Ola Assis;

    Então, tem de lhe mandar com um IF para cima dessa linha;


    rst3.AddNew

    If rst2.Fields("Quant").Value = 0 Then
    'não faz nada aqui
    Else
    'caso seja diferente de zero, grava
    rst3.Fields("Quant").Value = rst2.Fields("Quant").Value
    End If



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Copiar de uma (s) tabela para outra(s) Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  Assis 26/7/2013, 19:07

    Boa tarde JPaulo

    Ficou assim mas grava na mesma.

    rst3.AddNew

    rst3.Fields("lnd").Value = intLN 'Ind é o LN da variavel
    rst3.Fields("Ref").Value = rst2.Fields("Ref").Value
    rst3.Fields("tipo").Value = rst2.Fields("Tipo").Value
    rst3.Fields("Descrição").Value = rst2.Fields("Descrição").Value

    If rst2.Fields("Quant").Value = 0 Then
    'não faz nada aqui
    Else
    rst3.Fields("Quant").Value = rst2.Fields("Quant").Value
    End If

    rst3.Fields("tamanho").Value = rst2.Fields("Tamanho").Value
    rst3.Fields("Preço").Value = rst2.Fields("Preço").Value
    rst3.Fields("Preçocusto").Value = rst2.Fields("Preçocusto").Value
    rst3.Fields("sys").Value = rst2.Fields("sys").Value


    .................................................................................
    *** Só sei que nada sei ***

    Conteúdo patrocinado


    [Resolvido]Copiar de uma (s) tabela para outra(s) Empty Re: [Resolvido]Copiar de uma (s) tabela para outra(s)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 08:39