Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

Views

VBA Tips - Envie emails diretamente através do BOL e UOL - Send Email using brazilian free Account - BOL


Pode ser que prefiramos enviar os nossos relatórios através de uma conta externa ao nosso email corporativo para não sobrecarregar o servidor e desse modo utilizemos uma conta externa para isso. 
Neste exemplo utilizaremos o UOL ou BOL.

O endereço do servidor SMTP do BOL/UOL é "smtps.bol.com.br". Ele suporta conexão SSL para fazer a autenticação do usuário, e devemos usar o seu endereço de email do BOL/UOL, como o nome do usuário de autenticação SMTP. Por exemplo: seu e-mail é "bernardess@bol.com.br", e em seguida o nome do usuário deve ser "bernardess@bol.com.br".

Se quisermos fazer uso da conexão SSL do servidor SMTP no BOL/UOL, precisaremos definir a porta para 465 ou 587. 

Secure Socket Layer - SSL

É um padrão global em tecnologia de segurança desenvolvida pela Netscape em 1994. Ele cria um canal criptografado entre um servidor web e um navegador (browser) para garantir que todos os dados transmitidos sejam sigilosos e seguros. Milhões de consumidores reconhecem o "cadeado dourado" que aparece nos navegadores quando estão acessando um website seguro. 

Quando escolher ativar o SSL no seu servidor web você terá que responder algumas questões sobre a identidade do seu site (ex. a URL) e da sua empresa (ex. a Razão Social e o endereço). Seu servidor web então criará duas chaves criptográficas - a Chave Privada (Private Key) e a Chave Pública (Public Key). Sua Chave Privada não possui esse nome à toa - ela deve ser mantida privada e segura. Já a Chave Pública não necessita ser secreta e deve ser colocada na CSR (Certificate Signing Request) - um arquivo de dados contendo os detalhes do site e da empresa. Você deverá enviar esta CSR através do formulário de solicitação em nosso site, seus dados serão validados e se estiverem corretos seu certificado digital será emitido.

Seu servidor web irá associar o certificado emitido com a sua Chave Privada. Seu servidor irá estebelecer um link criptografado entre seu website e o navegador do seu consumidor.

Transport Layer Security - TLS

É um protocolo criptográfico cuja função é conferir segurança para a comunicação na Internet para serviços como email (SMTP), navegação por páginas (HTTP) e outros tipos de transferência de dados.

Simple Mail Transfer Protocol - SMTP  

É protocolo que transfere emails, é instalado como parte dos serviços de email junto o serviço POP3. O SMTP controla como o email é transportado e entregue através da Internet ao servidor de destino. O serviço SMTP envia e recebe emails entre os servidores, ao passo que o serviço POP3 recupera o email do servidor de email para o computador do usuário.

Extended Simple Mail Transfer Protocol - ESMTP  

ESMTP é uma definição de extensões de protocolo para o padrão Simple Mail Transfer Protocol. O formato da extensão foi definido na RFC 1869 em 1995. A RFC 1869 estabeleceu uma estrutura para as atuais e futuras extensões, para produzir um meio gerenciável e consistente pelo qual os clientes e servidores SMTP possam ser identificados e servidores SMTP possam indicar extensões suportadas para clientes conectados.

O código a seguir demonstrará como enviar e-mail usando o servidor SMTP do Hotmail / MSN Live.

Para tornar o seu projeto funcional faça o download e instale o
EASendMail em sua máquina.

Não deixe de adicionar a referência ao controle ActiveX de SMTP do objeto EASendMail no seu projeto. 

Inline image 1

Lembre-se, antes de executá-lo corretamente, por favor, mude o servidor SMTPusuáriosenharemetente, e destinatário conforme a conta a ser utilizada.

Private Sub btnSendMail_Click() 

    Dim oSmtp As New EASendMailObjLib.Mail 
    Let oSmtp.LicenseCode = "TryIt" 

    ' Set your Yahoo email address
    Let oSmtp.FromAddr = "bernardess@bol.com.br

    ' Add recipient email address
    oSmtp.AddRecipientEx "bernardess@gmail.com", 0 

    ' Set email subject
    Let oSmtp.Subject = "Teste de envio de email a partir da minha conta do UOL/BOL" 

    ' Set email body
    Let oSmtp.BodyText = "Teste de envio de email com VBA a partir da minha conta do UOL/BOL" 

    ' Yahoo SMTP server address
    Let oSmtp.ServerAddr = "smtps.bol.com.br

    ' For example: your email is "bernardess@bol.com.br", then the user should be "bernardess@bol.com.br"
    Let oSmtp.UserName = "bernardess@bol.com.br
    Let oSmtp.Password = "<Digite a sua senha aqui>" 

    ' Because Yahoo deploys SMTP server on 465 port with direct SSL connection.
    ' So we should change the port to 465 ou 587.
    Let oSmtp.ServerPort = 465 ' or 587

    ' Detect SSL/TLS automatically
    oSmtp.SSL_init 

    MsgBox "Iniciando o envio do email. . . " 

    If oSmtp.SendMail() = 0 Then 
        MsgBox "O email foi enviado com sucesso!" 
    Else 
        MsgBox "Falha no envio de email - Erro nº: " & oSmtp.GetLastErrDescription() 
    End If 

End Sub 

Tags: VBA, UOL, BOL, email, e-mail, SMTP, SSL, TLS, ESMTP, HTTP, CSR, RFC 1869, 

VBA Tips - Envie emails através do Yahoo - Send Email using Yahoo Account


Pode ser que prefiramos enviar os nossos relatórios através de uma conta externa ao nosso email corporativo para não sobrecarregar o servidor e desse modo utilizemos uma conta externa para isso. 
Neste exemplo utilizaremos o Yahoo.

O endereço do servidor SMTP do Yahoo é "smtp.mail.yahoo.com". Ele suporta conexão normal e SSL para fazer a autenticação do usuário, e devemos usar o seu endereço de email do Yahoo, como o nome do usuário de autenticação ESMTP. Por exemplo: seu e-mail é "bernardess@yahoo.com", e em seguida o nome do usuário deve ser "bernardess@yahoo.com".

Se quisermos fazer uso da conexão SSL do servidor SMTP no Yahoo, precisaremos definir a porta para 465. 

Secure Socket Layer - SSL

É um padrão global em tecnologia de segurança desenvolvida pela Netscape em 1994. Ele cria um canal criptografado entre um servidor web e um navegador (browser) para garantir que todos os dados transmitidos sejam sigilosos e seguros. Milhões de consumidores reconhecem o "cadeado dourado" que aparece nos navegadores quando estão acessando um website seguro. 

Quando escolher ativar o SSL no seu servidor web você terá que responder algumas questões sobre a identidade do seu site (ex. a URL) e da sua empresa (ex. a Razão Social e o endereço). Seu servidor web então criará duas chaves criptográficas - a Chave Privada (Private Key) e a Chave Pública (Public Key). Sua Chave Privada não possui esse nome à toa - ela deve ser mantida privada e segura. Já a Chave Pública não necessita ser secreta e deve ser colocada na CSR (Certificate Signing Request) - um arquivo de dados contendo os detalhes do site e da empresa. Você deverá enviar esta CSR através do formulário de solicitação em nosso site, seus dados serão validados e se estiverem corretos seu certificado digital será emitido.

Seu servidor web irá associar o certificado emitido com a sua Chave Privada. Seu servidor irá estebelecer um link criptografado entre seu website e o navegador do seu consumidor.

Transport Layer Security - TLS

É um protocolo criptográfico cuja função é conferir segurança para a comunicação na Internet para serviços como email (SMTP), navegação por páginas (HTTP) e outros tipos de transferência de dados.

Simple Mail Transfer Protocol - SMTP  

É protocolo que transfere emails, é instalado como parte dos serviços de email junto o serviço POP3. O SMTP controla como o email é transportado e entregue através da Internet ao servidor de destino. O serviço SMTP envia e recebe emails entre os servidores, ao passo que o serviço POP3 recupera o email do servidor de email para o computador do usuário.

Extended Simple Mail Transfer Protocol - ESMTP  

ESMTP é uma definição de extensões de protocolo para o padrão Simple Mail Transfer Protocol. O formato da extensão foi definido na RFC 1869 em 1995. A RFC 1869 estabeleceu uma estrutura para as atuais e futuras extensões, para produzir um meio gerenciável e consistente pelo qual os clientes e servidores SMTP possam ser identificados e servidores SMTP possam indicar extensões suportadas para clientes conectados.

O código a seguir demonstrará como enviar e-mail usando o servidor SMTP do Hotmail / MSN Live.

Para tornar o seu projeto funcional faça o download e instale o
EASendMail em sua máquina.

Não deixe de adicionar a referência ao controle ActiveX de SMTP do objeto EASendMail no seu projeto. 

Inline image 1

Lembre-se, antes de executá-lo corretamente, por favor, mude o servidor SMTPusuáriosenharemetente, e destinatário conforme a conta a ser utilizada.

' The following example codes demonstrate sending email message using Yahoo SMTP Server
' To get full sample projects, please download and install EASendMail on your machine.
' To run it correctly, please change SMTP server, user, password, sender, recipient value to yours

Private Sub btnSendMail_Click() 

    Dim oSmtp As New EASendMailObjLib.Mail 
    Let oSmtp.LicenseCode = "TryIt" 

    ' Set your Yahoo email address
    Let oSmtp.FromAddr = "myid@yahoo.com

    ' Add recipient email address
    oSmtp.AddRecipientEx "support@emailarchitect.net", 0 

    ' Set email subject
    Let oSmtp.Subject = "Teste de envio de email a partir da minha conta do Yahoo" 

    ' Set email body
    Let oSmtp.BodyText = "Teste de envio de email com VBA a partir da minha conta do Yahoo" 

    ' Yahoo SMTP server address
    Let oSmtp.ServerAddr = "smtp.mail.yahoo.com

    ' For example: your email is "myid@yahoo.com", then the user should be "myid@yahoo.com"
    Let oSmtp.UserName = "bernardess@yahoo.com
    Let oSmtp.Password = "<Digite a sua senha aqui>" 

    ' Because Yahoo deploys SMTP server on 465 port with direct SSL connection.
    ' So we should change the port to 465.
    Let oSmtp.ServerPort = 465 

    ' Detect SSL/TLS automatically
    oSmtp.SSL_init 

    MsgBox "Iniciando o envio do email. . . " 

    If oSmtp.SendMail() = 0 Then 
        MsgBox "O email foi enviado com sucesso!" 
    Else 
        MsgBox "Falha no envio de email - Erro nº: " & oSmtp.GetLastErrDescription() 
    End If 

End Sub 

Tags: VBA, Yahoo, email, e-mail, SMTP, SSL, TLS, ESMTP, HTTP, CSR, RFC 1869, 

VBA Tips - Envie emails através do Hotmail e MSN Live - Send Email using Hotmail, MSN Live


Neste exemplo utilizaremos o Hotmail ou o MSN Live. Pode ser que prefiramos enviar os nossos relatórios através de uma conta externa ao nosso email corporativo para não sobrecarregar o servidor. Assim, utilizamos uma conta externa para isso.

O endereço do servidor SMTP do Hotmail / MSN  é "smtp.live.com". Ele requer conexão TSL para fazer a autenticação do usuário, e devemos usar o endereço do email Live como o nome do usuário para autenticação ESMTP. Por exemplo: seu e-mail é "liveid@hotmail.com", e em seguida o nome do usuário será "myid@hotmail.com".

Secure Socket Layer - SSL

É um padrão global em tecnologia de segurança desenvolvida pela Netscape em 1994. Ele cria um canal criptografado entre um servidor web e um navegador (browser) para garantir que todos os dados transmitidos sejam sigilosos e seguros. Milhões de consumidores reconhecem o "cadeado dourado" que aparece nos navegadores quando estão acessando um website seguro. 

Quando escolher ativar o SSL no seu servidor web você terá que responder algumas questões sobre a identidade do seu site (ex. a URL) e da sua empresa (ex. a Razão Social e o endereço). Seu servidor web então criará duas chaves criptográficas - a Chave Privada (Private Key) e a Chave Pública (Public Key). Sua Chave Privada não possui esse nome à toa - ela deve ser mantida privada e segura. Já a Chave Pública não necessita ser secreta e deve ser colocada na CSR (Certificate Signing Request) - um arquivo de dados contendo os detalhes do site e da empresa. Você deverá enviar esta CSR através do formulário de solicitação em nosso site, seus dados serão validados e se estiverem corretos seu certificado digital será emitido.

Seu servidor web irá associar o certificado emitido com a sua Chave Privada. Seu servidor irá estebelecer um link criptografado entre seu website e o navegador do seu consumidor.

Transport Layer Security - TLS

É um protocolo criptográfico cuja função é conferir segurança para a comunicação na Internet para serviços como email (SMTP), navegação por páginas (HTTP) e outros tipos de transferência de dados.

Simple Mail Transfer Protocol - SMTP  

É protocolo que transfere emails, é instalado como parte dos serviços de email junto o serviço POP3. O SMTP controla como o email é transportado e entregue através da Internet ao servidor de destino. O serviço SMTP envia e recebe emails entre os servidores, ao passo que o serviço POP3 recupera o email do servidor de email para o computador do usuário.

Extended Simple Mail Transfer Protocol - ESMTP  

ESMTP é uma definição de extensões de protocolo para o padrão Simple Mail Transfer Protocol. O formato da extensão foi definido na RFC 1869 em 1995. A RFC 1869 estabeleceu uma estrutura para as atuais e futuras extensões, para produzir um meio gerenciável e consistente pelo qual os clientes e servidores SMTP possam ser identificados e servidores SMTP possam indicar extensões suportadas para clientes conectados.

O código a seguir demonstrará como enviar e-mail usando o servidor SMTP do Hotmail / MSN Live.

Para tornar o seu projeto funcional faça o download e instale o
EASendMail em sua máquina.

Não deixe de adicionar a referência ao controle ActiveX de SMTP do objeto EASendMail no seu projeto. 

Inline image 1

Lembre-se, antes de executá-lo corretamente, por favor, mude o servidor SMTPusuáriosenharemetente, e destinatário conforme a conta a ser utilizada.

' The following example codes demonstrate sending email message using Hotmail/MSN Live SMTP Server
' To get full sample projects, please download and install EASendMail on your machine.
' To run it correctly, please change SMTP server, user, password, sender, recipient value to yours

Private Sub btnSendMail_Click() 

    Dim oSmtp As New EASendMailObjLib.Mail 
    Let oSmtp.LicenseCode = "TryIt" 

    ' Set your Hotmail email address
    Let oSmtp.FromAddr = "liveid@hotmail.com

    ' Add recipient email address
    oSmtp.AddRecipientEx "support@emailarchitect.net", 0 

    ' Set email subject
    Let oSmtp.Subject = "Teste de email a partir da conta do Hotmail." 

    ' Set email body
    Let oSmtp.BodyText = "Teste de email com VBA a partir da conta do Hotmail." 

    ' Hotmail SMTP server address
    Let oSmtp.ServerAddr = "smtp.live.com

    ' Hotmail user authentication should use your
    ' Hotmail email address as the user name.
    Let oSmtp.UserName = "liveid@hotmail.com
    Let oSmtp.Password = "<Digite aqui a sua senha>" 

    ' detect SSL/TLS connection automatically
    oSmtp.SSL_init 

    MsgBox "Início do envio de emails." 

    If oSmtp.SendMail() = 0 Then 
        MsgBox "Os emails foram enviados com sucesso!" 
    Else 
        MsgBox "Falha ao enviar email - Erro nº: " & oSmtp.GetLastErrDescription() 
    End If 

End Sub 

Tags: VBA, MSN, Hotmail, email, e-mail, SMTP, SSL, TLS, ESMTP, HTTP, CSR, RFC 1869, 

VBA Tips - Envie emails através do GMail - Send Email using Gmail Account


Pode ser que prefiramos enviar os nossos relatórios através de uma conta externa ao nosso email corporativo para não sobrecarregar o servidor. Assim, utilizamos uma conta externa para isso. No exemplo abaixo elegi o Gmail da Google.

O endereço do servidor SMTP do Gmail é "smtp.gmail.com". Ele requer conexão SSL ou TLS, e você deve usar um endereço de email do Gmail como o nome de usuário para autenticação ESMTP

Secure Socket Layer - SSL

É um padrão global em tecnologia de segurança desenvolvida pela Netscape em 1994. Ele cria um canal criptografado entre um servidor web e um navegador (browser) para garantir que todos os dados transmitidos sejam sigilosos e seguros. Milhões de consumidores reconhecem o "cadeado dourado" que aparece nos navegadores quando estão acessando um website seguro. 

Quando escolher ativar o SSL no seu servidor web você terá que responder algumas questões sobre a identidade do seu site (ex. a URL) e da sua empresa (ex. a Razão Social e o endereço). Seu servidor web então criará duas chaves criptográficas - a Chave Privada (Private Key) e a Chave Pública (Public Key). Sua Chave Privada não possui esse nome à toa - ela deve ser mantida privada e segura. Já a Chave Pública não necessita ser secreta e deve ser colocada na CSR (Certificate Signing Request) - um arquivo de dados contendo os detalhes do site e da empresa. Você deverá enviar esta CSR através do formulário de solicitação em nosso site, seus dados serão validados e se estiverem corretos seu certificado digital será emitido.

Seu servidor web irá associar o certificado emitido com a sua Chave Privada. Seu servidor irá estebelecer um link criptografado entre seu website e o navegador do seu consumidor.

Transport Layer Security - TLS

É um protocolo criptográfico cuja função é conferir segurança para a comunicação na Internet para serviços como email (SMTP), navegação por páginas (HTTP) e outros tipos de transferência de dados.

Simple Mail Transfer Protocol - SMTP  

É protocolo que transfere emails, é instalado como parte dos serviços de email junto o serviço POP3. O SMTP controla como o email é transportado e entregue através da Internet ao servidor de destino. O serviço SMTP envia e recebe emails entre os servidores, ao passo que o serviço POP3 recupera o email do servidor de email para o computador do usuário.

Extended Simple Mail Transfer Protocol - ESMTP  

O ESMTP é uma definição de extensões de protocolo para o padrão Simple Mail Transfer Protocol. O formato da extensão foi definido na RFC 1869 em 1995. A RFC 1869 estabeleceu uma estrutura para as atuais e futuras extensões, para produzir um meio gerenciável e consistente pelo qual os clientes e servidores SMTP possam ser identificados e servidores SMTP possam indicar extensões suportadas para clientes conectados.

Por exemplo: Caso o seu e-mail seja "bernardess@gmail.com", o nome do usuário deverá ser "bernardess@gmail.com".

Os códigos de exemplo a seguir demonstram o envio de mensagem de email usando o

Para tornar o seu projeto funcional faça o download e instale o
EASendMail em sua máquina.

Não deixe de adicionar a referência ao controle ActiveX de SMTP do objeto EASendMail no seu projeto. 

Inline image 1

Lembre-se, antes de executá-lo corretamente, por favor, mude o servidor SMTP, usuário, senha, remetente, e destinatário conforme a conta a ser utilizada.

Private Sub btnSendMail_Click() 

    Dim oSmtp As New EASendMailObjLib.Mail 
    Let oSmtp.LicenseCode = "TryIt" 

    ' Set your Gmail email address
    Let oSmtp.FromAddr = "bernardess@gmail.com

    ' Add recipient email address
    oSmtp.AddRecipientEx "inanyplacet@gmail.com", 0 

    ' Set email subject
    Let oSmtp.Subject = "Teste de envio de email através da conta do Gmail." 

    ' Set email body
    Let oSmtp.BodyText = "Este é um teste de envio de email através do Gmail." 

    ' Gmail SMTP server address
    Let oSmtp.ServerAddr = "smtp.gmail.com

    ' If you want to use direct SSL 465 port,
    ' Please add this line, otherwise TLS will be used.
    ' Let oSmtp.ServerPort = 465

    ' detect SSL/TLS automatically
    oSmtp.SSL_init 

    ' Gmail user authentication should use your
    ' Gmail email address as the user name.
    ' For example: your email is "bernardess@gmail.com", then the user should be "bernardess@gmail.com"
    Let oSmtp.UserName = "bernardess@gmail.com
    Let oSmtp.Password = "<Digite aqui a sua senha>" 

    MsgBox "Início do envio de e-mails" 

    If oSmtp.SendMail() = 0 Then 
        MsgBox "Email foi enviado com sucesso!" 
    Else 
        MsgBox "Falha ao enviar email, erro detectado. Erro nº: " & oSmtp.GetLastErrDescription() 
    End If 

End Sub 


Tags: VBA, Gmail, email, e-mail, SMTP, SSL, TLS, ESMTP, HTTP, CSR, RFC 1869, 

VBA Access - Exportando dados para arquivo texto delimitado com TAB


Uma das facilidades máximas do MS Access é a possibilidade de conectá-lo a qualquer base de dados e a partir disso poder extrair e manipularmos os dados de forma rápida e eficiente. Obviamente a facilidade e a velocidade disso está ligado a proficiência no aplicativo.


É normal precisarmos acessar alguma tabela ou query do MS Access precisando exportá-la para um arquivo texto delimitado por TAB. Como se faz isso?

No exemplo a seguir temos 3 necessidades atendidas:

- O acesso aos dados de uma query.
- E exportação desses dados seguindo um formato em uma nova tabela.
- A exportação deste mesmo resultado num arquivo texto.

Para tanto estamos utilizando o método DAO.

O que são DAO e ODBC?

Objetos de acesso a dados (DAO) e o Open Database Connectivity (ODBC) são APIs que permitem que escrevamos aplicativos independentes de qualquer sistema gerenciador de banco de dados (DBMS).

O DAO é familiar aos programadores de banco de dados que usam o VBA do Microsoft Access ou Microsoft Visual Basic. O DAO usa o mecanismo de banco de dados Microsoft Jet para fornecer um conjunto de objetos de acesso a dados:

- banco de dados de objetos,

- objetos tabledef e 

- querydef,

- objetos recordset e

- outros. 

O DAO funciona melhor com arquivos .ACCDB como aqueles criados pelo Microsoft Access, mas também podemos acessar outras fontes de dados ODBC através dele e outros mecanismos de banco de dados Microsoft Jet.

O ODBC disponibiliza uma API de outros fornecedores de banco de dados diferentes que implementaram os drivers ODBC para um determinado DBMS. O programa utiliza essa API para chamar o Gerenciador de Driver ODBC, que passa as chamadas para o driver apropriado. O driver, por sua vez, interage com o DBMS usando o SQL.

Inline image 1


Classes do DAO
As classes DAO também podem acessar uma grande variedade de drivers disponíveis para o Open Database Connectivity (ODBC).


CDaoWorkspace
Gerencia uma sessão de banco de dados nomeada, protegida por senha de login para fazer logoff. A maioria dos programas usam o padrão.

CDaoDatabase
Uma conexão com um banco de dados através da qual pode operar os dados.

CDaoRecordset
Representa um conjunto de registros selecionados de uma fonte de dados.

CDaoRecordView
Um modo de exibição que exibe registros do banco de dados sob controle.

CDaoQueryDef
Representa uma definição de consulta, normalmente salva em um banco de dados.

CDaoTableDef
Representa a definição armazenada de uma tabela base ou tabela anexada.

CDaoException
Representa uma condição de exceção decorrentes das classes DAO.

CDaoFieldExchange
Suporta as rotinas de exchange (DFX) do campo de registro DAO usadas pelas classes de banco de dados DAO. Você normalmente não irá usar essa classe diretamente.

Classes relacionadas

CLongBinary
Encapsula um identificador para o armazenamento de um objeto binário grande (BLOB), como um bitmap. Os objetos CLongBinary são usados para gerenciar grandes 

dados armazenados em 

objetos e tabelas de banco de dados.

COleCurrency
Um tipo aritmético de ponto fixo, com 15 dígitos antes do ponto decimal e 4 dígitos após.

COleDateTime
Representa os valores de data e hora.

COleVariant
Dados VARIANTs podem ser armazenados em vários formatos.

O código abaixo serve de exemplo para que possa ampliar conforme as suas necessidades:

Public Sub DAORecordset()
  ' Definição do acesso a dados.
    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim rs As DAO.Recordset
  
    Dim strfile As String
    Dim Strstring As String
  
    Dim strValue As String
    Dim nLine As String
    Dim nSetor As Variant
    Dim nCities As String
    Dim preCity As String
    Dim nFlag As Boolean
    
    Let fFile = FreeFile

    'Nomeia o arquivo texto que receberá os dados na pasta e arquivo definidos
    Let strfile = "D:\Bernardes\TextFileName.Txt"
  
  ' Informa o nome da Query que será a base dos dados considerados.
  Set db = CurrentDb
  Set qdf = db.QueryDefs("qry_Lin_Export")
  
  Set rs = qdf.OpenRecordset
  
  ' Abre o arquivo onde serão gravados os dados.
  Open strfile For Output As #fFile
  
  ' Garante que o processo só rodará enquanto não for o final, nem o começo do Recordset.
  If Not (rs.EOF And rs.BOF) Then
    Do While Not rs.EOF
        Let nLine = rs.Fields(0).Value
        Let nSetor = rs.Fields(1).Value
        Let nCities = ""
        Let nFlag = True
        
        Do While Not rs.EOF And (rs.Fields(1).Value = nSetor)
            If nFlag Then
                Let nCities = nCities & Trim(rs.Fields(2).Value) & "/"
                Let preCity = Trim(rs.Fields(2).Value)
                Let nFlag = False
            Else
                If preCity <> Trim(rs.Fields(2).Value) Then
                    Let nCities = nCities & Trim(rs.Fields(2).Value) & "/"
                End If
            End If
            
            rs.MoveNext
        Loop
        
        ' String final a ser exportada.
        Let Strstring = nLine & vbTab & nSetor & vbTab & Replace(nCities, " / ", "/")
        'Let strValue = Now() & " | " & nSetor & ": " & Replace(nCities, " / ", "/") 'Replace(strValue, Chr(13), "")

        Debug.Print Now() & " | " & Strstring
    
        'Exporta para tabela.
        DoCmd.SetWarnings (False)
        
        ' Grava o resultado como um registro dentro de uma tabela previamente preparada.
        DoCmd.RunSQL ("INSERT INTO tbl_Linhas_Brick_Sector_002_Horizontalizado ( Linha, Setor, CIDADE ) " & _
                      "SELECT '" & nLine & "' AS Line, " & nSetor & " AS Sector, '" & nCities & "' AS City " & _
                      "FROM tbl_Sys_Add")

        DoCmd.SetWarnings (True)
    
        ' Grava a string resultante da consolidação.
        Print #fFile, Strstring        
        
        Let Strstring = ""

    Loop
  
    rs.Close
    Close #fFile
    
    Set rs = Nothing
    Set qdf = Nothing
    Set db = Nothing
   End If
End Sub


Tags: VBA, Access, Loop, while, export, txt, file, TAB, delimeted, DAO, recordset,

LinkWithinBrazilVBAAccessSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine