MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Passar valor de data criação Excel para tabela

    avatar
    jrm
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 124
    Registrado : 10/08/2012

    [Resolvido]Passar valor de data criação Excel para tabela Empty [Resolvido]Passar valor de data criação Excel para tabela

    Mensagem  jrm em 11/11/2020, 15:57

    Caros Mestres,Muito boas tarde a todos

    Preciso mais umas dicas para poder avançar aqui no meu objectivo.
    Então tenho um BD que é alimentada por importação diária de ficheiros excel, o que eu pretendo é fazer com que consiga identificar os registos duplicados, se por exemplo importar duas vezes o mesmo ficheiro.
    assim a minha ideia é colocar numa coluna a data de criação do Ficheiro excel que eu origem a esse registo, tenho o seguinte codigo, que obtive com a vossa ajuda:

    strTable = "Temp_Base"-------'Nome da Tabela temporaria para importação
    Set fso = CreateObject("Scripting.FileSystemObject")

    Set F = fso.GetFile(strPathFile)


    MsgBox F.DateCreated (aqui obtenho em uma box a data do ficheiro excel)

    DoCmd.OpenQuery "EliminaTemp", acViewNormal, acEdit (este elimina os dados da tabela temporaria que vou usar para acrescentar os dados)

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames (este importa o ficheiro excel para uma tabela temporaria do acess)-------é aqui que eu pretendo que seja acrescentada a data de criação do ficheiro excel o parametro "f.dateCreated"

    DoCmd.OpenQuery "acrescentabase", acViewNormal, acEdit (este acrescenta os dados a tabela final)se for mais facil tambem pode ser acrescentado nesta fase

    Mas não sei como fazer para passar O F.dateCreated para o campo ("dataExecl") da tabela temporaria ("temp_base"), podem ajudar-me sff
    Mais uma vez Obrigado pela vossa preciosa ajuda
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 354
    Registrado : 28/10/2010

    [Resolvido]Passar valor de data criação Excel para tabela Empty Re: [Resolvido]Passar valor de data criação Excel para tabela

    Mensagem  zcarloslopes em 12/11/2020, 09:54

    Bom dia jrm,

    Pode colocar aqui o SQL das respectivas consultas que mencionou?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7780
    Registrado : 05/11/2009

    [Resolvido]Passar valor de data criação Excel para tabela Empty Re: [Resolvido]Passar valor de data criação Excel para tabela

    Mensagem  Alexandre Neves em 12/11/2020, 11:42

    Bom dia
    Tente ->verifique se o formato data está correcto ou terá de colocar Format(F.DateCreated,"dd-mm-yyyy")
    strTable = "Temp_Base"-------'Nome da Tabela temporaria para importação
    Set fso = CreateObject("Scripting.FileSystemObject")

    Set F = fso.GetFile(strPathFile)

    DoCmd.OpenQuery "EliminaTemp", acViewNormal, acEdit (este elimina os dados da tabela temporaria que vou usar para acrescentar os dados)

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames (este importa o ficheiro excel para uma tabela temporaria do acess)-------é aqui que eu pretendo que seja acrescentada a data de criação do ficheiro excel o parametro "f.dateCreated"
    currentdb.execute "UPDATE " & strPathFile & " SET dataExecl=#" & F.DateCreated &"#"
    DoCmd.OpenQuery "acrescentabase", acViewNormal, acEdit (este acrescenta os dados a tabela final)se for mais facil tambem pode ser acrescentado nesta fase


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    jrm gosta desta mensagem

    avatar
    jrm
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 124
    Registrado : 10/08/2012

    [Resolvido]Passar valor de data criação Excel para tabela Empty Re: [Resolvido]Passar valor de data criação Excel para tabela

    Mensagem  jrm em 12/11/2020, 14:22

    Ola a todos

    Alexandre, parece-me que será por ai o caminho mas esta a dar erro, vou colocar o codigo todo associado ao processo, as consultas de actualização e eliminação bem como a transferência de dados do ficheiro excel funcionam perfeitamente, ao colocar a parte do codigo que acrescentas-te dá o seguinte erro:
    "não foi possível localizar o ficheiro "c:......\teste.mbd", este ficheiro não existe o que existe é uma teste.xlsx

    Podes ajudar sff.
    Obrigado

    Private Sub Comando0_Click()
    Call NovosTrabalhos
    End Sub

    Function NovosTrabalhos() As String

    ' Requer referencia a Microsoft Office xx Object Library
    On Error GoTo PROC_ERR

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    fd.Title = "selecione o ficheiro"
    fd.Filters.Add "Ficheiro XLS", "*.xls*", 1

    fd.Show

    If (fd.SelectedItems.Count > 0) Then
    '------inicio importação excel para sincronização
    Dim strPathFile As String, strFile As String, strPath As String
    Dim strTable As String
    Dim blnHasFieldNames As Boolean
    blnHasFieldNames = True
    strPathFile = fd.SelectedItems(1)
    strTable = "Temp_Base"

    'apaga os dados da tabela temp_base
    DoCmd.OpenQuery "EliminaTemp", acViewNormal, acEdit

    Dim oFSO As Object
    Dim F As Object

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set F = fso.GetFile(strPathFile)

    'MsgBox F.DateCreated '---- Para verificar a data do ficheiro execel

    'importa para tabela local temporária
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames
    'atualiza a coluna dataexecl da tabela temporaria
    CurrentDb.Execute "UPDATE " & strPathFile & " SET dataExecl=#" & F.DateCreated & "#"
    'acrescenta acrescenta os dados a tabela final
    DoCmd.OpenQuery "acrescentabase", acViewNormal, acEdit

    MsgBox "Operação concluída.", vbInformation, ""


    Else
    MsgBox "Não foi escolhido nenhum ficheiro", vbInformation, ""
    End If

    PROC_EXIT:
    Exit Function

    PROC_ERR:
    DoCmd.Hourglass False
    If Err.Number = 3011 Then
    localxml = ""
    MsgBox ("Ficheiro inválido.")
    Else
    MsgBox Err.Description
    End If
    Resume PROC_EXIT

    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7780
    Registrado : 05/11/2009

    [Resolvido]Passar valor de data criação Excel para tabela Empty Re: [Resolvido]Passar valor de data criação Excel para tabela

    Mensagem  Alexandre Neves em 12/11/2020, 14:27

    aparentemente deveria funcionar
    Parar código na linha que dá erro e verificar qual valor a variável assume, deverá assumir a data pretendida


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    jrm gosta desta mensagem

    avatar
    jrm
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 124
    Registrado : 10/08/2012

    [Resolvido]Passar valor de data criação Excel para tabela Empty Re: [Resolvido]Passar valor de data criação Excel para tabela

    Mensagem  jrm em 12/11/2020, 15:00

    Obrigado Alexandre

    Era isso mesmo ja consegui, apenas bastou trocar o strPathfile por strtable, uma vez que a tabela temporaria chama-se temp_base e o naome esta na variavel strtable.

    Ficou assim:
    CurrentDb.Execute "UPDATE " & strTable & " SET dataExcel=#" & F.DateCreated & "#"

    mais uma vez obrigado

      Data/hora atual: 28/11/2020, 11:28