2016-03-21 5 views
0

Ich verwende den folgenden Code, um Daten aus einer Excel-Datei in den Zugriff zu importieren.docmd.transfersspreadsheet falsche Zuordnung Datentyp

Private Sub cmdOriginal_Click() 

Dim fDialog As Office.FileDialog 
Dim varFile As Variant 

Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 

With fDialog 

    .AllowMultiSelect = False 
    .Title = "Please select a file" 
    .Filters.Clear 
    .Filters.Add "Excel Files", "*.XLSX" 
    .Filters.Add "All Files", "*.*" 

If .Show = True Then 

For Each varFile In .SelectedItems 

DoCmd.TransferSpreadsheet acImport, 10, "OriginalData", varFile, True, "" 
Beep 
MsgBox "Import Complete!", vbExclamation, "" 

Next 
Else 
    MsgBox "You clicked Cancel in the file dialog box." 
End If 

End With 

End Sub 

Es funktioniert gut für den größten Teil, aber in einigen Fällen ich finde, dass es falsch den Datentyp eines Feldes setzt Nummer. Dies führt zu Importfehlern, da die importierten Daten tatsächlich sowohl Text als auch Zahlen enthalten. Das Erstellen der Tabelle im Voraus ist keine Option, da die Feldnamen für jede importierte Datei unterschiedlich sind.

Ich würde mich über jeden Vorschlag freuen, wie ich darüber hinaus kommen kann.

Grüße, Adam

Antwort

2

Zugang macht es am besten erraten, was der Datentyp sein sollte. Ein alter Trick besteht darin, eine Dummy-Zeile unterhalb Ihrer Kopfzeilen in die Excel-Datei einzufügen. Geben Sie in den betreffenden Spalten ein Beispiel für den gewünschten Datentyp ein, und geben Sie für eine Zeichenfolge beispielsweise "abd123" ein. Wenn Sie das nicht manuell machen möchten, könnte es leicht in Excel oder von Access selbst automatisiert werden (erstellen Sie ein Excel-App-Objekt, öffnen Sie die Datei, nehmen Sie die Anpassung & speichern, bevor Ihr Code den Upload durchführt). Dann können Sie diese Zeilen einfach mit einer Löschabfrage aus der Tabelle löschen, die die Dummy-Zeichenfolge als Kriterium enthält. Hoffe das hilft.

+0

Danke für die Antwort, ich werde das versuchen –

1

Zwei Methoden, die Sie verwenden können:

  1. manuell importieren Sie die Tabelle und Felder Datentyp und andere Eigenschaften ändern, auf Ihre Bedürfnisse. Sie können dann im Code die Daten der Tabelle löschen, bevor Sie neue Daten importieren. Dies ist besser, wenn Sie die Daten in Ihrem System für weitere Prozesse benötigen.
  2. Verknüpfen Sie mit dem Excel, und haben Sie eine Abfrage darauf, die Felder auf die gewünschten Felddatentypen und Namen umwandeln. Diese Option informiert Sie (ruft einen Fehler auf), wenn Daten nicht erfasst werden können, die Daten jedoch in Excel bleiben.