Boa tarde mestres!
Preciso da ajuda de vocês mais uma vez.
Tenho um banco de dados que importa arquivos para consultas posteriores.
São duas tabelas: BaseTaxa e BaseAmostra, com relacionamento 1 para muitos (1 taxa e muitas amostras).
Ao importar o arquivo através do MenuImportar, o usuário insere os dados da taxa e depois clica em um botão para importar o arquivo com as amostras, primeiro para uma tabela provisoria, chamada ImportarBase, e depois passa para a tabela BaseAmostra.
Ao testar a importação eu verifiquei que importando o arquivo ou não, o código dava a mensagem de que foi importado com sucesso.
Aí resolvi alterar o meu código anterior para que o access verificasse em passos se havia sido importado o arquivo realmente ou não e começou o meu problema, meu código não funciona mais direito.
Atualmente aparece o erro missing operator e ele não adiciona o caminho no campo Link da BaseTaxa pelo código.
A BaseTaxa é alimentada pelo formulário e o único campo que é alimentado pelo código é o Link (caminho do endereço na rede que o usuário selecionou)
O código deveria executar corretamente os seguintes passos:
1. Abre a janela do office para selecionar o arquivo;
2. Insere o caminho do arquivo na variável Caminho;
3. Importa os dados do arquivo para a tabela ImportarBase;
4. Atualiza o IDTaxa na tabela ImportarBase (chave primária da BaseTaxa);
5. Adiciona o Caminho no campo Link da tabela BaseTaxa;
6. Conta quantos registros tem na tabela ImportarBase >> se = zero, cancela tudo; senão, transfere os dados da ImportarBase para a BaseAmostra.
O Access também está criando uma tabela chamada "Name AutoCorrect Save Failures", que eu não entendo porque está sendo criada já que não foi necessário nenhuma correção de nomes...
Segue o código abaixo:
Desde já agradeço a atenção!!
Preciso da ajuda de vocês mais uma vez.
Tenho um banco de dados que importa arquivos para consultas posteriores.
São duas tabelas: BaseTaxa e BaseAmostra, com relacionamento 1 para muitos (1 taxa e muitas amostras).
Ao importar o arquivo através do MenuImportar, o usuário insere os dados da taxa e depois clica em um botão para importar o arquivo com as amostras, primeiro para uma tabela provisoria, chamada ImportarBase, e depois passa para a tabela BaseAmostra.
Ao testar a importação eu verifiquei que importando o arquivo ou não, o código dava a mensagem de que foi importado com sucesso.
Aí resolvi alterar o meu código anterior para que o access verificasse em passos se havia sido importado o arquivo realmente ou não e começou o meu problema, meu código não funciona mais direito.
Atualmente aparece o erro missing operator e ele não adiciona o caminho no campo Link da BaseTaxa pelo código.
A BaseTaxa é alimentada pelo formulário e o único campo que é alimentado pelo código é o Link (caminho do endereço na rede que o usuário selecionou)
O código deveria executar corretamente os seguintes passos:
1. Abre a janela do office para selecionar o arquivo;
2. Insere o caminho do arquivo na variável Caminho;
3. Importa os dados do arquivo para a tabela ImportarBase;
4. Atualiza o IDTaxa na tabela ImportarBase (chave primária da BaseTaxa);
5. Adiciona o Caminho no campo Link da tabela BaseTaxa;
6. Conta quantos registros tem na tabela ImportarBase >> se = zero, cancela tudo; senão, transfere os dados da ImportarBase para a BaseAmostra.
O Access também está criando uma tabela chamada "Name AutoCorrect Save Failures", que eu não entendo porque está sendo criada já que não foi necessário nenhuma correção de nomes...
Segue o código abaixo:
- Código:
Private Sub BtImportar_Click()
Call AbrirArquivo
End Sub
Function AbrirArquivo()
' Requer referencia a Microsoft Office 14 Object Library
On Error GoTo PROC_ERR
'DoCmd.SetWarnings False
'Desativa as mensagens de aviso do sistema
Dim Caminho As String 'Caminho do arquivo
Dim fDialog As Office.FileDialog
Dim strTabela As String
strTabela = "ImportarBase"
' inicia a verificação se há dados na tabela ImportarBase para função Elseif
Dim db As DAO.DataBase
Dim rs As DAO.Recordset
Dim contaReg As Integer
Set db = CurrentDb()
Set rs = db.OpenRecordset(strTabela)
contaReg = rs.RecordCount
'Configura caixa de seleção do arquivo
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False 'Habilita ou desabilita a seleção de múltiplos arquivos
.Title = "Selecionar arquivo..."
.InitialFileName = "\\brspfs04\WORKFA\Users\Valuation Group\Business Valuation\SERVIÇOS\"
'Caminho inicial para seleção
'Configura filtros da caixa de seleção
.Filters.Clear 'Limpa os filtros
.Filters.Add "Arquivos Excel - .xlsx", "*.xlsx" 'Adiciona filtro para arquivos .xlsx
.Filters.Add "Arquivos Excel - .xls", "*.xls" 'Adiciona filtro para arquivos .xlsb
.Filters.Add "Arquivos Excel - .xlsm", "*.xlsm" 'Adiciona filtro para arquivos .xlsm
If .Show = True Then
Caminho = .SelectedItems.Item(1) 'Local + arquivo selecionados são passados para a variável chamada de "Caminho"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTabela, Caminho, True, "BDBeta!" & "A1:Q50"
'Importa as informações do arquivo indicado na janela de opções
DoCmd.OpenQuery "AddIDTaxa", acViewNormal, acEdit
'Atualiza o campo ID taxa na tabela ImportarBase
'O erro está a partir desta linha:
CurrentDb.Execute "UPDATE BaseTaxas INNER JOIN ImportarBase ON ImportarBase.IDTaxa = BaseTaxas.IDTaxa SET BaseTaxas.Link = ' " & Caminho & " ' WHERE ((BaseTaxas.IDTaxa)=(ImportarBase.IDTaxa))"
'Atualiza o campo link com a informação do endereço do arquivo selecionado
rs.MoveLast
If rs.RecordCount = 0 Then
MsgBox "Os dados da taxa de desconto não foram importados." _
& vbCrLf & vbCrLf & "Favor verificar:" _
& vbCrLf & "(i) Se TODOS os campos da planilha BD Beta do seu arquivo da taxa de desconto estão preenchidos, sem exceção." _
& vbCrLf & "(ii) Se os campos estão linkados corretamente, conforme indicado no cabeçalho da planilha BDBeta." _
& vbCrLf _
& vbCrLf & "Caso seu arquivo esteja correto e o problema persistir, contate o Administrador do Sistema.", vbInformation, "Ocorreu um problema"
DoCmd.CancelEvent
DoCmd.DeleteObject acTable, "Name AutoCorrect Save Failures"
Else
Me.Form.Requery
DoCmd.OpenQuery "ConsImportarBase"
'Adiciona os dados que estão na tabela temporária Importar Base para a tabela BaseAmostras
DoCmd.RunSQL "Delete * from ImportarBase"
'Deleta os registros adicionados na Tabela Temporária ImportarBase
MsgBox "Dados importados com sucesso!", vbInformation, "Agradecemos a colaboração"
DoCmd.DeleteObject acTable, "Name AutoCorrect Save Failures"
End If
Else
MsgBox "Arquivo não selecionado.", vbInformation, "Atenção!"
End If
End With
PROC_EXIT:
Exit Function
PROC_ERR:
DoCmd.Hourglass False
If Err.Number = 3011 Then
LocalXML = ""
MsgBox ("Arquivo inválido.")
Else
MsgBox Err.Description
End If
Resume PROC_EXIT
'DoCmd.SetWarnings True
'Ativa as mensagens de aviso do sistema
End Function
Desde já agradeço a atenção!!