Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel nach Access
#11
Hallo Stefan, :19:

OK - hier mal eine Möglichkeit: :21:

.zip   Von_Excel_nach_Access_Abfragen_per_SQL.zip (Größe: 65,7 KB / Downloads: 10)

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:
________
Servus
Case
Antworten Top
#12
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
Antworten Top
#13
Hallo, :19:

das solltest du etwas näher ausführen. :21:
________
Servus
Case
Antworten Top
#14
Oh, Case
Danke, ich muss das studieren. Vielen Dank.
Gruss
Stefan1
Antworten Top
#15
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
Antworten Top
#16
Hallo, :19:

wenn du nicht indizierst, kannst du es so nutzen. :21:
________
Servus
Case
Antworten Top
#17
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
Antworten Top
#18
Hallo, :19:

das solltest du etwas ausführlicher erklären. :21:
________
Servus
Case
Antworten Top
#19
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
Antworten Top
#20
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.
________
Servus
Case
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste