MaximoAccess

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

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Compartilhe
    avatar
    evandropf
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2015

    VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  evandropf em 16/1/2019, 01:33

    Boa noite pessoal tenho um probleminha que não estou conseguindo solucionar,
    preciso gerar alguns layouts para importação.

    tenho uma tabela de clientes com os nomes de clientes com diversos quantidade de caracteres, preciso exportar os 30 primeiros caracteres de cada cliente.

    o campo endereço precisa ter no máximo 40 caracteres como consigo limitar na exportação esses dados ?

    segue uma função que encontrei aqui mesmo e estou tentando adaptar as minhas necessidades.

    formatar campo valor para não arrendondar mas quando coloco essa mascara "###000" ele deixa de funcionar corretamente com ponto dessa forma funciona. "#.##0,00".

    caso alguém tenha alguma dica de como resolver fico muito agradecido. Obrigado


    Código:
    Dim DB As DAO.Database
    Dim RSP As DAO.Recordset
    Dim strSQL As String
    Dim Sai As String
    Dim JustStr As String


    Set DB = CurrentDb

    strSQL = "SELECT * from Clientes"
    Set RSP = DB.OpenRecordset(strSQL)
    strSQL = Application.CurrentProject.Path
    Open strSQL & "\ClientesTeste.txt" For Output As #1

    Print #1, Sai
    With RSP
    .MoveFirst
    Do While Not .EOF

    Sai = UCase(Format(RSP!Nome, "!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")) & " "
    'nome em maisculo e

    & Format(RSP!Endereco, "!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
    '

    & Format(RSP!LimiteCred, "###000")
    'formatar valor sem pontos e sem arredondamentos

    CtaItens = CtaItens + 1
    Print #1, Sai
    .MoveNext
    Loop
    End With
    MsgBox "Exportado com Sucesso, verifique junto ao banco..."

    Set DB = Nothing
    Set RSP = Nothing
    Close #1
    Exit Sub
    End Sub
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5815
    Registrado : 15/03/2013

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  ahteixeira em 16/1/2019, 11:41

    Olá Evandro, seja Bem-Vindo ao fórum.

    Para obter os primeiros 30 caratcteres do campo NomeCliente, podemos usar a função nativa do Access Left.

    Exemplo
    Código:
    Left ([NomeCliente], 30)

    Left é para esquerda
    Right para direita

    No caso do código que postou para o nome onde tem:
    Sai = UCase(Format(RSP!Nome, "!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")) & " "

    altere por:
    Sai = UCase(Left(RSP!Nome, 30)) & " "

    e teste o resultado.

    Abraço
    avatar
    evandropf
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2015

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  evandropf em 16/1/2019, 12:21

    ahteixeira: obrigado
    obeservei que quando o tamanho do texto e menor que a quantidade delimitada ex: 10 caracteres
    ele fica com um espaço menor atrapalhando a próxima coluna, eu conseguiria colocar espacos em branco quando for menor que 30 caracteres
    seria similar a isso em
    orcle:
    RPAD(RSP!Nome,30,' ')

    como faria em access algo assim ?

    Sai = UCase(left(RSP!Nome, 30))

    tentei assim
    Sai = UCase(left(RSP!Nome, 30, " ")) mas no access da um erro de sintaxe.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5815
    Registrado : 15/03/2013

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  ahteixeira em 16/1/2019, 12:28

    Olá Evandro,

    Acho que o que pretende já anda aqui no fórum desde 2015, veja se não é isto:
    http://www.maximoaccess.com/t22789-resolvidoexportar-tabela-para-txt

    Qualquer coisa estamos cá.

    Abraço
    avatar
    evandropf
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2015

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  evandropf em 16/1/2019, 18:22

    ahteixeira: obrigado pelo auxilio, instalei o access 2007 e verifiquei aqui, porem esta no meu pc o modelo disponibilizado não exporta os txt
    e tambem quando tento adptar para o access 2003 apresenta alguns erros,

    Sai = UCase(left(RSP!Nome, 30, " "))
    vou dar mais algumas pesquisada em como preencher o espaço vazio ate o final dos 30 caracteres com zero(0)
    para não atrapalhar a proxima coluna.

    Obrigado.
    Evandro
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4244
    Registrado : 20/04/2011

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  Silvio em 16/1/2019, 18:35

    Apenas um pitaco....

    Tem que atualizar os SP do pacote Officce.....SP2


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    avatar
    evandropf
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2015

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  evandropf em 18/1/2019, 14:54

    Bom dia,
    ate deu certo executar no access 2010, mas no access 2003 não aceita os mesmos códigos para abertura da tabela, seria possível adaptar ?


    Código:
    Dim rst As Recordset, varRecCount As Integer, varCount As Integer
    Dim varArq As String
    Dim DB As Database

    Set DB = CurrentDb()
    Set rst = DB.OpenRecordset("MODELO", dbOpenTable) 'se for tabelas
    ' APRESENTA ERRO NESSA PARTE.

    'Set rst = DB.OpenRecordset("Cst_CadAn") 'se for consultas
    rst.MoveLast
    varRecCount = rst.RecordCount
    rst.MoveFirst

    varArq = Application.CurrentProject.Path & "\testando.txt"
    'Tenta abrir o arquivo em caso de erro GerenErro
    Open varArq For Output As #1

    For varCount = 1 To varRecCount

    Print #1, TamanhoD(rst!DADOS1, 10) & TamanhoD(rst!DADOS2, 11) & TamanhoD(rst!NOME, 15) & TamanhoD(rst!CPF, 15) & TamanhoD(rst!DADOS5, 11) & TamanhoD(rst!DADOS6, 11) & TamanhoD(rst!DADOS7, 11) & TamanhoD(rst!DADOS8, 11) & TamanhoE(rst!VALOR, 5) & TamanhoE(rst!DADOS10, 1) & TamanhoE(rst!DADOS11, 1) & TamanhoE(rst!DADOS12, 11) & TamanhoE(rst!DADOS13, 11)

    rst.MoveNext

    Next varCount
    Close #1
    rst.Close
    Set DB = Nothing
    MsgBox "Arquivo TXT foi criado em: " & varArq, vbInformation, "Atenção"
    Exit Sub

    seria possivel adaptar para access 2003 ?
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5815
    Registrado : 15/03/2013

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  ahteixeira em 18/1/2019, 16:28

    Ola,

    Poste a sua base de dados em 2003,para se testar.

    Não será referências em falta, já complicou?

    Aguardamos
    avatar
    evandropf
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2015

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  evandropf em 21/1/2019, 11:37

    Bom dia, deu certo abrir o exemplo.

    so estou com uma duvida preciso escrever em 3 tipos de registro

    cabeçalho da venda = ok

    itens da venda dentro do laço = ok

    totalização da venda fora do laço = esse não consigo uma posição para colocar todos os testes ele apresenta erro.

    codigo abaixo:


    Código:
    Dim rst As Recordset, varRecCount As Integer, varCount As Integer
    'On Error Resume Next
    Dim varArq As String
    Dim DB As Database
    Dim Sai As String

    Set DB = CurrentDb()
    Set rst = DB.OpenRecordset("export_PedidoVendas") 'se for tabelas
    'Set rst = DB.OpenRecordset("Cst_CadAn") 'se for consultas
    rst.MoveLast
    varRecCount = rst.RecordCount
    rst.MoveFirst

    varArq = Application.CurrentProject.Path & "\PedidoVenda.txt"
    Open varArq For Output As #1

    Print #1, "PRE|" & Format(rst!CodVenda, "000000") & "|" & "|" & rst!CodCliente & "|" & rst!Nome
    'IMPRIME LINHA1 TITULO
    For varCount = 1 To varRecCount


    Print #1, "PRI|" & rst!Quantidade & "|" rst!Preco & "|" rst!SubTotal & "|" rst!CodProduto
    'IMPRIME LINHA2 ITENS

    rst.MoveNext

    'Print #1, "PFP|DH|" & Replace(Format(rst!Valor, "#.#0"), ",", ".")
    '>>>>>> IMPRIME TOTAL NÃO FUNCIONA<<<<<<<<<<<<<<<<<<<<<<<<
    'IMPRIMIR DEPOIS DO LAÇO

    Next varCount


    'JA TENTEI AQUI NÃO DEU CERTO

    Close #1
    rst.Close
    Set DB = Nothing
    MsgBox "Arquivo TXT foi criado em: " & varArq, vbInformation, "Atenção"
    Exit Sub
    'Print #1, "PFP|DH|" & Replace(Format(rst!Valor, "#.#0"), ",", ".")
    End Sub
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5815
    Registrado : 15/03/2013

    Re: VBA exportação de dados tabela pré-formatado e tamanhos limitados

    Mensagem  ahteixeira em 21/1/2019, 21:01

    Olá,

    Se não tem totais em tabela, tem que ser calculado na execução.
    Poste a base de dados com dados de amostragem para se testar.

    Abraço

      Data/hora atual: 23/3/2019, 13:31