n4426
Goto Top

Datenänderung in Access 2007-DB mittels VBS funktioniert nicht (Fehler-Code 800A0CB3)

Hallo,

ich komm da einfach nicht weiter. Ich bin dabei mir ein VBS-Script zu schreiben, das mir nach bestimten Kriterien eine änderung an einzelnen Datensätzen in einer Access 2007 Datenbank vornimmt.

Hier das Script (*.vbs)


Dim DBConnection, TicketTBL, ErgebinsTickets 

Set DBConnection = CreateObject("ADODB.Connection")  


DBConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Datenbank\DB.accdb;Persist Security Info=False;"  

Set TicketTBL = CreateObject("ADODB.Recordset")  
	' Verwendete Connection festlegen  
	TicketTBL.ActiveConnection = DBConnection
	' Zugriffsart festlegen  
	TicketTBL.CursorType = 0
	' Sperrart festlegen  
	TicketTBL.LockType = 2
	TicketTBL.Source="TBL_Tickets"  
	' Tabelle öffnen  
	TicketTBL.Open



	Set ErgebinsTickets = DBConnection.Execute("SELECT * FROM [TBL_Tickets] WHERE (((TBL_Tickets.TicketStatus)=8) AND ((TBL_Tickets.WiedervorlageDatum)<Now()))")   
	If ErgebinsTickets.EOF Then
        Else


        ErgebinsTickets.MoveFirst
        Do Until ErgebinsTickets.EOF = True

        
            'Ticket-Tabelle  
            
                ErgebinsTickets("TicketStatus") = 1  
                ErgebinsTickets("WiedervorlageDatum") = Null  
                ErgebinsTickets("LastEditUser") = "SYSTEM"  
                ErgebinsTickets("LastEditDatum") = Date + Time  
        
        
            ErgebinsTickets.Update
        
        ErgebinsTickets.MoveNext
        Loop



	End if

DBConnection.Close 

Wenn ich dieses ausführe, bekomme ich diese fehlermeldung.

56f72573b54bef1c0f6e0f6dff8d8f30-fehler

Soweit ich diese lese liegt es irgendiw an dem CursorType und dem LockType. Ich hab verschiedene ausprobiert, aber ohne erfolg. (Das ausgenen der Werte aus der Tabelle funktioniert einwandfrei)

Fällt euch vieleicht ein, warum der fehler andauernd kommt.

Vielen Dank im voraus.

mfg
andi

Content-ID: 108983

Url: https://administrator.de/contentid/108983

Ausgedruckt am: 24.11.2024 um 09:11 Uhr

n4426
n4426 15.02.2009 um 15:37:34 Uhr
Goto Top
hab gestern noch lang rumprobiert und hab dann ein funktionierendes Script zusammengebastelt.

Option Explicit

'---- CursorTypeEnum Values ----  
Const adOpenForwardOnly = 0
' Const adOpenKeyset = 1  
' Const adOpenDynamic = 2  
' Const adOpenStatic = 3  

'---- LockTypeEnum Values ----  
' Const adLockReadOnly = 1  
Const adLockPessimistic = 2
' Const adLockOptimistic = 3  
' Const adLockBatchOptimistic = 4  

'---- CursorLocationEnum Values ----  
' Const adUseServer = 2  
Const adUseClient = 3

'---- ConnectModeEnum Values ----  
' Const adModeUnknown = 0  
' Const adModeRead = 1  
' Const adModeWrite = 2  
Const adModeReadWrite = 3
' Const adModeShareDenyRead = 4  
' Const adModeShareDenyWrite = 8  
' Const adModeShareExclusive = &Hc  
' Const adModeShareDenyNone = &H10  
' Const adModeRecursive = &H400000  

Dim Conn, RS, RS2

Set Conn = CreateObject("ADODB.Connection")  
Conn.Provider = "Microsoft.ACE.OLEDB.12.0"  
Conn.Mode = adModeReadWrite
Conn.CursorLocation = adUseClient
Conn.Open "D:\Datenbank\DB.accdb"  


Set RS = CreateObject("ADODB.Recordset")  
RS.CursorLocation = adUseClient
RS.Source = "SELECT * FROM [TBL_Tickets] WHERE (((TBL_Tickets.TicketStatus)=8) AND ((TBL_Tickets.WiedervorlageDatum)<Now()));"  
Set RS.ActiveConnection = Conn
RS.CursorType = adOpenForwardOnly
RS.LockType = adLockPessimistic
RS.Open  

Do While Not RS.EOF

		RS.Fields.Item("TicketStatus").Value = 1  
		RS.Fields.Item("WiedervorlageDatum").Value = Null  
		RS.Fields.Item("LastEditUser").Value = "SYSTEM"  
		RS.Fields.Item("LastEditDatum").Value = Date + Time  
    RS.MoveNext
Loop

RS.Close
Set RS = Nothing

Conn.Close
Set Conn = Nothing