Koppeling met Excel werkblad aanpassen

Status
Niet open voor verdere reacties.

jbusser

Gebruiker
Lid geworden
23 feb 2007
Berichten
184
Ik heb het volgende probleem.
Ik moet een met een excel-bestand gekoppelde tabel maken, dit werkt behoorlijk automatisch maar ik ondervind twee problemen.
Volgens mij "kijkt" Access maar naar een bepaald aantal eerste records om vast te stellen wat voor 'n veldtype de excel-kolom is.
Gevolg in ieder geval is dit:
De eerste meldingnummers uit het rekenblad zijn écht numeriek maar vanaf rij 300 of zo krijgen die een voorvoegsel M of W.
Aangezien Access betreffende veld numeriek gemaakt heeft kunnen die latere nummers niet worden weergegeven (#GETAL).
Tevens is er een tekstveld dat vaak niet erg groot is en dus als korte tekst wordt aangemaakt terwijl er een aantal stukken tekst zijn die (veel) langer zijn en dus niet volledig worden weergegeven omdat er maar 254 karakters in kunnen.
Omdat het een gekoppelde tabel is kunnen de veldtypes niet op de gebruikelijke wijze worden aangepast.
Kan ik dit oplossen?
Daar moet ik bij vermelden dat de kolommen in Excel niet kunnen worden gesorteerd (read only)
Importeren als nieuwe tabel kan ook niet daar de Excel dagelijks wordt aangepast de aanpassingen in Access zichtbaar moeten zijn.
 
Je aannames zijn correct; bij het koppelen van een Excel tabel wordt gekeken naar de data in de eerste # rijen van de te koppelen tabel. Is dat zoals bij jou Numeriek, dan krijg je een numeriek veld. En heb je verderop dus tekst, dan ben je de sjaak. Idem dito voor een tekstveld met korte en lange teksten. Maar dat laatste maakt voor Access eigenlijk niet eens iets uit, want ook een memo veld wordt 'ingekort' tot 255 tekens. Dus lange tekst of niet, dat maakt niet uit.

Er is wel een workaround voor te bedenken, maar dat heeft wat voeten in de aarde. Om te beginnen: je moet de complete Excel tabel éérst importeren in Access. Daarbij haal je namelijk wél de complete teksten binnen. Vervolgens kun je van die tabel de velden aanpassen naar het gewenste type, en dan heb je dus een momentopname van de tabel.

Vervolgens moet je de gegevens natuurlijk met enige regelmaat verversen, a.h.w. alsof je een koppeling hebt gemaakt met de brontabel. Dat kun je doen door bijvoorbeeld de tabel geautomatiseerd steeds opnieuw te importeren. Daarvoor zou je dan eerst van de structuur van de eerst gemaakte tabel een nieuwe tabel moeten maken (die ga je steeds opnieuw vullen) en dan een importscriptje gebruiken dat de koppeltabel leegmaakt, de Excel tabel importeert en de data ervan kopieert naar je koppeltabel.

Of deze structuur helemaal gaat werken is overigens nog de vraag, omdat je vermoedelijk nog steeds een probleem krijgt met de kolom(men) met beginnende numerieke waarden, waar ook alfanumerieke gegevens in staan. Maar ik denk dat je dat probleem wel met een importspecificatie kan oplossen.
Anders kan dat wel met een Recordset en VBA.
 
Dank je, Octafish,
Ik denk dat ik voor een pragmatischer oplossing ga (in ieder geval proberen).
Ik vraag degene die de Excels beheert om een "eerste dummy record" aan te maken mét een letter in het nu numerieke veld en een stuk tekst van >255 karakters in het vernoemde tekst-veld (die filter ik er dan in de access-formulieren wel weer uit!)
 
Dat zou ik inderdaad ook eerst geprobeerd hebben :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan