vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: access dbase 
Autor: unbekannt
Datum: 18.11.01 13:37

Hi Wolfgang,

das ist ein Tipp von Dieter aus Tipps & Tricks. Da Dieter normalerweise gewissenhaft ist und die Sachen alle prüft, konnte ich mir nicht vorstellen, dass das Proggi einen Fehler haben könnte. Ich habe Ihn getestet:

Eine Form, eine Schaltfäche und diesen Code:

Private Sub Command1_Click()
    Copy_AccessToDBase "C:Eigene DateienRalph.MDB", "Termine", "C:Eigene" & _
      "DateienDBASE.DBF", True
End Sub
 
 
Private Function Copy_AccessToDBase(ByVal FilenameAccess As String, _
  ByVal TabNameAccess As String, ByVal FilenameDBase As _
  String, Optional ByVal DeleteIfExists As Boolean = True) As Boolean
 
  Dim dbDBase As Database
  Dim TabDBase As Recordset
  Dim dbAccess As Database
  Dim TabAccess As Recordset
  Dim PathDBase As String
  Dim NameDBase As String
  Dim TabDef As New TableDef
  Dim Feld As New Field
  Dim I As Integer
  Dim Dummy As String
  Dim AccessFeld As Field
 
  PathDBase = Left$(FilenameDBase, _
    InStrRev(FilenameDBase, "\") - 1)
  NameDBase = Mid$(FilenameDBase, Len(PathDBase) + 2)
  NameDBase = Left$(NameDBase, InStrRev(NameDBase, ".") - 1)
 
  'On Local Error GoTo Copy_Access_Error
 
  ' Prüfen, ob dBASE-Datei bereits vorhanden
  If Dir$(FilenameDBase, vbNormal) <> "" Then
    If Not DeleteIfExists Then
      Copy_AccessToDBase = False
      Exit Function
    End If
    Kill FilenameDBase
  End If
 
  ' dBASE-Datei erstellen
  Set dbDBase = Workspaces(0).OpenDatabase(PathDBase, _
    False, False, "dBASE IV;")
 
  ' Access-Datenbank öffnen
  Set dbAccess = Workspaces(0).OpenDatabase(FilenameAccess)
  Set TabAccess = dbAccess.OpenRecordset(TabNameAccess)
 
  ' Tabellen-Definition übertragen
  TabDef.Name = NameDBase
  For Each AccessFeld In TabAccess.Fields
    With AccessFeld
      Feld.Name = .Name
      Feld.Type = .Type
      Select Case .Type
        Case dbMemo
          Feld.AllowZeroLength = .AllowZeroLength
        Case dbText
          Feld.Size = IIf(.Size >= 255, 254, .Size)
          Feld.AllowZeroLength = .AllowZeroLength
      End Select
      Feld.Attributes = .Attributes
      Feld.DefaultValue = .DefaultValue
      Feld.Required = .Required
    End With
    TabDef.Fields.Append Feld
    Set Feld = Nothing
  Next
  dbDBase.TableDefs.Append TabDef
 
  ' DBase-Tabelle öffnen
  Set TabDBase = dbDBase.OpenRecordset(NameDBase)
 
  ' Datensätze übertragen
  While Not TabAccess.EOF
    TabDBase.AddNew
    For I = 0 To TabAccess.Fields.Count - 1
      TabDBase(I) = TabAccess(I)
    Next I
    TabDBase.Update
 
    TabAccess.MoveNext
  Wend
  Copy_AccessToDBase = True
 
Copy_Access_End:
  On Local Error Resume Next
  TabDBase.Close: dbDBase.Close
  TabAccess.Close: dbAccess.Close
  On Local Error GoTo 0
  Exit Function
 
Copy_Access_Error:
  MsgBox "Fehler !!!" & vbCrLf & Err.Number & _
    " " & Err.Description, 16, "FEHLER..."
  Copy_AccessToDBase = False
  Resume Copy_Access_End
End Function
Funktioniert einwandfrei.

Allerdings habe ich vorher noch über Projekte/Verweise einen Verweis auf die Microsoft DAO 3.51 Object Library in mein Projekt eingefügt.

Nimm mal diesen Code, mache den gleichen Verweis. Natürlich mußt Du die Datenbanknamen (Pfad) und Tabellennamen entsprechend anpassen.

cu
Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
access dbase67Wolfgang17.11.01 11:47
Re: access dbase253unbekannt17.11.01 13:02
Re: access dbase47Wolfgang17.11.01 16:03
Re: access dbase47Wolfgang17.11.01 16:05
Re: access dbase277unbekannt18.11.01 13:37
Re: access dbase36Wolfgang18.11.01 14:19
Re: access dbase244unbekannt18.11.01 14:38
Re: access dbase36Wolfgang18.11.01 15:09
Re: access dbase274unbekannt18.11.01 15:15
Re: access dbase32Wolfgang18.11.01 15:17
Re: access dbase43Wolfgang18.11.01 17:09
Re: access dbase241unbekannt18.11.01 17:22
Re: access dbase32Wolfgang18.11.01 17:29

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel