Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
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

mit ADO und SQL einen Datensatz abrufen und aktual

mit ADO und SQL einen Datensatz abrufen und aktual
elMike
Hallo IT Freunde,
ich erstelle eine Abfrage mit ADO+SQL und möchte den abgefragten Datensatz verändern. Mein Code sieht folgendermaßen aus:
Sub Test4()
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Users\Micha\Documents\My Dropbox\\Test.xls;" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
objRecordset.Open "SELECT DISTINCT * FROM [Data$] where Monat = 'November' and Jahr = 2009 and [ _
_
Kostenstelle] ='BBC001'" & _
"and [Kosten / Umsatz] ='Monatsgehalt'", objConnection, adOpenStatic, adLockOptimistic,  _
adCmdText
Do Until objRecordset.EOF
Debug.Print objRecordset.Fields.Item("Name")
objRecordset.Fields.Item("RNR") = "HD"
objRecordset.Update
objRecordset.MoveNext
Loop
End Sub

an der Stelle "objRecordset.Fields.Item("RNR") = "HD" bekomme ich eine Fehlermeldung: "Aktualisieren nicht möglich, Datenbank oder Objekt ist schreibgeschützt". Habe es schon mit "objRecordset.Edit" versucht, liefert aber ebenfalls eine Fehlermeldung.
Alle Recherche bzgl. adOpenStatic + adLockOptimistic hat mir nicht wirklich weitergeholfen. Die Antwort ist sicherlich ganz einfach - nur finde ich sie leider nicht.
Wäre super, wenn einer von Euch eine Idee hätte ..
Grüße

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: mit ADO und SQL einen Datensatz abrufen und aktual
21.02.2011 17:53:35
Oberschlumpf
Hi
Wenn ich per Excel eine Access-DB aktualisieren will, mach ich das im Prinzip so:
Sub sbAccUpd()
Dim ldbDB As Database
Dim lrsRS As Recordset
Set ldbDB = OpenDatabase(ThisWorkbook.Path & "\Datenbank.mdb", , ReadOnly:=False)
suchtxt = "SELECT Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7 FROM TABELLE WHERE ((( _
Feld1) = " & Chr(34) & "WERT" & Chr(34) & "));"
Set lrsRS = ldbDVD.OpenRecordset(suchtxt)
With lrsRS
.MoveFirst
.Edit
!Bewertung = frmAnzeige.cmbBewOnce.Text
.Update
.Close
End With
Set lrsDVD = Nothing
Set ldbDB = Nothing
End Sub

Mit diesem Konstrukt wird zwar nur nach 1 Treffer gesucht, aber vllt kannst du das an deine Wünsche anpassen.
Hilfts?
Ciao
Thorsten
Anzeige
AW: mit ADO und SQL einen Datensatz abrufen und aktual
21.02.2011 18:28:15
elMike
Hi Torsten,
die zwei Zeilen: "suchtxt = ... " sind bei mir rot und wenn ich mit F8 durchgehen möchte, wird "ldbDB As Database" markiert und eine Fehlermeldung erscheint "benutzerdefinierter Typ nicht definiert"
Hast Du vielleicht irgendwelche Verweise gesetzt ?
Grüße
Micha
AW: mit ADO und SQL einen Datensatz abrufen und aktual
21.02.2011 22:05:48
Oberschlumpf
Hi Mike
Ja, stimmt, hast Recht.
Ich vergaß zu erwähnen, dass ein Verweis auf
Microsoft DAO 3.6 Object Library
gesetzt ist.
Läufts nun auch bei dir?
Ciao
Thorsten
ps
für !Bewertung muss im Bsp-Code übrigens !Feld4 stehen.
Hatte vergessen, !Bewertung aus meinem Originalcode in !Feld4 zu ändern.
Anzeige
AW: mit ADO und SQL einen Datensatz abrufen und aktual
22.02.2011 07:44:09
elMike
Hi Torsten,
leider keine guten Nachrichten :(
Zum einen wird eine .xlsm Datei nicht akzeptiert, sonst bekomme ich
hier eine Fehlermeldung "Set ldbDB = OpenDatabase(ThisWorkbook.Path & "\Test.xlsm", , ReadOnly:=False)"
Des Weiteren ist dieser Teil immer noch rot:
suchtxt = "SELECT Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7 FROM TABELLE WHERE ((( _
Feld1) = " & Chr(34) & "WERT" & Chr(34) & "));"
ich hatte den suchttxtx-Teil so abgeändert:
suchtxt = "Select Typenbezeichnung from Turbine where (((Hersteller)= 'DeWind'));"
aber er sagt mir an dieser Stelle:
Set lrsRS = ldbDVD.OpenRecordset(suchtxt)
kein Objekt gefunden.
bin leider etwas ratlos ..
Grüße
Micha
Anzeige
hatte dich falsch verstanden
22.02.2011 10:52:44
Oberschlumpf
Hi Mike
Hmm...ok..ich glaube, ich muss zurückrudern und wohl zugeben, dass ich mir deine Erstffrage nicht ricthig durchlas.
Ich las eigtl nur die Überschrift:
mit ADO und SQL einen Datensatz abrufen und aktual
Und wenn ich ADO und/oder SQL lese, assoziiere ich das automatisch mit ACCESS nicht mit Excel.
Aber nun stelle ich fest, dass du mit ADO auf eine Excel-Datei zugreifen willst.
Mein Codebsp. "erwartet" aber eine Access-Datei.
Na ja, ich lass den Thread mal offen, da ich ab hier leider nicht weiterhelfen kann.
Ciao
Thorsten
AW: hatte dich falsch verstanden
22.02.2011 11:28:46
elMike
Hallo Thorsten,
trotzdem Danke für Deinen Hilfeversuch !
Hat noch jemand eine Idee ?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige