Paramètres de chaîne de connexion pour Schema.ini
Faire un schema.ini
pour ouvrir ou lier des fichiers texte à partir d'Access est l'une des deux méthodes possibles qui peuvent être utilisées pour travailler avec des données contenues dans les fichiers à partir d'Access. Dans l'article précédent, nous avons examiné les paramètres de chaîne de connexion du fichier texte. Nous avons également discuté de la nécessité de disposer d'informations de schéma supplémentaires pour aider Access à analyser les fichiers texte. Microsoft a une page sur le schema.ini
, mais il y a peu de choses qui ne sont pas immédiatement claires, nous allons donc en parler ici.
schema.ini
fichier
Chaque dossier peut avoir un seul fichier nommé schema.ini
où nous pouvons définir tous les formats possibles de fichiers texte que nous espérons trouver dans le dossier. Pour chaque fichier texte, nous devons commencer une section avec le nom du fichier, puis décrire la structure. Nous commencerons par une section d'échantillon minimale, puis analyserons chaque partie. Il n'est pas nécessaire d'énumérer tous les fichiers texte. Tous les fichiers texte non décrits par le schema.ini
sera simplement géré en utilisant le paramètre par défaut pour le meilleur ou pour le pire. Regardons la structure du schema.ini
.
[products.txt] Format=CSVDelimited ColNameHeader=True MaxScanRows=0 Col1=Products Text Col2=Count Long
Notez que la première ligne pour commencer une section doit faire référence à un fichier texte. Il doit également avoir des crochets pour indiquer un début de section. Comme vous le savez peut-être déjà, un schema.ini
peut décrire plusieurs fichiers texte, de sorte que la ligne entre crochets permet de séparer le schéma de chaque fichier texte.
L'ensemble de lignes suivant traite du format général du fichier et de la manière dont Access doit traiter les fichiers texte. Nous pouvons indiquer si un fichier texte a des en-têtes, combien de lignes analyser, quelle page de code utiliser, etc.
Le dernier ensemble de lignes décrit les colonnes individuelles, leur nom, leur type de données et leur largeur.
Nous examinerons les options valides et les valeurs possibles pour ces 2 ensembles.
Options pour décrire la structure globale du fichier texte
Vous verrez une liste d'options valides disponibles pour décrire le format général du fichier texte. Il est typique de spécifier au minimum le Format
et ColNameHeader
mais tous les contenus possibles sont facultatifs. Chaque fois qu'elles sont omises, les valeurs par défaut seront utilisées comme indiqué ci-dessous. Voyons comment nous pouvons décrire le format d'un fichier texte donné.
Options de structure globale
Comme indiqué, ceux-ci sont facultatifs mais rarement omis. Néanmoins, les valeurs par défaut proviennent des clés de registre du moteur de texte. Vous trouverez plus de détails sur les clés de registre ici.
Format
:Indique le format des fichiers texte. Si omis, utilise la clé de registre du moteur de texte,Format
. Les valeurs valides sont :TabDelimited
:Des tabulations délimitent les colonnes.CSVDelimited
:Des virgules délimitent les colonnes comme un fichier CSV.Delimited(*)
:Un seul caractère délimite les colonnes. Peut être n'importe quel caractère sauf"
personnage. Par exemple, un fichier texte délimité par|
le caractère doit indiquerFormat=Delimited(|)
.FixedLength
:Les colonnes sont de longueur fixe; le contenu doit être complété en conséquence. Toutes les colonnes doivent avoir une largeur définie.
CharacterSet
:Utilise une page de code spécifique pour lire le fichier texte. Les valeurs possibles peuvent êtreANSI
,OEM
,Unicode
ou toute valeur numérique représentant les pages de code souhaitées. Pour localiser toutes les pages de code possibles prises en charge sur votre machine Windows, recherchez dans la clé de registreComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. Par exemple, si vous souhaitez utiliser l'encodage utf-8, vous pouvez spécifierCharacterSet=65001
.ColNameHeader
:Indique si la première ligne contient les noms des colonnes. En cas d'omission, utilise la clé de registre du moteur de texte,FirstRowHasNames
. Les valeurs peuvent être soitTrue
ouFalse
.MaxScanRows
:Nombre de lignes Access doit analyser un fichier texte pour deviner le type de données possible. S'il est défini sur 0, Access analysera l'intégralité du fichier. La clé de registre du moteur de texteMaxScanRows
est utilisé lorsqu'il est omis.
Options de localisation
Ces options concernent principalement la localisation des données encodées en dates, heures ou devises. Toutes ces options sont facultatives et chaque fois qu'elles sont omises, les paramètres régionaux de Windows sont utilisés.
DateTimeFormat
:Le format de date/heure à utiliser.DecimalSymbol
:Tout caractère unique utilisé comme séparateur entre les parties entières et fractionnaires d'un nombre.NumberDigits
:Nombre de chiffres utilisés dans la partie fractionnaire d'un nombre.NumberLeadingZeroes
:Indique s'il doit y avoir un zéro non significatif pour les nombres supérieurs à -1 et inférieurs à 1. Doit être soitTrue
ouFalse
.CurrencySymbol
:Identifie le symbole à interpréter comme une devise.CurrencyPosFormat
:Décrit comment les montants monétaires doivent être déclarés dans le fichier texte. Il y a quatre valeurs valides à utiliser pour ce paramètre représenté par les nombres 0 à 3. Notez que l'exemple utilise$
mais en utilisation réelle, il utilisera le symbole monétaire réel défini parCurrencySymbol
ou par les paramètres de Windows.0
:Préfixe sans espace (par exemple $1)1
:Suffixe sans espace (1$)
2
:Préfixe avec un espace entre ($ 1)3
:Suffixe avec un espace entre (1 $)
CurrencyDigits
:Nombre de chiffres dans la partie fractionnaire d'un montant en devise.CurrencyNegFormat
:Indique le formatage d'un montant en devise négatif. Il s'agit d'une valeur comprise entre 0 et 15, comme indiqué ci-dessous. Notez que l'exemple utilise$
mais en utilisation réelle, il utilisera le symbole monétaire réel défini parCurrencySymbol
ou par les paramètres de Windows.0
:(1 $)1
:-$12
:$-13
:1 $-
4
:(1$)5
:-$16
:1-$7
:1$-
8
:-1 $9
:-$ 110
:1 $-11
:$ 1-
12
:$ -113
:1- $14
:(1 $)15
:(1 $)
CurrencyThousandSymbol
:Un seul caractère pour indiquer la séparation des milliers dans un montant en devise. S'il est omis, le paramètre de Windows est utilisé.CurrencyDecimalSymbol
:Un seul caractère pour indiquer la décimale d'un montant en devise.
Options de définition de colonne
Nous avons vu comment nous pouvons gérer le format général du fichier, mais nous devons donner plus d'informations sur la colonne individuelle. Plus important encore, nous devons être en mesure de mapper les types de données attendus des colonnes. Par conséquent, la troisième section du schema.ini
doit décrire chaque colonne, avec autant de lignes qu'il y a de colonnes dans le fichier texte cible. Le format général de la définition de colonne peut ressembler à ceci :
ColN=Name Type Width #
Il est important de noter qu'à l'exception du préfixe ColN=
, toutes les parties sont facultatives, mais si vous pouvez les omettre, cela dépendra d'autres facteurs, comme indiqué ci-dessous.
ColN=
:Un préfixe obligatoire qui doit figurer à chaque début de ligne. LeN
doit être un nombre commençant à 1 et croissant.Name
:Donne le nom à une colonne. Si leColNameHeader
est défini surTrue
, leName
paramètre peut être omis. Cependant, si c'estFalse
, alors vous devez spécifier leName
pour éviter les erreurs.Type
:Indique le type de données. Si omis, Access utilisera sa meilleure estimation basée sur les lignes analysées, régies par leMaxScanRows
option. Letype
doit être défini sur l'une de ces valeurs valides. Les synonymes sont listés après le mot clé canonique :Bit
,Boolean
Byte
Short
,Integer
Long
Currency
Single
Double
,Float
DateTime
Text
,Char
Memo
,LongChar
Date
Width #
:Indique la largeur de la colonne. Si cela est spécifié, le littéralWidth
doit être inclus et ensuite suivi d'un nombre. Si vous souhaitez indiquer qu'une colonne a une largeur de 50 caractères, vous devez écrire :
Col17=ProductDescription Text Width 50
Pour les fichiers à largeur fixe, laWidth
est obligatoire. Avec les fichiers délimités, vous pouvez l'omettre. Toutefois, Access utilisera ces informations pour les champs de texte afin de limiter la longueur et éventuellement de tronquer le contenu. Pour les autres types de données, la largeur n'a aucun effet.
Conclusion
Vous avez vu comment contrôler le schéma d'un fichier texte à l'aide d'un schema.ini
que vous pouvez créer dans un dossier où résident les fichiers texte. Vous pouvez également voir que le schema.ini
vous donne un contrôle plus précis sur les paramètres régionaux, ce qui peut être utile si vous traitez des données internationales et que vous ne pouvez pas contrôler la mise en forme de la devise ou de la date. Dans le prochain article, vous examinerez la méthode alternative de description de la structure du fichier texte à l'aide des tables système d'Access.