Clever-Excel-Forum

Normale Version: Excel nach Access
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Stefan, :19:

OK - hier mal eine Möglichkeit: :21:
[attachment=32542]

Habe das gestern in meinen Blog mit aufgenommen. In dem Beispiel siehst du, wie man...

Den Inhalt einer Tabelle löscht:
Code:
.Execute "DELETE * FROM TransferToAccess"


Eine komplette Tabelle aus Excel in diese Tabelle in Access rüber schiebt:
Code:
.Execute "INSERT INTO TransferToAccess SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & ThisWorkbook.FullName & "].[TransferToAccess$]"


Eine Anfügeabfrage (wenn Wert aus Spalte ID nicht vorhanden):
Code:
.Execute "INSERT INTO Archiv SELECT * FROM TransferToAccess WHERE ID NOT IN (SELECT ID FROM Archiv)"


Eine Aktualisierungsabfrage (Maßgeblich auch hier wieder die Spalte ID):
Code:
.Execute "UPDATE Archiv INNER JOIN TransferToAccess ON Archiv.ID = TransferToAccess.ID " & _
    "SET Archiv.SpalteA = TransferToAccess.SpalteA, " & _
    "Archiv.SpalteB = TransferToAccess.SpalteB, " & _
    "Archiv.SpalteC = TransferToAccess.SpalteC, " & _
    "Archiv.SpalteD = TransferToAccess.SpalteD, " & _
    "Archiv.SpalteE = TransferToAccess.SpalteE, " & _
    "Archiv.SpalteG = TransferToAccess.SpalteG, " & _
    "Archiv.SpalteH = TransferToAccess.SpalteH, " & _
    "Archiv.SpalteI = TransferToAccess.SpalteI, " & _
    "Archiv.SpalteJ = TransferToAccess.SpalteJ"

Das ist jetzt nur ein Beispiel, ohne Maßgabe eines Datenbank spezifischen Aufbaus. Es gibt keinen Primärschlüssel, es wird nichts indiziert. Wenn das die Grundlage wäre, und man würde ständig mehrere tausend Datensätze rüber schaufeln, dann müsste man anpassen, denn dann würde "INSERT INTO..." zu Geschwindigkeitsproblemen führen.
Außerdem müsste man die Datenbank immer wieder komprimieren.

Bei einer überschaubaren Menge an Daten ist das aber kein Problem.

Achte auf die Kommentare im Code. Namen von Tabellen und Feldern müssen exakt geschrieben sein.

Ist deine Tabelle größer, und du möchtest nur einen Teil nehmen, dann kopiere den vorher in Excel in ein temporäres Tabellenblatt. Wenn du das intensiver machen möchtest, kommst du um einen kleinen Grundkurs in SQL nicht herum. Da gibt es aber zahlreiche im Netz.

Soll ja auch nur zum weiteren Probieren da sein, also mach was draus. :21:
Hallo Case,

echt super Beispiel. Perfekte Erklärung, einfach Klasse.
Hab recht vielen dank.
Hast du noch ein Beispiel zu liegen bei der die ID Automatisch hochgezählt wird? ( wenn ein Datensatz dazukommt)

Du hast da eine Klasse Internetseite. 
Diese werde ich erstmal durchforsten.

mfg Sipel
Hallo, :19:

das solltest du etwas näher ausführen. :21:
Oh, Case
Danke, ich muss das studieren. Vielen Dank.
Gruss
Stefan1
Danke, das Ganze hat auf Anhieb funktioniert und war schnell. Oh, leider sind es täglich viele Datensätze. Nach was für Code soll ich ausschau halten. Das Ganze ist einfach zu genial  Angel
Gruss
Stefan
Hallo, :19:

wenn du nicht indizierst, kannst du es so nutzen. :21:
guten Tag Case
Jetzt bin ich neugierig geworden, ist es auch so einfach die Daten ab einem bestimmten Datum wieder in das Excel zu holen?n  :05:
Wenn das auch so schnell läuft, verzichtete ich auf .txt-Dateien.
Gruss
Stefan1
Hallo, :19:

das solltest du etwas ausführlicher erklären. :21:
Guten Tag
Also eine Spalte (Status_Datum) ist bei meinen Daten ein Datumswert. Es wäre nun interessant, wenn man alle Datensätze ab einem bestimmten Datum (z.B. > 28.05.2020) wieder in die Excel-Tabelle mit gleicher Struktur zurückholen könnte. Zudem habe ich in der Access-DB die ID indexiert (Schlüssel). Ist das nun nachteilig? Du hast da etwas erwähnt bezüglich der Access-DB und der Datenbankgrösse, das mich interessiert. Mit der Indexierung mache ich eigentlich nicht viel, nur dass die Daten (Identifikation des Datensatzes) nur einmal vorkommen, was in meinem Fall vorausgesetzt ist. 
Gruss und Dank
Stefan1
Hallo, :19:

zum auslesen von Daten habe ich hier auch ein Beispiel: :21:

DAO - Accessdatenbank - Daten auslesen...

Dort werden Kundendaten ab einer bestimmten Nummer ausgelesen. Man muss nur den SQL-String entsprechend anpassen. :21:

Indizieren ist nicht nachteilig (in einer Datenbank eigentlich unerlässlich). Ich wollte dich nur darauf hinweisen, dass es bei großen Datenmengen langsamer ist.
Seiten: 1 2 3