Copiar dbf para dbf

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Antonio Matheus
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 13 Jul 2010 23:18
Localização: sao caetano dosul

Copiar dbf para dbf

Mensagem por Antonio Matheus »

Boa tarde amigos venho atraves deste pedir mais um auxilio, como copiar registros de um dbf para outro dbf

ex: arq1.dbf tem codigo,nome e etc, eu queria copiar so o codigo para o arq2.dbf como posso fazer isto eu ja vi um artigo aqui no forum mas nao encontro
desde ja agradeco a colaboracao
um clip abraco
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Copiar dbf para dbf

Mensagem por Jairo Maia »

Olá Antonio,

Considerando que queira uma cópia exata, tente assim:

Código: Selecionar todos

Cls
Use Arq1
Sele 0
Use Arq2
Zap

Sele Arq1
Whil !Eof()

 For i=1 To Fcou()
  msg=Fiel(i)
  M->&msg.=&msg.
 Next

 Sele Arq2
 Append Blank
 For i=1 To Fcou()
  msg=Fiel(i)
  Repl &msg. With M->&msg.
 Next

 @ 2,2 say "Transferidos => " + Str(++conta)

 Sele Arq1
 Skip

EndDo
COMMIT
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Copiar dbf para dbf

Mensagem por Pablo César »

Antonio,

Considerando que o campo codigo esteja presente nos dois dbfs e que tenha a mesma estrutura (nome, tipo e tamanho) e é apenas o campo código para appendar (adicionar no final do dbf2) você poderia fazer assim:

use arq2
append from arq1 fields codigo
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Antonio Matheus
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 13 Jul 2010 23:18
Localização: sao caetano dosul

Copiar dbf para dbf

Mensagem por Antonio Matheus »

Boa tarde eu nao fui tao claro, e seguinte eu tenho bd na qual tem varios registros este registros estao por categorias, ex : medicamentos, perfumaria , acessorios, genericos e varejo, porem o que eu quero fazer e o seguinte copiar so registros da perfumaria como proceder?
Segunda duvida e a seguinte, no bd tem cod,nome,custo,venda,estoque e cod_aux, como eu faco para copiar so o campo custo ou so o campo estoque?
desde agradeco a colaboracao de todos
ps eu sou um estudante didatico desta maravilhosa programacao
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Copiar dbf para dbf

Mensagem por Pablo César »

Favor liste a estrutura dos arquivos dbf 1 e 2. Pode utilizar este utilitário para copiar e colar na sua proxima mensagem. Daí teremos com exatidão nome, tipo e como fazer para dar nossa indicação.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Copiar dbf para dbf

Mensagem por anacatacombs »

Antonio Matheus escreveu:u tenho bd na qual tem varios registros este registros estao por categorias, ex : medicamentos, perfumaria , acessorios, genericos e varejo, porem o que eu quero fazer e o seguinte copiar so registros da perfumaria como proceder?
Você deve fazer um filtro condicional antes de repassar para o banco de dados.
Pode utilizar o exemplo que o colega Jairo postou, mas antes de fazer o replace, basta fazer um filtro e fica tudo numa boa, mas antes é necessário estudar a estrutura do arquivo DBF e verificar qual a condição dos registros de perfumaria, pelo que você postou, pode ser o campo cod_aux...

Para repassar APENAS o campo custo, por exemplo:

Código: Selecionar todos

USE <ArquivoDestino> NEW
USE <ArquivoOrigem> NEW
GO TOP
DO WHILE !EOF()
    // aqui deve ficar seu filtro para adicionar apenas os de perfumaria.
    // vai ser algo parecido com:
    //  IF "não for perfumaria"
    //       SKIP -> passa para o proximo registro
    //       LOOP -> volta pro inicio do do while
    //  ENDIF
     SELECT <ArquivoDestino>
     APPEND BLANK
     REPLACE <VariaveldoCusto> WITH  <ArquivoOrigem> -> <VariavelDoCusto>
     SELECT <ArquivoOrigem>
     SKIP
ENDDO
DBCOMMIT()
Isso funciona se quiser adicionar apenas o custo, e não altera-lo.
Responder