Access VBA code tabel omzetten naar dbf

Status
Niet open voor verdere reacties.

annetiti

Gebruiker
Lid geworden
6 aug 2007
Berichten
195
Beste VBA-programmeurs

In een Access-applikatie (versie 2003) zou ik het volgende willen coderen:

- een tabel moet geexporteerd worden naar dbase4 bestand: bestand krijgt de benaming: Bestandnaam + yyMMDD
maar:
- De gebruiker moet een directory kunnen kiezen
- en indien het bestand reeds bestaat moet hij de melding krijgen "mag het bestand overschreven worden".

Kan iemand mij hierbij helpen? Met dank

anne
 
Je vraag bestaat uit twee delen: een code om een tabel te exporteren, en een code om eem map te kunnen selecteren.
Met bijgaande Functie SelectFolder kun je laten bladeren naar een map. Deze kun je bijvoorbeeld toewijzen aan een Variabele: sPad=SelectFolder.

Code:
Function SelectFolder(Optional Title As String, Optional TopFolder As String) As String
Dim objFolder As Shell32.Folder
Dim objShell As New Shell32.Shell
''Dim sExt() As String
'Deze functie maakt gebruik van de bibliotheek <Microsoft Shell Controls And Automation>
'Als je 16384 gebruikt in plaats van 1 op de volgende regel, dan worden ook de bestanden getoond.
    
    Set objFolder = objShell.BrowseForFolder(0, Title, 1, TopFolder)
    If Not objFolder Is Nothing Then
        SelectFolder = objFolder.Items.Item.Path & "\"
    End If
End Function
Om de tabel te exporteren naar een dBase IV bestand kun je deze code gebruiken:

Code:
Private Sub cmdExport_Click()
Dim sPad As String
sPad = SelectFolder
DoCmd.TransferDatabase _
    TransferType:=acExport, _
    DatabaseType:="dBase IV", _
    DatabaseName:=sPad, _
    ObjectType:=acTable, _
    Source:="[TabelNaam]", _
    Destination:="\Test_" & Format(Date, "yymmdd") & ".dbf", _
    StructureOnly:=False
End Sub
 
Hartelijk dank Michel

Heb het geintegreerd in mijn toepassing en het werkt prima.:)

Enkel een probleemje gehad bij de naamgeving van het DBF bestandje. 'k wist niet dat het slechts uit 8 karakters mocht bestaan.

Je hebt me een hele stap vooruitgeholpen.

Dank
ANne
 
dBase zal inderdaad nog wel met het 8.3 bestandsformat werken. Dus daar zul je dus rekening mee moeten houden. Je wilde geloof ik ook nog een check op de bestandsnaam ingeval van overschrijven? De Transfer code kijkt daar niet naar, die overschrijft altijd het bestaande bestand. Laat maar weten of je daar ook nog een oplossing voor wilt.
 
Hallo

Dat zou ook interessant zijn. Kun je mij zo'n voorbeeld doormailen.:thumb:
Heb het nu opgelost met een MSGBOX "Let op er kunnen bestanden overschreven worden" Niet zo fijn geprogrammeerd!
Alvast bedankt

Anne
 
Dan ziet de code er zo uit:

Code:
Private Sub cmdExport_Click()
Dim sPad As String, sBestand As String
Dim intAnswer As Integer
sPad = SelectFolder
sBestand = "\Test_" & Format(Date, "yymmdd") & ".dbf"
If Dir(sPad & sBestand) <> "" Then
    intAnswer = MsgBox("Het bestand " & sBestand & " bestaat al," & vbLf & "Zullen we het vervangen?", vbQuestion + vbYesNo, "Bestand vervangen")
    If intAnswer = vbNo Then Exit Sub
End If
DoCmd.TransferDatabase _
    TransferType:=acExport, _
    DatabaseType:="dBase IV", _
    DatabaseName:=sPad, _
    ObjectType:=acTable, _
    Source:="[TabelNaam]", _
    Destination:=sBestand, _
    StructureOnly:=False
    
End Sub
Er is een check bij gekomen (If Dir(sPad & sBestand) <> "" Then) die m.b.v. het DIR commando controleert of de bestandsnaam al bestaat. Als dat zo is, krijg je een vraag of je wilt doorgaan of niet.
 
Dag Octafish

Heb de VBA aangepast en het werkt!!

Hartelijk dank zonder je hulp had ik het niet gevonden. Heb er veel uitgeleerd.

groeten Annetiti
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan