Jump to content
Fórum Script Brasil
  • 0

De .dbf Para .mdb - Urgente


Guest Visitante
 Share

Question

Guest Visitante

Olá!

Preciso muito da ajuda de vocês. É o seguinte:

Um sistema, que normalmente eu não tenho acesso, gera uma nova tabela de Diagnostico ".dbf" diariamente com o nome variando de acordo com a data de quando um equipamento deu algum defeito. (ex.: 20070221AL.DBF)

Tenho que acessar os dados desta tabela e gerar um relatório de acordo com a data selecionada pelo usuário.

Acredito que exita alguma forma de copiar os dados da tabela dbf para uma tabela com dados temporários, pre-criada no Access.

Para abrir uma conexao e chamar o relatório pre-existente, eu fiz desta forma:

Dim objRelatorio As Object
Dim endRelat, nomeRelat, nomeBD, nomeTabDiag, sqlStatement As String

gDataInicial = cbxDiaInicial.Text & "/" & Trim(gMesInicial) & "/" & txtAnoInicial.Text
gDataFinal = cbxDiaFinal.Text & "/" & Trim(gMesFinal) & "/" & txtAnoFinal.Text
gDtInicial = CDate(gDataInicial)
gDtFinal = CDate(gDataFinal)

endRelat = "c:\MinhaPasta\Relatorio\"
nomeBD = "Relat.mdb"
nomeRelat = "Diagnostico"

Set objAccess = CreateObject("Access.Application")

With objAccess
.Visible = True
.OpenCurrentDatabase filepath:= endRelat & nomeBD
.DoCmd.OpenReport nomeRelat, acViewPreview, , "AlarmesDiag.Data >= # " & gDtInicial & " # AND AlarmesDiag.Data >= # " & gDtFinal & " # "
.DoCmd.Maximize
.DoCmd.Maximize

End With[/codebox]

Mas agora preciso ler aquela tabela 20070221AL.DBF e inserir os dados

na tabela do access chamada AlarmesDiag, que possui os seguintes campos:

Data, Hora (que é hora que ocorreu algum problema), Equipamento, Operador.

O usuário seleciona o período para a criação do relatório.

Por exemplo, se ele quiser ver todos os defeitos ocorridos entre ontem e hoje: gDtInicial= 26/2/2007 e gDtFinal=27/2/2007.

O maior problema é saber se eu posso abrir mais de uma conexao ao mesmo tempo e como fazer isso.

Ou se existe alguma forma que eu possa selecionar os dados deste período na tabela 20070221AL.DBF e gravar na tabela temporária AlarmesDiag do Access.

Alguém tem alguma idéia sobre isso?

Obrigado pessoal!

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Eu fiz um código bem simples para importar uma tabela DBF para uma tabela do Access, do mesmo jeito que ocorreria se você clicasse com o botão direito na janela de tabelas e escolhesse "Importar...". Só que está lá no serviço, mas pode deixar que hoje mesmo eu pego e posto aqui.

Abraços,

Graymalkin

Link to comment
Share on other sites

  • 0

Olá !

Estou escrevendo porque preciso muuuuuuuuuuuuuito de ajuda e não sei mais o que fazer.

Preciso transferir dados de um arquivo dbf para uma tabela do access usando o VB.

Já tentei com o comando DoCmd mas não sei o que estou fazendo de errado, que ele cria uma cópia de uma tabela existente do access. Sou iniciante, sou a única da área aqui e não tenho ideia do que eu tenho que fazer p/ isso funcionar...

Uso ADODB

ODBC

objAccess.DoCmd.TransferDatabase acImport, "DBase IV", "c:\MinhaPasta\", acTable, "AlarmTable.dbf", "AlarmLog"

e

objAccess.DoCmd.TransferDatabase acImport, "DBase IV", "c:\MinhaPasta", acTable, "AlarmTable.dbf", "AlarmLog"

e

DoCmd.TransferDatabase acImport, "DBase IV", "c:\MinhaPasta\AlarmTable.dbf"

Mas nada da certo!

Tambem tentei assim:

db.Open ("SELECT * INTO [dBase IV;DATABASE=c:\MinhaPasta;].[AlarmTable.dbf] FROM AlarmesDiag")

e desta forma:

db.Open ("SELECT * INTO Aux IN 'c:\MinhaPasta\Relat.mdb' FROM AlarmesDiag")

e de mil outras formas.... Mas quando funciona, só copia a estrutura da tabela do access.

mas eu preciso dos dados!!!!! AHHHH

O pior é que eu teria que entregar td o relatório pronto amanhã!

Por favor,

se você tiver alguma ideia dá uma luz! Please...

Obrigado,

Dory.

Link to comment
Share on other sites

  • 0

No seu BD do Access clique em "Módulos" e depois clique em "Novo". Será aberto então o editor do VBA com um novo módulo. Neste, cole a seguinte rotina:

Public Sub Atualizar()
    On Error Resume Next
    DoCmd.DeleteObject acTable, "TABELA"
    On Error GoTo 0
    
    DoCmd.TransferDatabase , "dBASE III", "c:\pasta", acTable, "arquivo.dbf", "TABELA"
End Sub
Lembre-se de salvar clicando no disquete (terceiro ícone da barra de ferramentas). No seu programa em VB você poderá usar o seguinte código para chamar esta rotina Atualizar() que está no BD:
Screen.MousePointer = vbHourglass
    
Dim a As New Access.Application
a.OpenCurrentDatabase "CAMINHO_DO_SEU_MDB"
a.Run "Atualizar"
a.CloseCurrentDatabase
a.Quit

Screen.MousePointer = vbDefault

Faça referência a "Microsoft Access Object Library" pela opção "References..." do menu "Project".

Antes de executar o código acima, certifique-se de que o seu próprio programa *não* esteja com a respectiva tabela aberta. Só abra a tabela após a atualização terminar.

Abraços,

Graymalkin

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...