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


    [Resolvido]Dúvida ao Importar arquivo .csv da rede , escolhendo o local do arquivo na rede

    avatar
    kaiuviny
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 14/09/2015

    [Resolvido]Dúvida ao Importar arquivo .csv da rede , escolhendo o local do arquivo na rede Empty [Resolvido]Dúvida ao Importar arquivo .csv da rede , escolhendo o local do arquivo na rede

    Mensagem  kaiuviny 27/10/2015, 12:25

    Pessoal sou novo aqui no fórum e novo em programação Access com VB..

    Estou desisperado aqui no trabalho.

    Estou tentanto fazer que meu meu botão "btnImportar" escolhe um arquivo "carteira.csv" que está na rede "\\10.56.2.10\ppcp_appl\"

    E importar todos os dados para minha tabela Tab_Carteira no Access, adicionando somente os dados novos que estão no arquivo "carteira.csv", que é atualizado todos os dias.

    Buscando aqui no fórum, eu criei o seguinte código e tentei alterar a meu favor mas não consegui... ta dando o seguinte Erro:

    Erro em tempo de execução '3625':
    A especificação de arquivo de texto 'ExtimportSpecs0305 não existe, não é posível importar, exportar nem vincular.

    Abaixo o código.

    Private Sub btnImportar_Click()


    Dim strPathFile As String, strFile As String, strPath As String
    Dim strTable As String
    Dim CaminhoDoFicheiro As String
    Dim JanelaDeProcura As Office.FileDialog
    Dim MeusFiltros As Office.FileDialogFilter


    Dim blnHasFieldNames As Boolean
    blnHasFieldNames = True
    strPath = "\\10.56.2.10\ppcp_appl\" ' drive onde se situao arquivo .csv
    strTable = "Tab_Carteira" 'nome da tabela no seu banco

    Set JanelaDeProcura = Application.FileDialog(msoFileDialogFilePicker)

    With JanelaDeProcura ' opção para procurar o arquivo
    .Title = "Selecione a Imagem" ' titulo
    .Filters.Clear ' limpando os filtros
    .Filters.Add "Text Files", "*.csv" 'adicionar o filtro para tipo de texto, e selececiona todos os arquivos .csv do diretorio strPath (C:)

    .FilterIndex = 2

    .ButtonName = "Selecione" ' nome do botão para selecionar
    .InitialView = msoFileDialogViewDetails 'ver detalhes
    .InitialFileName = "\\10.56.2.10\ppcp_appl\" 'iniciar a procura na rede

    If .Show = -1 Then ' apresentando
    CaminhoDoFicheiro = CStr(JanelaDeProcura.SelectedItems.item(1)) ' armazenar o caminho do arquivo
    Else

    Exit Sub
    End If

    Debug.Print Mid([CaminhoDoFicheiro], InStrRev([CaminhoDoFicheiro], "\") + 1)
    CaminhoDoFicheiro = Mid([CaminhoDoFicheiro], InStrRev([CaminhoDoFicheiro], "\") + 1)
    End With ' fim do with

    strFile = Dir(strPath & CaminhoDoFicheiro) 'opção para procurar o arquivo, com "*.csv" carrega todos, define o selecionado.

    Do While Len(strFile) > 0
    strPathFile = strPath & strFile

    DoCmd.TransferText acImport, "ExtimportSpecs0305", strTable, strPathFile, blnHasFieldNames


    strFile = Dir()
    Loop
    MsgBox "Importação efetuada com sucesso...", vbInformation

    End Sub



    Se alguem puder me ajudar, com qualquer coisa agradeço muito...
    avatar
    kaiuviny
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 14/09/2015

    [Resolvido]Dúvida ao Importar arquivo .csv da rede , escolhendo o local do arquivo na rede Empty Re: [Resolvido]Dúvida ao Importar arquivo .csv da rede , escolhendo o local do arquivo na rede

    Mensagem  kaiuviny 17/11/2015, 11:38

    pessoal Graças a Deus eu consegui junto a ajuda do Mestre Michel(CBA) e com vários exemplos de Mestres daqui do forúm cheers Very Happy

    Vou postar abaixo o código, qualquer dúvida pode me perguntar...


    Função para escolher o arquivo na rede e armazenar o caminho da rede em uma variável "txtFilePath"
    Código:

    Sub btn_importar()

    Dim Dlg As FileDialog
    Dim txtFilePath As String
    Dim varFile As Variant

    Set Dlg = Application.FileDialog(msoFileDialogFilePicker)
    With Dlg
        .Title = "Selecione o seu arquivo para importação"
        .AllowMultiSelect = False
        If .Show = True Then
            For Each varFile In .SelectedItems
           
           
                txtFilePath = varFile
            Next
            Call Teste_Importacao(txtFilePath)
        Else
            Exit Sub
        End If
        MsgBox "Importação efetuado com sucesso...", vbInformation

    End With
    End Sub



    Função para importar os dados importados em uma tabela armazenando as colunas .Csv em uma string
    Código:

     Sub Teste_Importacao(txtFilePath As String)

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strsql As String
    Dim Nr_Coluna As Integer
    Dim strCampo As String

    Set db = CurrentDb
    On Error Resume Next

    'Deleta e atualiza a tabela
    db.TableDefs.Delete "tblImport":
    db.TableDefs.Refresh

    DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tblImport", FileName:=txtFilePath, HasFieldNames:=True

    db.TableDefs.Refresh ' atualiza a tabela
     
    Let strsql = "Select * from tblImport" ' seleciona todos os campos da tabela

    Set rs = db.OpenRecordset(strsql)  ' recorde set para percorrer todos os campos da tabela

    Do While rs.EOF <> True ' faça enquanto não chegar o fim tabela

        For Nr_Coluna = 0 To 32 ' percorre todas as colunas da tabela
       
            On Error Resume Next ' pula o erro
            Let strCampo = strCampo & rs(Nr_Coluna) 'armazena todas as colunas em uma só váriavel
         
        Next ' próximo coluna (Nr_Coluna)

        Call Insere_Registro(strCampo) ' chama a funcao
       
        Let strCampo = "" ' zera a variável

        rs.MoveNext ' próxima linha pelo "while"

    Loop ' loop do while

    End Sub


    Função para separar campo por campo armazenada acima com delimitador ";" para que o Access aceita como tabela, sendo armazenados na outra variável para inserir em outra tabela
    Código:

    Public Function Insere_Registro(strCampo As String)

    Dim db As DAO.Database
    Dim strsql, strsql2 As String
    Dim strArray() As String
    Dim Nr_Pos As Integer

        Let strArray = Split(strCampo, ";") ' delimitador para separar os campos por ";" Armazenado no vetor String strArray

        If (Valida_OV(Trim(strArray(6)), Trim(strArray(7))) = False) Then ' Se OV item não tiver na linham, chama a função Valida OV para que puxe todos as linhas que não tiver dados do campo OV e ITEM

            For Nr_Pos = LBound(strArray) To UBound(strArray) - 1 ' Função Retorna do menor para o maior valor disponível.
           
                Let strsql = strsql & "'" & Trim(strArray(Nr_Pos)) & "', " ' armazena na variavel strsql a variável em cada posição do vetor
           
            Next 'próxima coluna

            Let strsql = Left(strsql, Len(strsql) - 2) ' armazena todos os campos na variável, "-2" seria para nçao pegar a ","

            If (Valida_PA(Trim(strArray(14))) = True) Then ' Se MAterial PA tiver na linha da Tabela GV, ele chama a função Valida_PA
               
                Let strsql2 = "'" & Trim(strArray(6)) & "', '" & Trim(strArray(7)) & "', '" & Trim(strArray(9)) & "', '" & Trim(strArray(11)) & "', '" & Trim(strArray(14)) & "', '" & Trim(strArray(15)) & "', '" & Trim(strArray(17)) & "', '" & Trim(strArray(19)) & "', '" & Trim(strArray(12)) & "', '" & "Ativado" & "' "

            End If
            'Let strsql2 = Left(strsql2, Len(strsql2) - 2)
            Call Grava_Registro(strsql, strsql2)  ' Chama o opção para gravar registro

        End If ' fim da validação

    End Function


    Aqui ele procura um campo especifico como chave primária, para ver se minha tabela que vai ser inserida os dados já existe a chave primária, se nçao existir ele adiciona essa linha na minha tabela.
    Código:

    Public Function Valida_OV(Nr_OV As Long, Nr_Item As Integer) As Boolean

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strsql As String

    Set db = CurrentDb ' setando o current DB
    ' seleciona a Ordem de vendas quando a OV-ITEM como chave primária
        Let strsql = _
                    "SELECT " & _
                        "COUNT(Tab_Carteira.[ORDEM VENDAS]) AS Qt_Ordem " & _
                    "FROM " & _
                        "Tab_Carteira " & _
                    "WHERE " & _
                        "Tab_Carteira.[ORDEM VENDAS] = " & Nr_OV & " AND " & _
                        "Tab_Carteira.[ITEM ORDEM VENDAS] = " & Nr_Item
     
        Set rs = db.OpenRecordset(strsql) 'seta a comando select

        Let Valida_OV = rs("Qt_Ordem") ' pega a linha de acordo com a Nr_OV e Nr_item
       
        rs.Close

    End Function

    aqui valida para outra Tabela OV apenas alguns campos especificos
    Código:

    Public Function Valida_PA(cod_produto As Long) As Boolean

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strsql2 As String

    Set db = CurrentDb ' setando o current DB
    ' seleciona a Ordem de vendas quando a OV-ITEM como chave primária
        Let strsql2 = _
                    "SELECT " & _
                        "COUNT(Tab_GV.[cod_produto]) AS Qt_PA " & _
                    "FROM " & _
                        "Tab_GV " & _
                    "WHERE " & _
                        "Tab_GV.[cod_produto] = " & cod_produto
     
        Set rs = db.OpenRecordset(strsql2) 'seta a comando select

        Let Valida_PA = rs("Qt_PA") ' pega a linha de acordo com o Material
       
        rs.Close

    End Function

    Aqui com comando Sql eu insere nas duas tabelas apenas as linhas que não existem nas duas tabelas.
    Código:

    Public Function Grava_Registro(strsql, strsql2 As String)

    Dim db As DAO.Database
    Dim strsql3 As String

    Set db = CurrentDb
    ' inserir todos os campos
        Let strsql = _
                    "INSERT INTO Tab_Carteira ( " & _
                        "[MES PLANEJADO], [SERRA], [STATUS EXTRUSAO], [ATRASO], [OBS_ORDEM], [CENTRO], [ORDEM VENDAS], [ITEM ORDEM VENDAS], " & _
                        "[ORG VENDAS], [CLIENTE], [NOME CLIENTE], [DESCRICAO CLIENTE], [NUMERO PEDIDO], [CENTRO SOLICITANTE], [MATERIAL PA], " & _
                        "[DESCRICAO PA], [DATA PEDIDO], [DT OV], [DT ENT PROD], [DATA PROMETIDA], [QT OV ORIGINAL], [QT ATUAL DA OV], [ESTOQUE], " & _
                        "[QT PENDENTE], [SALDO A PRODUZIR], [GEST DEMANDA], [PNT REABASTECIMENTO], [ESTOQUE SEGURANCA], [ORDEM PLANEJADA FIX], " & _
                        "[DT ELEMENTO MRP], [NR_OP_OV], [QT_OP_OV], [ELEMENTO MRP], [PLAN MRP], [PERFIL], [LIGA], [TEMPERA], [ACABAMENTO EXTRUDADO]," & _
                        "[COR], [COMPRIMENTO PERFIL], [CAMADA], [ESPESSURA CAMADA ANOD], [AREA ANODIZAVEL], [PRODUTIVIDADE INDIVIDUAL], [GRAMATURA EXTRUSAO], " & _
                        "[ROLDANA], [COMPRIMENTO MAXIMO], [APLICACAO PERFIL], [FABRICA PLANTA ALUMINIO], [TIPO EXTRUDADO], [PRENSA PREFERENCIAL], " & _
                        "[COD FAMILIA CAPACIDADE], [FAMILIA CAPACIDADE], [COD FAMILIA ORCAMENTO], [FAMILIA ORCAMENTO], [TOLERANCIA OV +], [TOLERANCIA OV -], " & _
                        "[NR MENSAGEM EXCECAO], [TXT MENSAGEM EXCECAO], [OBRA], [TROCA], [PRENSA], [PRENSA A FERRAMENTA], [PRENSA A NITRETACAO], " & _
                        "[PRENSA B FERRAMENTA], [PRENSA B NITRETACAO], [PRENSA C FERRAMENTA], [PRENSA C NITRETACAO], [PRENSA D FERRAMENTA], " & _
                        "[PRENSA D NITRETACAO], [PRENSA E FERRAMENTA], [PRENSA E NITRETACAO], [PRENSA F FERRAMENTA], [PRENSA F NITRETACAO], " & _
                        "[QT TOTAL FERRAMENTA], [STATUS], [ACOMPANHAMENTO / TESTE], [DATA INICIAL OP SE], [QT PROGRAMADA OP SE (KG)], " & _
                        "[QT PROGRAMADA OP SE (PÇ)], [QT EM PROCESSO OP SE (KG)], [QT EM PROCESSO OP SE (PÇ)], [LOCAL PROCESSO - FIRST], " & _
                        "[QT INICIAL OP SE (KG)], [QT INICIAL OP SE (PÇ)], [QT ENTREGUE OP SE (KG)], [QT ENTREGUE OP SE (PC)], [QT SALDO OP SE (KG)], " & _
                        "[QT SALDO OP SE (PÇ)], [SALDO PRODUZIR PRENSA OP SE (KG)], [SALDO PRODUZIR PRENSA OP SE (PÇ)], [SALDO A PROGRAMAR OP SE (KG)], " & _
                        "[SALDO A PROGRAMAR OP SE (PÇ)], [REPROGRAMAÇÃO OP SE (KG)], [REPROGRAMAÇÃO OP SE (PÇ)], [LOCAL REPROGRAMAÇÃO], [DATA INICIAL OV SE], " & _
                        "[QT PROGRAMADA OV SE (KG)], [QT PROGRAMADA OV SE (PÇ)], [QT EM PROCESSO OV SE (KG)], [QT EM PROCESSO OV SE (PÇ)], " & _
                        "[QT INICIAL OV SE (KG)], [QT INICIAL OV SE (PÇ)], [QT ENTREGUE OV SE (KG)], [QT ENTREGUE OV SE (PC)], [QT SALDO OV SE (KG)], " & _
                        "[QT SALDO OV SE (PÇ)], [SALDO PRODUZIR PRENSA OV SE (KG)], [SALDO PRODUZIR PRENSA OV SE (PÇ)], [SALDO A PROGRAMAR OV SE (KG)], " & _
                        "[SALDO A PROGRAMAR OV SE (PÇ)], [REPROGRAMAÇÃO OV SE (KG)], [REPROGRAMAÇÃO OV SE (PÇ)], [MEDIA PRODUCAO], [GEF], " & _
                        "[NECESSIDADE QUANTIDADE VEZES], [QT FERRAMENTAS], [DISPONIBILIDADE QUANTIDADE VEZES], [TENTATIVAS], [INSUCESSO PRODUCAO], " & _
                        "[ATENDIMENTO OP], [ATENDIMENTO OV] )" & _
                    "VALUES( " & strsql & ") "
        db.Execute strsql
         

        If (IsNull(strsql2) = False) Or (strsql2 <> "") Then ' Quando o campo "MATERIAL PA" da Linha adicionado for igual = campo "cod_produto" da tabela Cadastro de Produto
            'Let strsql2 = "INSERT INTO Tab_GV (ov, item, cod_cliente, descricao_cliente, cod_produto, descricao_produto, data_entrada_ov, data_sugerida, num_pedido) VALUES ( " & strsql2 & ")"
                Let strsql2 = _
                    "INSERT INTO Tab_GV ( " & _
                      "[ov], [item], " & _
                      "[cod_cliente], [descricao_cliente], [cod_produto], " & _
                      "[descricao_produto], [data_entrada_ov], [data_sugerida], [num_pedido], [status_do_registro])" & _
                      "VALUES( " & strsql2 & ") "
                     
                db.Execute strsql2
        End If
        db.Close

    End Function

      Data/hora atual: 26/4/2024, 23:11