export naar TXT zonder scheidings teken

Status
Niet open voor verdere reacties.

fredvanhezel

Gebruiker
Lid geworden
12 okt 2009
Berichten
41
Hallo,
Ik wil van een tabel (met maar een kolom) alle records exporteren naar een txt bestand. In dit txt bestand staan alle records dan als een lange regel achter elkaar.
volgens mij moet het gaan lukken als ik geen veldscheiding mee geef , helaas geen standaard optie.
Wie kan mij opweg helpen ?

BVD

Fred
 
Een exportbestand zonder sdcheidingstekens is niet mogelijk, en lijkt mij ook niet wenselijk. Want hoe hou je de verschillende gegevens dan uit elkaar?
 
Het is de bedoeling dat er een bestand wordt ingelezen in een order systeem deze pakt van uit dat bestand iedere 18 posities op.

voorbeeld (records in tabel access)
H00000000000000001
H10000000000000002
00000000000000003+
00000000000000004+

voorbeeld export tekst (txt)

H0000000000000001H1000000000000000200000000000000003+00000000000000004+

dus eigenlijk een vaste breedte maar dan achterelkaar als een regel ( deze kan soms wel 40.000 tekens bevatten).
 
Laatst bewerkt:
Je kunt een export maken m.b.v. vaste breedte; die zou ik dan vastleggen in een Exportspecificatie, zodat je hem ook kunt gebruiken in VBA routines.
 
Michel,
Bedankt voor de info,
de export gaat goed alleen blijven er harde returns in het txt bestand staan.
Het systeem wat het bestand moet gaan verwerken keurt dit af . Verwijder ik handmatig de returns uit het txt bestand dan gaat het goed.

blijft dan nog de vraag hoe verwijder ik de harde returns in het txt bestand.
 
Dat kan eigenlijk alleen met een procedure die de records uit je query of tabel uitleest, en in één tekststring zet. Waarbij je overigens problemen kunt krijgen als je de maximale lengte van de string overschrijdt.
 
Beste Michel,

ik heb de onderstaande code draaien

Code:
Dim dbs As Database, rst As Recordset
Dim expName As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("ordep005363web")  ' is tabel naam

 
  expName = "C:\Documents and Settings\Bureaublad\orderp005363web.txt"
 
  On Error GoTo ExportHT_err


 
 
If Not rst.EOF Then
    
    Open expName For Output Lock Read Write As #1
 
    rst.MoveFirst
    
    Do Until rst.EOF
 
      Print #1, rst![regel]; ' regel is veld naam
        
      rst.MoveNext
    Loop
    
End If ' no data at all
 
ExportHT_Exit:
  Close #1
  rst.Close
  Set dbs = Nothing
Exit Sub
 
ExportHT_err:
 
 MsgBox Err.Description
 On Error Resume Next
 
 Resume ExportHT_Exit
 
End Sub
op zich draait deze wel maar geeft :䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈䑈 als uitkomst ?

wat gaat hier fout ?
je geeft ook aan dat er een maximale lengte aan de string weet je ook hoeveel tekens een string kan bevatten ?

BVD

Fred
 
Laatst bewerkt door een moderator:
Bij mij werkt dit:

Code:
Dim expName As String, sRegel As String
On Error GoTo ExportHT_err

expName = "H:\orderp005363web.txt"

With CurrentDb.OpenRecordset("Bestanden")
    .MoveFirst
    If .BOF And .EOF Then Exit Sub
    Do While Not .EOF
        sRegel = sRegel & .Fields("Map") & "\" & .Fields("BestandsNaam") & "." & .Fields("Extensie") & ";"
        .MoveNext
    Loop
End With

Open expName For Output Lock Read Write As #1
Print #1, sRegel ' regel is veld naam

ExportHT_Exit:
    Close #1
    Exit Sub

ExportHT_err:
    MsgBox Err.Description
    On Error Resume Next
    Resume ExportHT_Exit

(Let even op het verschil in opmaak van de code ;) )
 
Beste Michel,

nogmaals bedankt voor het gegeven van je tips.

Jou code werkt prima en is zeker overzichtelijker , ik ben er inmidels ook achter waarom de uitkomst van het txt bestand wordt verminkt.
Dit gebeurd boven de 500 karakters , het vrijwel zeker dat ik hier regelmatig boven kom.

kan ik deze methode vergeten of zijn er andere methode om een lange txt string te maken ?

Fred
 
Ik zou het ook niet doen, als ik eerlijk ben. Je maakt het jezelf nodeloos ingewikkeld. Dus ik zou de oplossing eerder zoeken in een aanpassing van de import procedure. Zelf ben ik nog nooit een programma tegengekomen dat niet op een fatsoenlijke manier een tekstbestand met normale recordscheiding kan importeren..... Het druist ook in tegen allerlei logische methodieken.
 
Ja eigenlijk heb je gelijk , toch heb ik nog even zocht op dit item en kwam nog een interessante tip tegen "Gebruik geen notepad maar Wordpad om je files te openen, Wordpad kent wel Unix-enter's" Dit heb ik dus gedaan en nu is het bestand wel leesbaar.
Morgen ga ik dit dus nog even testen, een echt grote order inlezen dus. Mocht dit niet lukken dan volg ik je advies op , aanpassen van de import procedure.

als nog bedankt voor de tips en adviezen.

Grt,
Fred
 
Ik gebruik zelf Notepad++ om tekstbestanden te openen, en geen Notepad. Al kan Notepad best bestanden aan met duizenden tekens. En (kan trouwens ook in Notepad) je kunt de Automatische terugloop uitzetten. En bovendien je had toch geen Enters in je bestand staan? Dat was toch de crux van het verhaal? Dat je het bestand in Wordpad wel kunt openen, lijkt mij ook met je probleem verder niks te maken te hebben, want uiteindelijk gaat het er om dat je applicatie het kan lezen. Verder blijf ik van mening dat je import methode anders zou moeten ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan