Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

Mostrando postagens com marcador Jet. Mostrar todas as postagens
Mostrando postagens com marcador Jet. Mostrar todas as postagens

Office 2013- Access 2013 - 10 Pontos Positivos Relevantes



Temos algumas poucas semanas de desenvolvimento com a nova versão do MS Access 2013, mas já podemos compartilhar algumas impressões que podem ajudá-lo a saber se deve mudar da versão 2010 ou não.

 1 - Desenvolvimento baseado no SQL Server.

     O MS Access costumava ter o seu próprio motor de banco de dados, conhecido originalmente como JET,
     o qual agora chama-se ACE. Poderemos sempre converter um banco de dados para o SQL Server e continuarmos
     usando o MS Access como front-end no novo banco de dados SQL Server. No entanto, a conversão 
     nunca ficava livre de problemas e havia diferenças suficientes entre o motor JET / ACE e o SQL Server
     em algumas incompatibilidades.

     Em termos de conversão o seu banco de dados terá um excelente escalabilidade com o SQL Server como backend .

     A equipe do MS Access está reunida com o pessoal do SQL Server em base regular como nunca estiveram antes,
     esperando oportunidades maiores e melhores de colaboração entre os grupos.

 2 - Podemos continuar usando a nossa aplicação, os nossos relatórios com outras melhorias.

     Outra esplêndida adição é a Tecnologia Web ao nosso ao banco de dados legado. 
     
     Normalmente projetamos aplicações complexas, e sejamos sinceros, é muito improvável que as convertamos para aplicações web. No entanto,
     o fato de que podemos nos conectar ao SQL Server significa que podemos continuar usando os nossos aplicativos legados, desfrutando de todas
     as características espetaculares que o MS Access tem a oferecer. É um constante ganha-ganha.

 3 - As conexões continuam sendo suportadas.

     Podemos usar o SQL Server Reporting Services, MS Excel ou quaisquer outras ferramentas que suportarem conexão
     com o SQL Azure / SQL Server ODBC para gerar os relatórios. 

     Muitos dos nossos projetos normalmente têm as planilhas MS Excel como relatórios de saída. Por outros vários motivos,com a
     funcionalidade ODC, é possível criarmos planilhas com dados do Web Access Service.

 4 - Nessa nova versão os desenvolvedores são liberados de preocupar-se com a "forma", concentrando-se na normalização.

     Alguns programadores ficarão horrorizados com essa aparente perda de controle.

     Não poderão mais colocar um botão perfeito no pixel exato.

     Mas, pense bem, não somos contratados para fazer aplicações bonitas, ou somos? Ao meu modo de ver, o layout diz muito de uma
     aplicação. Ignorar isso é jogar fora toda a teoria aplicada que a Apple conseguiu aplicar vez, após vez. A interface é sim importante.

     Mas, o ponto de vista da Microsoft para o MS Access é o de que estamos ali para implementarmos aplicações funcionais com aderência
     aos respectivos modelos de negócio que estamos desenvolvendo, fazendo um design de formulário simples. E a equipe de Redmon imaginar
     presentear-nos com duas grandes coisas: 1) Consistência e 2) Interface intuitiva.

 5 - O recurso built-in foi estendido para a busca e a filtragem.

     O MS Access fornece uma visão de lista, que sempre mostra a caixa de pesquisa com uma lista de registros. Não há 
     necessidade de código para obtê-lo, e os usuários podem simplesmente clicar em um registro para ver os seus
     respectivos detalhes.

     Em vez de adicionarmos um formulário de pesquisa e codificá-lo para fazê-lo funcionar, este é construído automática
     e gratuitamente.

 6 - Navegação built-in. Foco no processo, ao invés de nos mecanismos de obtenção.

     Quando adicionamos uma tabela, uma nova guia aparece na página principal e pode, opcionalmente ser escondida.

     Além disso, quando um registro contiver um campo de pesquisa sobre ele, este poderá ser exibido como um link que
     poderá ser usado para abrir um formulário mostrando os detalhes desse registro relacionado. Este também está
     relacionado com os controles de itens que tornam o acesso fácil. Tudo isso sem nenhum código.

 7 - Interface de pesquisa melhorada - Facilidade para a construção de Chaves Estrangeiras.

     Nas versões anteriores, os campos de pesquisa exigiam 5 passos no assistente para configurarmos a pesquisa. Agora obtemos o
     mesmo num único passo, e a descrição tornou-se muito mais fácil de seguir para que uma pessoa que nunca tenha ouvido falar dos
     termos tais como "restrição de chave estrangeira", possam facilmente criar pesquisas. Evitando a digitação de dados errados.

 8 - Barra de Ação - Agora disponível como uma Barra personalizável.

     Muitas vezes, descobrimos que a Barra de Navegação nem sempre seria apropriada - por vezes, acabamos por ter de 
     fornecer a nossa própria Barra de Navegação apenas com o intuito de sermos capazes de escrevermos código para a
     verificação das condições em que a navegação no registro for realizada e cancelá-la se necessário. 

     Bem, as Barra de Ação estão agora totalmente programáveis, por isso temos muito mais controle sobre a verificação
     das condições, permitindo as ações sem termos que re-inventar a roda. Mais uma vez, uma grande economia de tempo
     para nós.

 9 - A janela de propriedades está como pop-up.

     Gosto muito do modo como as propriedades dos controles aparecem agora apenas quando precisamos delas como pop-ups.
     Não mais precisamos ficar caçando-as numa lista.

10 - Divulgação dos dados através da publicação no Office365 2013.

     Sim, a criação do nosso próprio servidor web não é uma tarefa trivial. Existem detalhes cansativos de serem implementados e
     ninguém quer fazer um investimento tão grande de tempo apenas para descobrir que exagerou ou fez tudo errado. Configurar 
     uma conta de assinatura é comparativamente muito menos arriscado em comparação com o grande esforço exigido na obtenção de 
     um aplicativo para execução web. Acredito, sim, ser uma grande melhoria.

E você, tem tido experiências com a versão do MS Access 2013? Se assim for, deixe-nos saber seus pensamentos nos comentários abaixo!


Tags: Access, Access 2013, features, características, 10 Pontos, JET, ACE, SQL, SQL Server, front-end, backend, web technology, SQL Server Reporting Services, SQL Azure, ODBC, ODC,  Web Access Service



VBA Access - Erro 3052

Inline image 1
Vez por outra somos surpreendidos por alguns erros nas nossas aplicações MS Access, e em alguns momentos sequer fazemos ideia do que estes sejam (vá se acostumando).

Um dos erros que nos surpreendem, pegando-nos desprevenidos, é o erro 3052 ele aparece quando o número de bloqueios de compartilhamento de arquivos foi excedido, o valor padrão é 9.500. Sem nos apercebermos disso, excedemos o número máximo de bloqueios permitidos em um recordset, este limite é especificado pela definição MaxLocksPerFile no Registro do sistema.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet
4.0\MaxLocksPerFile

Como eliminá-lo? Aumente a entrada de registro MaxLocksPerFile, o valor padrão pode ser alterado por meio da edição do Registro com Regedit.exe ou com o método SetOption.

Application.DBEngine.SetOption dbMaxLocksPerFile, <NumLocks>

Altere o <NumLocks> para 1.000.000 ou algo maior do que 10.000 (um milhão poupará você de aplicar esse truque mais vezes) e o erro irá embora. Certifique-se de colocar a linha acima na sua subroutina, e evoque-a a partir do seu FORM principal.

Outros fatores que podem fazer o seu aplicativo atingir este limite são:

* quantidade de memória disponível
* tamanho das linhas no recordset
* restrições no sistema operacional da rede 


Mais detalhes
Inicializando o driver de mecanismo de banco de dados do Microsoft Jet 3.5
Personalizando configurações do Registro do Windows para Microsoft Jet


Pois é, desse erro você já se livrou . . . Mas . . . outros virão...


Tags: VBA, Access, error, erro, err, run-time, 3052, Jet 3.5, Jet, registry, registro

VBA Access - Exportando registros para PARADOX - VBA Code to Import Paradox Table into Access

Teaching_Training_Header.jpg


Exportando registros a partir de uma query do MS Office Access para o banco de dados Paradox. Como posso fazê-lo?

Geralmente utilizo um query com dados a partir do MS Office Excel (*.xls), mas hoje quero enviar dados de planilhas que conectei ao MS Office Access.

Let ReportName = "qrySample"
Let ReportFilter = "RecordID = 1"
Let ExcelPath = "/Bernardes/" & Session.SessionID & ".xls"

Set MSAccess = Server.CreateObject("Access.Application")

MSAccess.OpenCurrentDatabase Application("DB")

MSAccess.DoCmd.SetWarnings False
MSAccess.DoCmd.OpenReport ReportName, 2, , ReportFilter
MSAccess.DoCmd.OutputTo 3, ReportName, "MicrosoftExcel(*.xls)", Server.MapPath(ExcelPath), False
MSAccess.DoCmd.Close 3, ReportName, 2
MSAccess.DoCmd.SetWarnings True

MSAccess.CloseCurrentDatabase

MSAccess.Quit 2

Set MSAccess = Nothing

Bem, uma breve recapitulação de alguma teoria neste ponto seria útil:

O Microsoft Jet e os Tipos de Dados
O Jet suporta uma grande quantidade de diferentes tipos de dados, garantindo total compatibilidade tanto com o Microsoft Access quanto com os tipos de dados definidos pelo padrão ANSI da SQL. A figura abaixo ilustra os tipos de dados disponíveis no mecanismo Jet e no padrão SQL associado, além de sua compatibilidade com os diversos tipos de dados do VB.

FIG14_0.GIF

Modos de Interação da Aplicação com o Microsoft Jet Engine
O Visual Basic oferece duas formas de comunicação entre aplicações e o mecanismo Jet: o controle Data e os objetos de acesso a dados (DAO).

O controle Data faz parte da caixa de ferramentas padrão e pode ser inserido em formulários como qualquer outro controle. Seu papel é fazer intermediação entre a aplicação e um banco de dados de modo a automatizar tarefas comuns como inclusões, alterações, exclusões e navegação em meio à massa de registros.

Enquanto o controle Data lhe dá poder para acessar bancos de dados existentes com pouca programação, o modelo DAO é uma completa interface de programação que lhe dá total controle sobre o banco de dados. Esses dois recursos, porém, não são mutuamente exclusivos, podendo em muitas ocasiões até mesmo ser desejável combiná-los. Trataremos de início dos objetos de acesso a dados por ser um estudo que nos dará elementos para compreender melhor o uso do controle Data.

Biblioteca de Objetos de Acesso a Dados (DAO)
Um dos mais importantes recursos do Visual Basic é a sua biblioteca de objetos de acesso a dados ou DAO (Data Access Objects). São objetos que você pode criar em tempo de execução para acessar dados tanto em arquivos de banco de dados do Access - o banco de dados nativo do Visual Basic - como em outros tipos de banco de dados locais como dBase, Paradox e também acessar dados em bancos de dados cliente-servidor como o Microsoft SQL Server usando a tecnologia ODBC.

Os objetos de acesso a dados estão organizados numa hierarquia, na qual muitos objetos pertencem a coleções de objetos, que também, por sua vez, pertencem a outros objetos que lhes estão acima na ordem hierárquica. A completa hierarquia da DAO está ilustrada abaixo.

FIG14_1.GIF

Estamos usando a palavra objeto para nos referirmos aos data access objects, mas na verdade não são objetos e sim de classes. Do mesmo modo como você cria instâncias de suas próprias classes, você o faz com os objetos de acesso a dados. Veremos isso nos exemplos. Antes faremos uma breve introdução aos objetos da DAO.

O Objeto DBEngine
No topo da hierarquia da DAO está o objeto DBEngine e corresponde ao dispositivo Microsoft Jet de acesso a dados. O objeto DBEngine é usado para ajustar os parâmetros do sistema de banco de dados utilizado pelo VB e para definir a área de trabalho default. O DBEngine é o único objeto que você não pode instanciar. Ele é criado automaticamente quando sua aplicação faz a primeira referência a um objeto da DAO.

O Objeto Workspace
Logo abaixo do objeto DBEngine, na hierarquia da DAO, está o objeto Workspace (área de trabalho). Esse objeto é utilizado para criar e identificar uma sessão de trabalho para um usuário. Ele contém os bancos de dados abertos e provê controle sobre transações simultâneas e segurança de acesso.

Um objeto Workspace default - Workspace(0) - é criado automaticamente na primeira referência a um objeto DAO pela aplicação. Ele pode ser inicializado com um Username (nome de usuário) e com uma Password (senha). Ao contrário de outros objetos Workspace, a área de trabalho default está sempre disponível, não podendo ser fechada nem removida da coleção Workspaces.

Objeto Database
O objeto Database representa um banco de dados, nativo do Jet ou não. É utilizado para definir as tabelas do banco de dados, relacionamentos entre tabelas, consultas armazenadas, além de permitir a abertura de objetos Recordset - que veremos mais adiante.

Objeto TableDef
O objeto TableDef corresponde a uma definição de tabela armazenada. Cada TableDef da coleção TableDefs representa a definição de uma tabela no banco de dados corrente, ou uma tabela externa anexada à base de dados. Neste último caso o objeto TableDef não pode ter seus atributos alterados.

Objeto QueryDef
O objeto QueryDef representa uma consulta escrita em linguagem SQL armazenada no banco de dados. Uma consulta armazenada é um comando SQL pré-compilado. É possível ler e modificar o código SQL de um objeto QueryDef, ajustar seus parâmetros e, então , executar a consulta.

Objeto Recordset
O objeto Recordset corresponde a uma visão ponteirada de uma tabela ou do conjunto de registros resultantes de uma consulta a uma ou mais tabelas. Uma visão ponteirada é o armazenamento de registros numa área de memória (buffer), apontando para um registro de cada vez, chamado registro corrente. O ponteiro (registro corrente) pode ser reposicionado em qualquer registro utilizando-se os métodos move, seek ou find. Ele permite a navegação, atualização e remoção das tabelas subjacentes ao recordset. Como a visão dos dados de um banco, o Recordset não contém ele mesmo os dados: apenas aponta para eles. Nesse sentido não é armazenado no banco, tendo utilização temporária. Quando um recordset é fechado, ele é removido da coleção Recordsets e todos os recursos associados são removidos da memória.

É possível a criação de três tipos de recordsets:

Tipo tabela: Um recordset tipo tabela corresponde a uma tabela do banco de dados. Quando um recordset desse tipo é aberto, o programador passa a ter acesso à tabela subjacente.

Tipo dynaset: Um recordset do tipo dynaset corresponde a uma tabela "virtual" resultante de uma consulta feita a uma ou mais tabelas. Ao ser atualizada, todas as alterações feitas no objeto se refletem imediatamente nas tabelas subjacentes.

Tipo snapshot: Um recordset do tipo snapshot é um conjunto estático de dados, similar ao dynaset porém não admite atualização. Outra diferença é que os snapshots têm o conjunto de registros carregado na memória. Se de um lado isso os torna mais rápidos, por outro cria o problema de haver conflitos com limitações de memória. Ajustam-se melhor para pequenas quantidades de registros que não precisam ser editados.

Objeto Field
O objeto Field corresponde a uma coluna de dados contendo um tipo de dado comum e um conjunto de atributos. É apenas um campo do banco de dados. Nesse sentido, os objetos TableDef, QueryDef, Recordset, e Index possuem coleções Fields. A coleção de objetos Field associada ao ponteiro de um recordset descreve um registro. Os dados do recordset são lidos e atualizados através da propriedade Value do objeto Field. Quando o ponteiro do recordset é movido e passa a apontar para um novo registro, todos os objetos Field da coleção Fields são automaticamente atualizados.

Objeto Index
O objeto Index representa um índice associado a um objeto TableDef ou Recordset, sempre do tipo tabela. O Índice corrente pode ser especificado num recordset tabela atribuindo-se um dos índices da coleção Indexes à sua propriedade Index. A atribuição da propriedade Index permite reordenar rapidamente os registros de uma tabela.

Objeto Parameter
O objeto Parameter representa um parâmetro de consulta armazenada no banco de dados. A coleção Parameters dos objetos QueryDef e Recordset permite ao programador acessar as informações contidas no parâmetro da consulta .

Um modo mais fácil de se importar, é por abrir o MS Office Access, escolher a opção importar e depois escolher o tipo de arquivo Paradox.

MS Office Access Jet, através do MS Office Access, usando DAO / RDO / ADO), permite a abertura, manipulação, vinculação, e importação dos dados do Paradox. Caso a versão do Paradox seja superior a 5.0, poderá requer o BDE instalado. Nas versões anteriores funciona com ISAM nativo do Jet, não sendo necessário instalar a BDE.

Conexões strings ADO

Abaixo disponibilizarei exemplo de strings de conexão ADO que poderá usar ao se conectar a alguns dos tipos mais comuns de banco de dados.

Conectar qualquer fonte de dados usando um DSN ODBC (Data Source Name):

Você deve primeiro criar o DSN, isso pode ser feito usando o "ODBC Data Source Administrator" que se encontra no Painel de Controles ou nas Ferramentas Administrativas do seu computador.

Certifique-se de criar um DSN SYSTEM (não um DSN USER) ao criar uma solução ASP.

cn.Open "DSN=SystemDataSourceName;" & "Uid=userid;Pwd=userpassword"

PARADOX

Conectando o banco de dados Paradox via ODBC:

cn.Open "driver={Microsoft Paradox Driver (*.db )};" & 
"driverid=538;fil=Paradox 5.X;" & "defaultdir=c:\foldername\;" & "dbq=c:\foldername\;collatingsequence=ASCII"

O espaço extra após os caracteres *.db é necessário.
Para atualizar os dados no Paradox ISAM será necessário o BDE (Borland Database Engine).

Já que vamos aprender a conectar o Paradox, podíamos aprender a fazer conexão a outras bases de dados, que tal?

Microsoft Office ACCESS

Conectando uma base de dados Access usando o padrão de segurança (standard security) OLEDB:

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\foldername\databasename.mdb;" & "User Id=admin;Password="

Conectando uma base de dados Access usando o padrão de segurança (standard security) ODBC:

cn.Open "driver={Microsoft Access Driver (*.mdb)};" & "dbq=c:\foldername\databasename.mdb;uid=admin;pwd="

Conectando uma base de dados Access usando um banco de dados do sistema de grupo de trabalho (workgroup system database) OLEDDB:

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & 
"Data Source=c:\foldername\databasename.mdb;" & 
"Jet OLEDB:System Database=c:\foldername\systemdatabasename.mdw", 
"userid", "userpassword"

Conectando uma base de dados Access usando um banco de dados do sistema de grupo de trabalho (workgroup system database) ODBC:

cn.Open "driver={Microsoft Access Driver (*.mdb)};" & "dbq=c:\foldername\databasename.mdb;" & "systemdb=c:\foldername\systemdatabasename.mdw;", "userid", "userpassword"

MS SQL

Conectando um servidor MS SQL usando o padrão de segurança (standard security) OLEDB:

cn.Open "Provider=sqloledb;" & 
"Data Source=servername;" & 
"Initial Catalog=databasename;" & 
"User Id=userid;Password=userpassword"

Conectando um servidor MS SQL usando o padrão de segurança (standard security) ODBC:

cn.Open "driver={SQL Server};" & "server=servername;database=databasename;" & "uid=userid;pwd=userpassword"

Oracle

Conectar a um banco de dados Oracleusando o provedor OLEDB Microsoft corrente:

cn.Open "Provider=msdaora;" & "Data Source=servername.world;" & "User Id=userid;Password=userpassword"

Conectar a um banco de dados Oracleusando o provedor OLEDB Oracle corrente:

cn.Open "Provider=OraOLEDB.Oracle;" & "Data Source=servername.world;" & "User Id=userid;Password=userpassword"

Conectar a um banco de dados Oracleusando o driver ODBC Microsoft corrente:

cn.Open "driver={Microsoft ODBC for Oracle};" & "server=servername.world;" & "uid=userid;pwd=userpassword"

Conectar a um banco de dados Oracleusando o driver ODBC Oracle corrente:

cn.Open "driver={Oracle ODBC Driver};" & "dbq=databasename;" & "uid=userid;pwd=userpassword"

Lembre-se: É necessário definir o nome do banco de dados (databasename DBQ) no arquivo tnsnames.ora.

Sybase

Conectando um banco de dados Sybase ASE utilizando um provedor OLEDB:

cn.Open "Provider=Sybase.ASEOLEDBProvider;" & Srvr=servername,5000;" & "Catalog=databasename;" & "User Id=userid;Password=userpassword"

Conectando um banco de dados Sybase utilizando o driver ODBC Sybase System 12:

 cn.Open "driver={SYBASE ASE ODBC Driver};" & 
"srvr=servername;" & 
"uid=userid;pwd=userpassword"

Conectando um banco de dados Sybase utilizando o driver ODBC Sybase System 11:

cn.Open "driver={SYBASE SYSTEM 11};" & 
"srvr=servername;" & 
"uid=userid;pwd=userpassword"

My SQL

Conectando o servidor OLEDB MySQL:

cn.Open "Provider=MySQLProv;" & "Data Source=MYSQLDB;" & "User Id=userid;Password=userpassword" 

MS Excel

Conectando via OLEDB numa planilha Excel:

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & 
"Data Source=c:\foldername\workbookname.xls;" & 
"Extended Properties=""Excel 8.0;HDR=Yes"""

Use "Excel 8.0" para planilhas criadas na versão Excel 97 ou posterior.

Use "Excel 5.0"  para planilhas criadas na versão Excel 5 ou 95.

Use "HDR=Yes" se o data source tiver uma linha de cabeçalho ou um range nomeado.

Se "HDR=No" o recordset retornará conteúdo na primeira linha.

cn.Open "driver={Microsoft Excel Driver (*.xls)};" & 
"driverid=790;dbq=c:\bernardes\Dashboard_Source.xls;" & "
defaultdir=c:\foldername"

DBASE

Conectando o banco de dados dBase via ODBC:

cn.Open "driver={Microsoft dBase Driver (*.dbf)};" & 
"driverid=277;dbq=c:\bernardes"

 
Especifique o nome do arquivo quando você abrir o recordset
rs.Open "select * from tablename.dbf", cn, , , adCmdText

Você precisará do BDE (Borland Database Engine) para atualizar os arquivos DBASE.

ARQUIVO TEXTO

Conectando um arquivo texto via OLEDB:

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
    "Data Source=c:\foldername\;" & _ 
    "Extended Properties=""text;HDR=Yes;FMT=Delimited"""
    rs.Open "select * from filename.csv", cn, adOpenStatic, adLockReadOnly, adCmdText

Conectando um arquivo texto via ODBC:

cn.Open "driver={Microsoft Text Driver (*.txt; *.csv)};" & _
    "dbq=c:\foldername\;" & _
    "extensions=asc,csv,tab,txt,log,*."
  rs.Open "select * from filename.csv", cn, adOpenStatic, adLockReadOnly, adCmdText

Schema.ini

O formato do arquivo de texto é determinada usando um arquivo de informações de esquema (schema information file). O arquivo de informações sobre o esquema, que é sempre chamado Schema.ini e sempre mantido na mesma pasta da fonte de dados de texto, fornece informações sobre o formato geral do arquivo, o nome da coluna e informações sobre o tipo de dados, além de uma série de outras características de dados.

Um arquivo Schema.ini é sempre necessária para acessar os dados de largura fixa.
Você deve usar um arquivo Schema.ini quando a tabela contém valor de Moeda, DateTime, Decimal ou dados, ou quando você quiser mais controle sobre a manipulação dos dados na tabela.

O exemplo de arquivo Schema.ini abaixo é um arquivo chamado filename.txt cujos os dados estão delimitados por tabulação, e os nomes das colunas estão na primeira linha:

[filename.txt]
Format=TabDelimited
ColNameHeader=True
MaxScanRows=0
CharacterSet=ANSI

O exemplo de arquivo Schema.ini abaixo é um arquivo chamado filename.txt cujos os dados estão delimitados por ponto-e-vírgula, e os nomes das colunas estão na primeira linha:

[filename.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=0
CharacterSet=ANSI

O exemplo de arquivo Schema.ini abaixo é um arquivo chamado filename.txt cujos os dados têm largura fixa, e os nomes das colunas estão na primeira linha:

[filename.txt]
Format=FixedLength
ColNameHeader=False
Col1=FieldName1 Char Width 30
Col2=FieldName2 Date Width 15
Col3=FieldName3 Integer Width 15
Col4=FieldName4 Float Width 20
CharacterSet=ANSI


Referência: Erlandsen

TagsMicrosoft Office Access, Access, connecting, conect, DAO, ADO, RDO, ISAM, Jet, BDE, ODBC, DSN, Data Source Name, DSN ODBC, DSN USER, OLEDB, MS SQL, Oracle, Paradox, My SQL, DBASE, schema, .ini

André Luiz Bernardes
A&A® - Work smart, not hard.


diHITT - Notícias