Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1600to1604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel 2 Access

Excel 2 Access
20.01.2018 21:51:25
Hermann
Hallo liebe Excelgemeinde,Mein Gruß zuvor,
ich versuche Exceldaten in eine Accessdatenbank zu speichern.
Wenn allerdings ein Datensatz schon vorhanden ist soll kein neuer angelegt werden, sondern nur der vorhandene überschrieben werden.
dieser Quellcode führt in der Zeile FindFirst immer wieder zu einem Abbruch.
Woran könnte das liegen?
Müssen die[] klammern sein?
SuchText = "[Teilenr] = '" & Left(Worksheets("Auswertung").Cells(a, 5).Value, 13) & "'
Ich würde mich sehr über eine Tip freuen.
Gruß
Hermann
Sub AccessSammler()
' 2018.01.20 es funktioniert
' 2018.01.05 HS hat Makro angefangen
Dim DB1 As Database      'definiert DB1 als Datenbank
Dim RS1 As Recordset     'definiert RS1 als Tabelle
Dim SuchText As String
Set Db = OpenDatabase("f:\Kalkulation\000Excel-Kalk-Sammler.accdb") ' öffnen AccessDatenbank
Set TB = Db.OpenRecordset("kalkSammel", dbOpenTable) 'öffnet Accesstabelle Anmeldungen
For a = 4 To 17
With TB
If Len(Worksheets("Auswertung").Cells(a, 5).Value) > 13 Then
SuchText = "Teilenr = '" & Left(Worksheets("Auswertung").Cells(a, 5).Value, 13) & "' _
_
" ' suchText
.FindFirst SuchText ' sucht den suchText
If .NoMatch Or (.EOF And .BOF) Then
.AddNew               'DS mit dieser ID nicht gefunden
Else
.Edit                 'vorhanden wird Bearbeitet
End If
.Fields("Teilenr").Value = Worksheets("Auswertung").Cells(a, 5).Value
.Fields("Menge").Value = Worksheets("Auswertung").Cells(a, 6).Value
.Fields("Su Aufträge").Value = Worksheets("Auswertung").Cells(a, 7).Value
.Fields("Delta-Preiseblatt").Value = Worksheets("Auswertung").Cells(a, 8).Value
.Fields("Delta-RüKo").Value = Worksheets("Auswertung").Cells(a, 9).Value
.Fields("Su VorgZeit").Value = Worksheets("Auswertung").Cells(a + 18, 7).Value
.Fields("Su VerbrZeit").Value = Worksheets("Auswertung").Cells(a + 18, 8).Value
.Fields("Su Kalk").Value = Worksheets("Auswertung").Cells(a + 18, 9).Value
.Update
End If
End With
Next a
End Sub

Mit freundlichen Grüßen

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel 2 Access
21.01.2018 08:39:56
Luschi
Hallo Hermann,
diese Kommentarzeile im geposteten Code ist doch reichlich übertrieben:
' 2018.01.20 es funktioniert
- Du erzeugst 2 dimensionierte Variablen 'DB1' und 'RS1'
- benutzt sie aber nicht sondern greifst auf 2 andere Variablen zu
- Set DB = ... bzw. Set RS = ...
- bei OpenDatabase(...) fehlt laut Vba-Hilfe der Verweis auf Workbooks.OpenDatabase(...)
- dann funktioniert es aber immer noch nicht,
- denn dieser Aufruf hat noch mehr Übergabe-Parameter, die die Verbindungseigenschaften beschreiben
- Excel kennt diese Variable nicht (dbOpenTable), denn die gehöhrt zu Access-Vba
Ich habe diese Methode noch nie verwendet sondern setze auf die Verbindungsmethode
'ADODB' oder 'DAO'. Diese Zugriffsmethoden konnte man zu 'Access 2.0 Zeiten' nur benutzen,
wenn man auch Access installiert hatte. Seit 'Windows XP SP3' sind sie in jedem Windows verankert.
Meine Empfehlung:
- mache 2 kleine Demo-Dateien (Access.accdb und Excel.xlsm)
- lade sie hier hoch
- und ich bzw. andere Helferlein zeigen wie es geht.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Excel 2 Access
21.01.2018 10:53:43
Hermann
Hallo Luschi
vielen Dank für Deine schnelle Rückmeldung. Da ich VBA nicht beherrsche kann ich mich nur mit diversen Einträgen im www zum Ziel hinarbeiten.
Das führt zu unerklärlichen Doppelungen und veralteten Vorgehensweisen
Es geht auch im Moment nur die Funktionalität ".FindFirst" nicht die doppelte Einträge verhindern soll
ich konnte leider die Access Datenbank als Datei nicht hochladen
dennoch Würde mich SEHR über Unterstützung freuen
Gruß
Hermann
AW: Excel 2 Access
21.01.2018 16:54:26
Luschi
Hallo Hermann,
bevor Excel überhaupt Daten an Access schicken kann. muß Excel erstmal mit der entsprechen den Access.DB sich verbinden. Dein geposteter Code kann das bisher nicht, deshalb ist auch der nachfolgende Schritt nicht möglich.
Wenn Du keine kleine Exceldatei bereitstellst, wo 3-4 Datenzeilen drinstehen und die dazugehörige Access-DB, der die Daten aufnehmen soll, dann mußt Du warten, der dazu Lust hat - meine Schatzkiste bleibt damit zu.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Excel 2 Access
21.01.2018 20:22:42
Hermann
ich hatte doch eine Exceldatei bereitgestellt. Allerdings den Link nicht eingefügt
entschuldige bitte.
hier die Exceldatei
https://www.herber.de/bbs/user/119152.xls
und hier die Accessdatenbank
https://www.herber.de/bbs/user/119153.zip
Die Verknüpfung mit access hat schon funktioniert, jedoch die Abfrage ob der Datensatz schon vorhanden ist nicht
somit habe ich immer neue Datensätze eingestellt bekommen. Damit war alles doppelt und dreifach drin
Hier das Makro was funktionierte und die Werte in die Accessdatei schrieb, allerdings mit doppelten einträgen
Sub AccessSammler()
' 2018.01.20 es funktioniert
' 2018.01.05 HS hat Makro angefangen
Dim DB1 As Database 'definiert DB1 als Datenbank
Dim RS1 As Recordset 'definiert RS1 als Tabelle
Set Db = OpenDatabase("f:\Kalkulation\000Excel-Kalk-Sammler.accdb") ' öffnen AccessDatenbank
Set TB = Db.OpenRecordset("kalkSammel", dbOpenTable) 'öffnet Accesstabelle Anmeldungen
For a = 4 To 17
With TB
If Len(Worksheets("Auswertung").Cells(4, 5).Value) > 13 Then
.AddNew
.Fields(1) = Worksheets("Auswertung").Cells(4, 5).Value
.Fields(2) = Worksheets("Auswertung").Cells(4, 6).Value
.Fields(3) = Worksheets("Auswertung").Cells(4, 7).Value
.Fields(4) = Worksheets("Auswertung").Cells(4, 8).Value
.Fields(5) = Worksheets("Auswertung").Cells(4, 9).Value
.Fields(6) = Worksheets("Auswertung").Cells(22, 7).Value
.Fields(7) = Worksheets("Auswertung").Cells(22, 8).Value
.Fields(7) = Worksheets("Auswertung").Cells(22, 9).Value
.Update
End If
End With
Next a
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige