Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Felddeklaration

Begonnen von Stupido, September 26, 2014, 08:09:06

⏪ vorheriges - nächstes ⏩

Stupido

Moin den Wissenden,

ich kämpfe grad mit einem Phänomen, daß mir noch nicht begegnet ist.

Ich habe mir in VBA ein Marko geschrieben, daß mir die Zeileninhalte eines Excelblattes ist eine Datenbanktabelle schreibt. Bis dato hat es auch gut funktioniert.
Mit einem Mal bekomme ich die Meldung "Dateityp-Konvertierungsfehler.
Die Überprüfung der Felddeklaration in Excel ergab die korrekte Einstellung bestehend aus Text und Datum
Die Überprüfung der Accesstabelle hatte das selbe Ergebnis. Text und Datum. Somit sind alle Felder korrekt deklariert.
Da ich nun zu keinem Ergebnis gekommen bin, habe ich die Execltabelle einmal in Access importiert. Fehlerreport gab es keinen, die Überprüfung der Felddeklaration allerdings brachte die Überraschung zu Tage, daß 4 Spalten nebeneinander als Währung deklariert sind! Es gibt zwar in der Exceltabelle eine Spalte mit Währung, aber diese Spalte wird nicht ausgelesen bzw. wurde nicht importiert.
Somit bleiben bei mir nur: ???

Weiß jemand Rat???

Gruß
Michael

ebs17

ZitatFelddeklaration in Excel ergab die korrekte Einstellung bestehend aus Text und Datum
Excel kennt keine Datentypen, da lässt sich auch nichts deklarieren.
Datentypen ergeben sich aus Zellinhalten (je Zelle!), ggf. unterstützt durch eine Zellformatierung.

Ratschläge auf eine unbekannte VBA-Routine zu geben: Glaubst Du nicht, dass das etwas zu anstrengend ist? Oder zahlst Du gut pro Versuch?
Mit freundlichem Glück Auf!

Eberhard

Stupido

Moin ebs,

hast ja recht. Ich dachte halt, daß jemand dieses Phänomen kennt...

Von daher hier nun mal der Code ...

Sub Datenbank_fuellen()
    Dim db As Object
    Dim rs As Object
    Dim i As Integer
    Dim Ende, Start As Long
   
   
    Set db = CreateObject("DAO.DBEngine.120").OpenDatabase("\\...\Test.accdb")
   
    Set rs = db.OpenRecordset("Laufende Themen")
    Start = rs.RecordCount
    Ende = 0
    Do Until IsEmpty(Cells(Ende + 1, 1))
    Ende = Ende + 1
    Loop

    On Error GoTo Fehler
       
        If (Start + 1) = Ende Then GoTo Enden
        For i = (Start + 1) To Ende
        rs.AddNew

        RS!... =cells(i,1-59)

rs.Update

Next i

Exit Sub

Fehler:
   MsgBox (Err.Description)
   
Enden:
   db.Close
   Set db = Nothing
 
End Sub


Bis dato sind 2035 Datensätze auf diese Art eingetragen worden.

ebs17

Ich verstehe den Code und den Ablauf nicht.

rs.RecordCount: (Zum korrekten Zählen müsste man ein MoveLast davorschalten.) Welche Rolle spielt die Datensatzanzahl einer DB-Tabelle beim Auslesen eines Excel-Tabellenblattes?

RS!... =cells(i,1-59): Welche Spalte wird auf -58 referenziert?
cells kleingeschrieben. Intellisense sagt, da gibt es einen Fehler.

ZitatBis dato sind 2035 Datensätze auf diese Art eingetragen worden.
Auf genau diesen Code? Da melde ich Zweifel an.
Mit freundlichem Glück Auf!

Eberhard