Verbindingsreeksparameters voor Schema.ini
Een schema.ini
maken tekstbestanden openen of koppelen vanuit Access is een van de twee mogelijke methoden die kunnen worden gebruikt om te werken met gegevens in de bestanden van Access. In het vorige artikel hebben we gekeken naar de verbindingsreeksparameters van het tekstbestand. We bespraken ook de noodzaak om aanvullende schema-informatie te hebben om Access te helpen bij het ontleden van de tekstbestanden. Microsoft heeft een pagina over de schema.ini
, maar er zijn een paar dingen die niet meteen duidelijk zijn, dus we zullen het hier bespreken.
schema.ini
bestand
Elke map kan een enkel bestand hebben met de naam schema.ini
voor waar we alle mogelijke formaten van tekstbestanden kunnen definiëren die we in de map verwachten te vinden. Voor elk tekstbestand moeten we een sectie beginnen met de bestandsnaam en vervolgens de structuur beschrijven. We beginnen met een minimale steekproefsectie en analyseren vervolgens elk onderdeel. Het is niet nodig om alle tekstbestanden op te sommen. Alle tekstbestanden die niet worden beschreven door de schema.ini
zal eenvoudig worden afgehandeld met behulp van de standaardinstelling voor beter of slechter. Laten we eens kijken naar de structuur van de schema.ini
.
[products.txt] Format=CSVDelimited ColNameHeader=True MaxScanRows=0 Col1=Products Text Col2=Count Long
Merk op dat de eerste regel om een sectie te starten moet verwijzen naar een tekstbestand. Het moet ook haakjes hebben om het begin van een sectie aan te geven. Zoals je misschien al weet, een schema.ini
kan meer dan één tekstbestand beschrijven, dus de regel tussen haakjes helpt het schema van elk tekstbestand gescheiden te houden.
De volgende reeks regels gaat over de algemene indeling van het bestand en hoe Access de tekstbestanden moet verwerken. We kunnen aangeven of een tekstbestand kopteksten heeft, hoeveel rijen moeten worden gescand, welke codepagina moet worden gebruikt, enzovoort.
De laatste reeks regels beschrijft de afzonderlijke kolommen, hun naam, gegevenstype en breedte.
We zullen de geldige opties en mogelijke waarden voor die 2 sets bekijken.
Opties voor het beschrijven van de algemene structuur van het tekstbestand
U ziet een lijst met geldige beschikbare opties om de algemene indeling van het tekstbestand te beschrijven. Het is gebruikelijk om minimaal het Format
. te specificeren en ColNameHeader
maar alle mogelijke inhoud is optioneel. Wanneer ze worden weggelaten, worden de standaardwaarden gebruikt zoals hieronder aangegeven. Laten we eens kijken hoe we het formaat van een bepaald tekstbestand kunnen beschrijven.
Algemene structuuropties
Zoals opgemerkt, zijn deze optioneel, maar worden ze zelden weggelaten. Desalniettemin zijn de standaardwaarden afkomstig van de registersleutels van de tekstengine. Meer details over de registersleutels vindt u hier.
Format
:Geeft het formaat van de tekstbestanden aan. Indien weggelaten, gebruikt u de registersleutel Text engine,Format
. Geldige waarden zijn:TabDelimited
:Tabs scheiden de kolommen.CSVDelimited
:komma's scheiden de kolommen als een CSV-bestand.Delimited(*)
:Een enkel teken begrenst de kolommen. Kan elk teken zijn, behalve de"
karakter. Bijvoorbeeld een tekstbestand gescheiden door|
karakter zouFormat=Delimited(|)
. moeten rapporteren .FixedLength
:De kolommen hebben een vaste lengte; de inhoud moet dienovereenkomstig worden opgevuld. Alle kolommen moeten een gedefinieerde breedte hebben.
CharacterSet
:gebruikt een specifieke codetabel om het tekstbestand te lezen. Mogelijke waarden kunnen zijnANSI
,OEM
,Unicode
of numerieke waarden die de gewenste codetabellen vertegenwoordigen. Om alle mogelijke codetabellen te vinden die op uw Windows-computer worden ondersteund, kijkt u in de registersleutelComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. Als u bijvoorbeeld utf-8-codering wilt gebruiken, kunt uCharacterSet=65001
opgeven .ColNameHeader
:Geeft aan of de eerste regel de kolomnamen bevat. Gebruikt, indien weggelaten, de registersleutel van de tekstengine,FirstRowHasNames
. Waarden kunnen ofwelTrue
. zijn ofFalse
.MaxScanRows
:Aantal rijen Access moet een tekstbestand scannen om het mogelijke gegevenstype te raden. Indien ingesteld op 0, scant Access het hele bestand. De registersleutel van de tekstengineMaxScanRows
wordt gebruikt als het wordt weggelaten.
Lokalisatie-opties
Die opties hebben voornamelijk betrekking op het lokaliseren van de gegevens die zijn gecodeerd in datums, tijden of valuta. Al deze opties zijn optioneel en wanneer ze worden weggelaten, worden de regio-instellingen van Windows gebruikt.
DateTimeFormat
:Het te gebruiken datum-/tijdformaat.DecimalSymbol
:elk afzonderlijk teken dat wordt gebruikt als scheidingsteken tussen integrale en fractionele delen van een getal.NumberDigits
:Aantal cijfers dat wordt gebruikt in het breukgedeelte van een getal.NumberLeadingZeroes
:Geeft aan of er een voorloopnul moet zijn voor getallen groter dan -1 en kleiner dan 1. Moet ofwelTrue
zijn ofFalse
.CurrencySymbol
:Identificeert het symbool dat moet worden geïnterpreteerd als een valuta.CurrencyPosFormat
:Beschrijft hoe geldbedragen in het tekstbestand moeten worden gerapporteerd. Er zijn vier geldige waarden om te gebruiken voor deze instelling, weergegeven door nummer 0 tot 3. Merk op dat in het voorbeeld$
wordt gebruikt. maar bij daadwerkelijk gebruik zal het het daadwerkelijke valutasymbool gebruiken dat is gedefinieerd doorCurrencySymbol
of door de instelling van Windows.0
:Prefix zonder spatie (bijv. $1)1
:Achtervoegsel zonder spatie (1$)
2
:Prefix met een spatie ertussen ($ 1)3
:Achtervoegsel met een spatie ertussen (1 $)
CurrencyDigits
:Aantal cijfers in fractionele delen van een valutabedrag.CurrencyNegFormat
:Geeft de opmaak aan van een negatief valutabedrag. Het is een waarde tussen 0-15, zoals hieronder weergegeven. Merk op dat het voorbeeld$
. gebruikt maar bij daadwerkelijk gebruik zal het het daadwerkelijke valutasymbool gebruiken dat is gedefinieerd doorCurrencySymbol
of door de instelling van 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
:Een enkel teken om het scheiden van duizendtallen in een valutabedrag aan te geven. Indien weggelaten, wordt de Windows-instelling gebruikt.CurrencyDecimalSymbol
:Een enkel teken om het decimaalteken van een valutabedrag aan te geven.
Opties voor kolomdefinitie
We hebben gezien hoe we kunnen omgaan met het algemene formaat van het bestand, maar we moeten meer informatie geven over de individuele kolom. Wat nog belangrijker is, we moeten in staat zijn om de verwachte gegevenstypes van kolommen in kaart te brengen. Ergo, het derde deel van de schema.ini
moet elke kolom beschrijven, met net zoveel rijen als er kolommen zijn in het doeltekstbestand. Het algemene formaat voor de kolomdefinitie kan er als volgt uitzien:
ColN=Name Type Width #
Het is belangrijk op te merken dat behalve het voorvoegsel ColN=
, alle onderdelen zijn optioneel, maar of u deze kunt weglaten, hangt af van andere factoren, zoals hieronder besproken.
ColN=
:Een verplicht voorvoegsel dat op elk begin van de regel moet staan. DeN
moet een getal zijn dat begint bij 1 en oploopt.Name
:Geeft een kolom de naam. Als deColNameHeader
is ingesteld opTrue
, deName
parameter kan worden weggelaten. Als het echterFalse
. is , dan moet u deName
. opgeven om fouten te voorkomen.Type
:Geeft het gegevenstype aan. Indien weggelaten, gebruikt Access de beste schatting op basis van de gescande rijen, geregeld door deMaxScanRows
optie. Hettype
moet worden ingesteld op een van die geldige waarden. Synoniemen worden vermeld na het canonieke trefwoord:Bit
,Boolean
Byte
Short
,Integer
Long
Currency
Single
Double
,Float
DateTime
Text
,Char
Memo
,LongChar
Date
Width #
:Geeft de breedte van de kolom aan. Als dit is opgegeven, wordt de letterlijkeWidth
moet worden opgenomen en gevolgd door een nummer. Als u wilt aangeven dat een kolom 50 tekens breed is, schrijft u:
Col17=ProductDescription Text Width 50
Voor bestanden met een vaste breedte is deWidth
is verplicht. Met gescheiden bestanden kunt u het weglaten. Access gebruikt deze informatie echter voor tekstvelden om de lengte te beperken en mogelijk de inhoud af te kappen. Voor andere gegevenstypen heeft de breedte geen effect.
Conclusie
Je hebt gezien hoe je het schema van een tekstbestand kunt beheren met een schema.ini
die u kunt maken in een map waar de tekstbestand(en) zich bevinden. Je kunt ook zien dat de schema.ini
geeft u meer gedetailleerde controle over regionale instellingen, wat handig kan zijn als u te maken heeft met internationale gegevens en u geen controle heeft over de valuta- of datumnotatie. In het volgende artikel zul je kijken naar de alternatieve methode om de structuur van het tekstbestand te beschrijven met behulp van de systeemtabellen van Access.