DoCmd geeft F1

Status
Niet open voor verdere reacties.

mK220856

Gebruiker
Lid geworden
7 okt 2022
Berichten
19
Bij het uitvoeren van:

Code:
Dim MijnBestand As String

With Application.FileDialog(3)
    .Title = "Bestand selecteren"
    .InitialFileName = "C:"
    .Filters.Clear
    .Filters.Add "CSV-bestanden", "*.CSV"
    .AllowMultiSelect = False
    If .Show <> 0 Then
        MijnBestand = .SelectedItems.Item(1)
    MsgBox MijnBestand
    Else
        Exit Sub
    End If
End With

DoCmd.TransferText acImportDelim, , _
    "tblLeads_Boekhouders", MijnBestand

krijg ik de melding dat het veld F1 ontbreekt in de doeltabel en niet kan worden toegevoegd.
Ik heb dezelfde table als input gebruikt en daar zit geen veld F1 in.

Kun je mij helpen?

Hans
 
Laatst bewerkt door een moderator:
Wat heeft deze vraag met programmeren voor websites te maken? Vertel er op zijn minst bij (als het wat anders is) voor welk programma deze code bedoeld is. En zet je vraag in het juiste forum, want ik weet bijna zeker dat er een forum voor Access is hier :). En zet je code tussen CODE tags, dat maakt 'm een stuk leesbaarder.
 
Wat heeft deze vraag met programmeren voor websites te maken? Vertel er op zijn minst bij (als het wat anders is) voor welk programma deze code bedoeld is. ...
Nu even serieus het forum is al zo vereenvoudigt dat er geen verschil is tussen talen .([de komma laat vermoeden dat de ene welkom is voor de comma maar ook na ])
dat ter zijde
Volgens mij lijkt het visual basic en dat had handig geweest als dit vermeld was. wat dus ook mogelijk is vba .voor mij zijn die al in de vergeetput geraakt helaas heen zinnig antwoord van mij.
 
Nu de code netjes is opgemaakt, is de volgende vraag: doe er eens een bestandje bij, en liefst een db met de importabel (ik ga er tenminste van uit dat het een Access vraag betreft, een programma met een eigen subforum overigens), want daar gaat duidelijk iets fout.

Mocht je dat niet willen, dan kun je eens beginnen met een nieuwe importtabel te maken d.m.v. handmatige import van een csv bestand. In de wizard importeer je dus in een nieuwe tabel, en ik zou óók gelijk een importspecificatie maken (zit onder Geavanceerd als een stap) die je dan kunt hergebruiken in je macro.
 
Ik heb dezelfde table als input gebruikt en daar zit geen veld F1 in.
Die begrijp ik even niet. Je gebruikt toch een CSV-bestand als invoer?

Hoe dan ook, zoals ik schreef als reactie op je andere post, vermoed ik dat het CSV-bestand geen kopteksten bevat. Acces doet er dan maar een gooi naar en beschouwt de eerste kolom in het bestand als "F1" (field1) en denkt dat de waardes in de tabel in het veld "F1" weggeschreven moeten worden.

Je moet een importspecificatie maken waarin staat dat het CSV-bestand geen kopteksten bevat en welke velden uit de tabel gebruikt moeten worden. Zo'n specificatie maak je het makkelijkst door een bestand eenmalig "handmatig" te importeren (Externe gegeven – Importeren en koppelen – Nieuw gegevensbron – Uit bestand – Tekstbestand). Doorloop het alle stappen. Klik voor het daadwerkelijk importeren op "Geavanceerd" en zet daar ook alles goed. Klik dan in het geavanceerde scherm ook op "Opslaan als.." en sla de definitie op onder een bepaalde naam. Die naam gebruik je in je DoCmd.TransferText als tweede parameter.
 
Laatst bewerkt:
@xps35: Altijd handig om een eerder antwoord te herhalen zonder af te wachten of TS dat eerdere antwoord wel gelezen/begrepen heeft. Of lees je zelf de vorige antwoorden niet?
 
Quote in CSV

Bij het importeren zie ik dat het te importeren bestand begint met een quote:

Y4SPV4MACIAACIAACIAACNwsAYjfm WNt4EACIAACIAACIAACIyRAMTvGOHj1SAAAiAAAiAAAiAAAjdLAOL3ZnnjbSAAAiAAAiAAAiAAAmMkAPE7Rvh4NQiAAAiAAAiAAAiAwM0S H D 4GtGfPaCgAAAABJRU5ErkJggg==


Waar komt die beginquote vandaan?

Groet,

Hans
 
Dat kunnen we niet weten. We weten immers niet waar het te importeren (csv) bestand vandaan komt.
Zoals eerder gezegd kan je het beste een voorbeeld van het bestand (en de database) posten zodat we eindelijk iets zinnigs kunnen zeggen.
 
Csv bestanden hebben de data vaak tussen quoots staan. Dat maakt voor het importeren niets uit. Nogmaals: zonder voorbeeldje kunnen we zo goed als niks. En zit jij al 10 dagen zonder bruikbaar antwoord. Mij heb je daar niet mee :).
 
Bestand

Hierbij het te importeren CSV bestand. Ik probeer dat bestand in mijn Access applicatie te importeren in een nieuwe tabel.
 

Bijlagen

Ik zie een machtig probleem in je bestand; de koppen zijn gescheiden met tabs, de dat1 met puntkomma's. Dat kan niet, het is het één of het ander. Jij hebt zo te zien voor de puntkomma gekozen, en dan krijg je inderdaad een veld met een hele lange naam, en dan de rest met de namen F1, F2 etc.
 
Csv

Hoe kan ik dat oplossen? Ik heb het bestand gemaakt in Excel en opgeslagen als .CSV.
 
Geen idee, want ik weet niet waar je dat bestand vandaan haalt/krijgt. Het moet in ieder geval aan de bron worden opgelost. Of, dat kan ook, je maakt een procedure die het tekstbestand inleest, en op basis van de 1e regel met tabs de veldnamen inleest, en de rest van de tekst op basis van de puntkomma's de data. Mits die klopt natuurlijk; in jouw bestand zie ik dit als inhoud:

Code:
"ScanBatch	RelAdmin	RelNaam	RelKvK	RelTav	RelAdres	
12345;1800;PS
Dat lijkt mij onbetrouwbare informatie, tenzij "PS" de inhoud is van [RelNaam]. De overige velden zijn leeg, dus érg weinig aanknopingspunten :).
 
Inhoud

12345 is de inhoud van het veld ScanBatch en PS is de RelNaam
 
Dan klopt dat dus. Verder kan ik er niets over zeggen :).
 
Ik heb het bestand gemaakt in Excel en opgeslagen als .CSV.
Ik kan het steeds moeilijker volgen.
Heb je nu geprobeerd om een bestand dat je wilt verwerken na te maken? Dat lijkt me niet zinvol, want dan geeft het geen goed beeld van de werkelijkheid. Lever een realistisch bestand aan.
Als je eventueel excel-bestanden zou willen verwerken, dan is een tussenstap via csv niet nodig.
 
mK220856,

Maak een kopie van de gehele eerste regel van het excel bestand.
Plak dit in Word met de optie opmaak behouden.
Sluit elke tussenliggende ruimte met backspace en zet er een puntkomma tussen.
Maak hier weer een kopie van en plak dit in je excel bestand met optie opmaak behouden.

Nu kan je dit in Access met externe gegevens importeren.
In de tabel in Access zal je 3 foutjes zien, 2 veldnamen met " en 1 veldnaam teveel, haal de " weg uit de veldnaam en verwijder
de veldnaam die teveel is.

Groetjes.
 
Voordat je deze nogal (overbodig) ingewikkelde werkwijze gaat navolgen zou ik a) eerst kijken naar de bron van de gegevens (als die niet uit Excel komen), b) rechtstreeks vanuit Excel correct exporteren als csv bestand, want dat gaat echt wel goed of c) rechtstreeks het Excel bestand importeren, zoals xps351 ook al voorstelde. Wat je hebt aangeleverd, klopt namelijk gewoonweg niet, dat is geen normale export uit Excel.
 
CSV naar Excel

IK heb de aanroep aangepast:

Dim MijnBestand As String

With Application.FileDialog(3)
.Title = "Bestand selecteren"
.InitialFileName = "C:"
.Filters.Clear
.Filters.Add "Excel files", "*.xls; *.xlsx; *.CSV; *.xlsm", 1
.AllowMultiSelect = False
If .Show <> 0 Then
MijnBestand = .SelectedItems.Item(1)
MsgBox MijnBestand
Else
Exit Sub
End If
End With

DoCmd.TransferText acImportDelim, , _
"tblScanBestand", MijnBestand

Maar nu krijg ik de melding 'U kunt dit bestand niet importeren.

Zo ziet het bestand in Excel eruit:

[TABLE="width: 168"]
[TR]
[TD="width: 56"]ScanBatch[/TD]
[TD="width: 56"]RelAdmin[/TD]
[TD="width: 56"]RelNaam[/TD]
[/TR]
[TR]
[TD="align: right"]123[/TD]
[TD="align: right"]1800[/TD]
[TD]PS[/TD]
[/TR]
[/TABLE]
 
Ik geef het op.

We tasten nog steeds in het duister over de situatie. Ontvang je nu een extern csv bestand of niet? Zo ja, hoe ziet dat er echt uit?
Als je geen csv bestand ontvangt is het een raadsel waarom je zit te goochelen met Excel en csv bestanden.

Zo lang je geen duidelijkheid geeft zie ik in ieder geval geen mogelijkheid meer om je te helpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan