Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datensatz in ACCESS aus Excel überschreiben

Datensatz in ACCESS aus Excel überschreiben
Jürgen
Hallo zusammen.
Die Datenübernahme von Excel nach Access habe ich mittlerweile durch Forumshilfe folgenderweise hinbekommen:
Set Rs = db.OpenRecordset("Datenbank", dbOpenDynaset)
With Rs
.AddNew
Rs.Fields(0) = Worksheets("Datenbank").[A65001] ' ID
Rs.Fields(1) = Worksheets("Datenbank").[B65001] ' BEZEICHNUN
Rs.Fields(2) = Worksheets("Datenbank").[C65001] ' Typ
.
.
.
Rs.Fields(3) = Worksheets("Datenbank").[D65001] ' Spannung
Rs.Fields(29) = Worksheets("Datenbank").[AD65001] ' NM
.Update
End With
Durch diese Übernahme kann ich den entsprechenden Datensatz aus der Excel Tabelle beliebig oft nach ACCESS übertragen, so daß er dort mehrfach vorhanden ist. Jeder Datensatz sollte dort jedoch nur einmal auftauchen.
Der Schlüssel für die Daten steht in der ersten Spalte [Rs.Fields(0)].
Wie muß ich den Datentransfer gestalten, damit, falls der Schlüssel, also der Eintrag in Spalte 1, bereits vorhanden ist, dieser Datensatz überschrieben und nicht neu angelegt wird?
Das Makro müßte also erkennen ob der Excel-Wert aus aus Zelle A65001 (ID) bereits irgendwo in der ersten ACCESS - Spalte steht und, falls dies der Fall ist, den entsprechenden Datensatz mit den aktuellen Excel Daten überschreiben.
Ich habe in den Archiven leider nichts passendes gefunden.
Gibt es dafür eine Lösung?
Gruß und vielen Dank im voraus, Jürgen

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datensatz in ACCESS aus Excel überschreiben
23.09.2009 19:29:44
Luschi
Hallo Jürgen,
so sollte es gehen:

Dim aktID As Long, suchText As String
aktID = Worksheets("Datenbank").[A65001]
'wenn das Feld 'ID' numerisch ist
suchText = "[ID] = " & aktID
'wenn das Feld 'ID' vom Typ 'Text' ist
'suchText = "[ID] = '" & aktID & "'"
With rs
.Find suchText
If (.BOF Or .EOF) Then
'DS mit dieser ID nicht gefunden
.AddNew
rs.Fields(0) = Worksheets("Datenbank").[A65001] ' ID
rs.Fields(1) = Worksheets("Datenbank").[B65001] ' BEZEICHNUN
rs.Fields(2) = Worksheets("Datenbank").[C65001] ' Typ
Else
'DS gefunden
.rs.Edit
rs.Fields(1) = Worksheets("Datenbank").[B65001] ' BEZEICHNUN
rs.Fields(2) = Worksheets("Datenbank").[C65001] ' Typ
End If
rs.Update
'usw.
rs.Close
Set rs = Nothing
End With
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Datensatz in ACCESS aus Excel überschreiben
24.09.2009 08:51:01
Jürgen
Hallo Luschi!
Vielen Dank für deine Hilfe!
Allerdings bekomme ich beim Start des Makros immer folgende Meldung:
"Fehler beim Kompilieren:
Methode oder Datenobjekt nicht gefunden."
Markiert wird bei dieser Fehlermeldung der Teil
".Find"
an der Stelle ".Find suchText"
Kannst Du mir sagen, was ich machen muß damit das Makro läuft?
Außerdem noch etwas. Der "Schlüssel" in der Excelzelle A65001 ist ein Text.
Kann ich die Variable "suchText" dann nicht so definieren:
suchText = Worksheets("Datenbank").[A65001] ?
Kannst Du mir vielleicht auch noch erklären was folgender Teil bedeutet:
If (.BOF Or .EOF) Then
Was ist BOF bzw. EOF?
So, daß waren jetzt wie in der Werbung drei Dinge auf einmal.
Damit soll's erstmal gut sein.
Vielen Dank im voraus und Gruß nach klein Paris!?
Jürgen
Anzeige
AW: Datensatz in ACCESS aus Excel überschreiben
24.09.2009 09:34:00
Tino
Hallo,
versuche es mal hiermit, habe es jetzt nicht getestet.
suchText = "ID Like '" & Worksheets("Datenbank").Range("A65001").text & "'"
With rs 'Recortset
.FindFirst suchText
If Not .NoMatch Then
'DS mit dieser ID nicht gefunden
.AddNew
.Fields(0) = Worksheets("Datenbank").[A65001] ' ID
.Fields(1) = Worksheets("Datenbank").[B65001] ' BEZEICHNUN
.Fields(2) = Worksheets("Datenbank").[C65001] ' Typ
Else
'DS gefunden
.Edit
.Fields(1) = Worksheets("Datenbank").[B65001] ' BEZEICHNUN
.Fields(2) = Worksheets("Datenbank").[C65001] ' Typ
End If
.Update
.Close
End With
Gruß Tino
Anzeige
AW: Datensatz in ACCESS aus Excel überschreiben
24.09.2009 11:16:18
Jürgen
Hi Tino.
Vielen Dank für Deine Hilfe!
Allerdings schreibt das Makro weiterhin ausschließlich neue Datensätze
in die Datenbank.
Offensichtlich findet das Makro den gerade selbst von ihm gemachten Eintrag nicht in der ACCESS DB.
Vielleicht nochmal zum Verständnis:
In der Exelzelle "A65001" steht der vollständige Schlüssel für den Eintrag. Der Wert (Textformat) aus dieser Excelzelle wird ohne Veränderung oder Ergänzung in die erste Spalte der Access Datenbank geschrieben. Der Inhalt der Excelzelle kann dabei wie eine Zahl aussehen (z. B. 00004711) ist aber als Text formatiert. Die Spaltenüberschrift der entsprechenden ACCESS Spalte lautet ID falls das wichtig ist.
Hast Du noch eine Idee, wie ich die doppelte Anlage vermeiden kann?
Gruß, Jürgen
Anzeige
1.000 DANK!!!
24.09.2009 14:34:49
Jürgen
Hallo Tino!
Funktioniert einwandfrei!
Vielen Dank für Deine Mühe!!!
Gruß, Jürgen
Mehrfachzeilen zu vermeiden...
24.09.2009 15:20:34
Tino
Hallo,
man den Code natürlich noch besser machen und Mehrfachzeilen vermeiden.
With RS 'Recortset
.FindFirst suchText
If .NoMatch Or (.EOF And .BOF) Then
'DS mit dieser ID nicht gefunden
.AddNew
.Fields(0) = Worksheets("Datenbank").Range("A2")
Else
'vorhanden wird Bearbeitet
.Edit
End If
.Fields(1) = Worksheets("Datenbank").Range("B2") ' BEZEICHNUN
.Fields(2) = Worksheets("Datenbank").Range("C2") ' Typ
.Update
.Close
End With
Gruß Tino
Anzeige

300 Forumthreads zu ähnlichen Themen


Hallo. Ich habe eine für mich sehr harte "Nuss" zu knacken. Ich habe über Excel ein Rechnungsprogramm erstellt. jetzt möchte ich diese Rechnung immer per e-mail versenden. Ich brauche eine Befehlsschaltföläche, die einen bestimmten Bereich als e_mail versendet. Also.... Die Schaltfläche sollte...
Anzeige

Hallo und schönen guten Morgen zusammen,
neues kleines Problem!
Ich möchte mit Hilfe eines Hyperlink per klick eine Email öffnen!
Soweit so gut und kein Problem!
Jetzt steht die Email Adresse aber nicht wirklich in der Zelle sondern diese hole ich mir per
Sverweises aus ein...

Hallo zusammen
Ich habe ein Problem und hoffe mir kann jemand helfen. Ich importiere in meine Tabelle csv.Dateien.
Vorher muss ich aber immer Access Tabellen in das csv.Format exportieren. Ich suche ein Makro was dieses für mich automatisch auf Button klick machen würde.
Also Datei...
Anzeige

Hallo zusammen,
Eine Frage hätte ich da noch zu dem Hyperlink!
Richard hatte mir schon geholfen…
danke für deine Hilfe!! Du bist auf dem richtigen Weg!!
Deine Formel ist gut!!
(Na ja und hier kannst du die Daten auch per SVERWEIS ziehen.)
Was ich meine ist genau aus eine...

Ich bin zwar in der Lage Emails von Excel/VBA via Outlook abzusenden.
Jetzt würde ich jedoch gerne via VBA/Excel Emails einlesen, den Header der eingehenden Email auslesen und danach die Email wieder löschen.
Danke für die Unterstützung.
Grüße
Peter

Hallo,
ich versende mit dem folgenden Code ( von Rene Holtz - Danke !!!)
eine Mail mit Outlook.
Private Sub CommandButton2_Click() '* 11.01.2008, 15:50:00 * '* erstellt von Rene Holtz, http://www.rholtz-office.de _ a> '* rene.holtz@rholtz-office....
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige