2.3k Aufrufe
Gefragt in Datenbanken von
Hallo Forum,
habe 2 fragen an euch mit der BITTE mir villeicht helfen zu können
ich importiere mit den folgenden Code eine xls datei in eine Access DB.

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "test", Pfad1 & "\" & "test.xls"

1. ich möchte nun dass die ersten 4 zeilen in der Tabelle gelöscht werden denn die Spaltennamen stehen in der 5 zeile.

2. die Spaltenneman sollen als Feldnamen in der access Tabelle übernommen werden.

könnt ir mir dabei helfen

viele Grüße

SARP

4 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Was steht denn in den ersten 4 Zeilen?? Gibt es da Gemeinsamkeiten, die man als Löschkriterium benutzen könnte? dann kannst Du mit
Dim strSQL As String

strSQL = "delete * FROM test WHERE blabla............."
CurrentDb.Execute strSQL
löschen.

Eine andere Möglichkeit ist nur einen bestimmten Bereich zu importieren, dann läßt Du die Zeilen gleich weg, die Du löschen willst.

Andernfalls könntest Du im nachhinein eine Spalte mit Autowert einfügen, zum beispiel mit
CurrentDb.Execute "alter table deinetabelle alter column deine_id counter primary key;"
und dann die ersten vier Zeilen löschen mit "... WHERE deine_id <5"

Umbenennen geht (ich glaube ab Access 2000) zum beispiel so:

CurrentDb.Execute "ALTER TABLE MeineTabelle, CHANGE COLUMN MeinAltesFeld MeinNeuesFeld"


Du musst halt dann die Spaltennamen einlesen in einer Schleife und umbenennen. Wenn Du damit nicht hinkommst frag nochmal, dann gehen wir schrittweise vor.

Viel einfacher ist natürlich eine Importspezifikation, falls Du den Import öfter durchführen musst und die feldnamen immer gleich heißen.

Eine weitere Möglichkeit wäre zuerst die feldnamen aus der Exceltabelle auszulesen und die leere Tabelle anzulegen und dann zu importieren.

Also entscheide erstmal welcher fall in Deinem fall der einfachste wäre.

Gruß marie
0 Punkte
Beantwortet von
Guten Morgen Marie,

vielen dank für dein hilfestellung.
die ersten 4 zeilen sind leer die Spaltenüberschriften der excel dat. stehen in der 5 zeile.

Ich habe schon mit der Importspezifikation rumgespielt leider klappt es aufgrund der leerzeilen nicht.

Die Lösüng wäre nur den bereich ab der zeile 5 bis letzte datensatz
( kein fester bereich ) aus excel zu importieren dann wäre es
wahrscheinlich auch einfacher eine Importspezifikation anzulegen
Somit hätte ich auch keine Probleme mit den Feldnamen

wie spreche ich den bereich den an, damit ich über Importspezifikation die xls dat importieren kann ?
viele grüße

SARP
0 Punkte
Beantwortet von marie Experte (2k Punkte)
DoCmd.TransferSpreadsheet [Transfertyp], [Spreadsheettyp], Tabellenname, Dateiname, [BesitztFeldnamen], [Bereich]

Bereich ist der Druckbereich, wenn Du den in Excel festlegen kannst vorher. Geht das? Andernfalls müssen wir die Datensätze zählen. Sei doch mal ein wenig kooperativer. hast Du eine ID oder Personalnummer oder irgendeine zahlenspalte oder eine Spalte die immer ausgefüllt sein muss? Oder müssen wir eine ID anlegen ??

Gruß marie
0 Punkte
Beantwortet von
Hi Marie,

entschuldige bitte das ich mich vorher nicht mehr melden konnte.
Danke für die Lösüng

DoCmd.TransferSpreadsheet [Transfertyp], [Spreadsheettyp], Tabellenname, Dateiname, [BesitztFeldnamen], [Bereich]

Gruß SARP
...