Access macro probleem

Status
Niet open voor verdere reacties.

ntertainme

Gebruiker
Lid geworden
5 mrt 2010
Berichten
8
Beste mensen,

ik heb het volgende probleem bij microsoft Access.
ik probeer een tekstbestand te importeren naar de database.
Nu lukt dit met externe gegevens > tekstbestand... blablabla

Ik wil dit echter geautomatiseerd laten verlopen dus heb een macro gemaakt.

Deze macro werkt perfect, maar zodra ik het specificatiebestand opgeef wat ik eerder heb opgeslagen, krijg ik een foutmelding. INVALID ARGUMENT

foutmelding.png


De volgende vragen komen bij me op:

- misschien komt het door de verwijzing naar het specificatiebestand?
- ik zie tevens een gele driehoek met zwart uitroepteken, een teken van ergens een fout... hoe krijg ik dit weg?
- wat doe ik verkeerd?
 
Het proces loopt goed met de importspecificatie als je het handmatig doet?
En wat gebeurt er als je in de macro geen importspecificatie opgeeft?
 
Re:

Inderdaad handmatig gaat het prima, zonder problemen.

Als ik de import specificatie weghaal uit de macro lukt het ook, alleen blijft de gele driehoek met uitroepteken bestaan.

Ik heb echter wel een importspecificatie nodig anders kan ik het bestand niet goed importeren. Kun je niet handmatig via VBA code bijvoorbeeld een opdracht geven compleet met importspecificaties en welke velden hij bv wel/niet moet importeren....?
Dank je voor je reactie.
 
Je kunt een import uitvoeren met een importspecificatie met VBA, geen probleem. Dan gebruik je het commando DoCmd.TransferText, met de juiste parameters, zoals importspecificatie en bestandsnaam.
Of die het wel gaat doen, blijft natuurlijk afwachten. Gebeurt er verder nog wat in de macro?
 
nee, zie het plaatje onder... kun je mij exact de syntax geven, ik heb het nog nooit gedaan......;) kun je alleen een importspecificatiebestand opgeven of daadwerkelijke parameters van een dergelijk bestand?
 
Ik zie geen plaatje...
Maar het commando ziet er ongeveer zo uit:

DoCmd.TransferText acImportDelim, Importwebsite , "Table1", "C:\aMacroTest\Website.csv", False

De laatste optie kan ook True zijn, als je veldnamen gebruikt.
 
heb het volgende commando ingevoerd (toegevoegd aan een knop)

Private Sub Knop331_Click()
DoCmd.TransferText acImportDelim, Importwebsite, "PI System database", "D:\Users\Ntertain-ME\Desktop\*** export fields\export.csv", True
End Sub


Nu krijg ik de volgende foutmelding:

Veld NoName bestaat niet in doeltabel PI System database, het veld kan niet worden toegevoegd.

ik denk dat de fout zit in de importspecificatie... maar weet het niet zeker.
Er bestaat namelijk helemaal geen veld met de naam NoName.
De importspecificatie heeft wel de juiste naam: Importwebsite.

Kun je niet handmatig een importspecificatie toevoegen aan het TrasferText commando? Waarbij je aangeeft welke velden hij moet overslaan, wat de delimiter is etc...
Snap er niets van... :confused:

Stap bij stap komen we er wel... hopelijk kan je me helpen.
 
Een importspecificatie kun je niet zelf opstellen, maar moet je via het menu doen. Bij het importeren moeten de velden ook exact overeenkomen met de specificatie, anders gaat het (zoals je al gemerkt hebt) goed fout... Een Workaround zou nog kunnen zijn dat je importeert zonder importspecificatie, en met een Toevoegquery de geïmporteerde records toevoegt aan de (bestaande) tabel die de juiste veldindeling heeft.
Maar misschien kun je van je importdata een testbestandje maken met wat dummygegevens, dan kan ik ook eens proberen of er een werkende importspecificatie van te maken is.
 
Michel,

Allereerst bedankt voor je hulp.
Ik heb een .txt bestand bijgevoegd als voorbeeld voor de importspecificatie.
Ben benieuwd of het jou wel lukt, anders is het wellicht een optie om met de queries te werken, alleen heb ik daar geen kaas van gegeten. Ik hoor het graag.
Groetjes Sander
 

Bijlagen

Hoi Sander,

Ik krijg het idee dat de importspecificatie niet identiek is aan de velden die je importeert. Dat verklaart dat het importeren wel lukt zonder specificatie, en dus niet mèt. Een importspecificatie gaat er van uit, dat je alle velden uit het csv bestand importeert, en ik krijg het idee dat je een selectie wilt importeren.
 
Ok duidelijk, ik wil inderdaad een selectie importeren in de tabel... enig suggestie wat ik dan kan doen? Met een voorbeeld misschien....? Kan ik een selectie bv met een query importeren.
 
Kom ik toch weer terug bij mijn 'workaround'... Oftewel: alles importeren uit het bronbestand, al dan niet met de importspecificatie om de velden gelijk de juiste instellingen mee te geven, en vervolgens met een Toevoegquery de waarden uit de importtabel toevoegen aan de hoofdtabel.
Zowiezo een procedure die mijn voorkeur zou hebben, omdat je dan een controleslag kunt doen over de gegevens die je in de hoofdtabel importeert.
 
Michel, ik snap wat je bedoeld, alleen weet ik niet waar ik moet beginnen als ik het proces geautomatiseerd wil laten verlopen.... graag hulp.
 
't Is feitelijk niet zo heel veel moeilijker... Je maakt dus eerst een importspecificatie aan op basis van het volledige te importeren tekstbestand. Dus ook voor de kolommen die je straks niet nodig hebt. Waar het om gaat, is dat de velden die je wèl gaat gebruiken, de goede opmaak krijgen bij het importeren. De rest laat je op tekst staan. Altijd goed!

Vervolgens maak je een Toevoegquery, waarbij je de nieuwe records vult met de juiste velden uit de importtabel. Eventueel met een check op de records, om te kijken of je ze niet dubbel importeert. Als ik zo in je gegevensvoorbeeldje kijk, is dat trouwens best lastig, omdat ik er niet zomaar één veld uit kan halen dat uniek is. Je zult dus op basis van meer velden moeten controleren. Maar die stap is niet nodig, hooguit wenselijk.

De laatste stap is dan dat je alle processen opneemt in een macro. Dus je laat de macro eerst de import doen, en vervolgens de Toevoegquery uitvoeren.
Dat zou dan moeten werken!
 
Bedankt!

Michel,

het is eventjes geleden maar vandaag heb ik alles gedaan zoals je in bovenstaande stappen beschrijft. Het werkt! Ik wil je vriendelijk bedanken voor je hulp.
Wellicht tot een volgende keer.

Groetjes Sander
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan