anoniem Geplaatst: 11 februari 2002 Delen Geplaatst: 11 februari 2002 In DAO gebruikte ik gewoon rs.edit om een record muteerbaar te maken, maar hoe moet dit in ADO ? Ik heb : Conn1.Open accessconnect Set rs1 = Conn1.Execute("Select * FROM tabel1 Where tabel1.nummer = 100") if rs1.eof = false then rs1("naam").value = " nieuw " rs1.update end if rs1.close conn1.close Quote Link naar reactie
anoniem Geplaatst: 11 februari 2002 Auteur Delen Geplaatst: 11 februari 2002 Ok, in ADO krijg je default altijd een recordset terug die je niet kan wijzigen. Je kan hem welm doorlopen, maar niet wijzigen. Wil je een recordset wijzigen, dan moet je wat properties aanpassen. Dim rsData As ADODB.Recordset Set rsData = New ADODB.Recordset With rsData .CursorLocation = adUseClient .CursorType = adOpenDynamic .Locktype = adLockBatchOptimistic End With ----- Je krijgt nu een recordset die je kunt wijzigen. Je gebruikt UpdateBatch om de wijzigingen door te voeren. Greetz Quote Link naar reactie
anoniem Geplaatst: 13 februari 2002 Auteur Delen Geplaatst: 13 februari 2002 Dank je. Eigenschap Cursorlocation heb ik echter niet en zou je een voorbeeld kunnen geven van een te wijzigen attribuut ? Quote Link naar reactie
anoniem Geplaatst: 13 februari 2002 Auteur Delen Geplaatst: 13 februari 2002 De CursorLocation property is pas beschikbaar van ADO versie 1.5. Het verdient aanbeveling een reference toe te voegen naar ADO versie 2.7. Wat betreft voorbeeld, een te wijzigen attribuut? Ligt eraan wat je wilt. De cursorlocation property houdt in dat wijzigingen worden gechached op de client wanneer deze op adUseCLient staat, en doormiddel van Update pas aan de server wordt doorgegeven. de waarde adUseServer houdt de server bezig maar is wel directer. In 9 van de 10 gevallen verdient adUseClient de voorkeur. Ik kan tot slot slechts een voorbeeld geven van het ophalen en updaten van gegevens in de database. Ik maak gebruik van een standaard connectie object, maar wat van belang is, is dat deze een connection (ADODB.Connection) teruggeeft. [code:1:0a812be4d4] Private m_objDBConnection As Object Private m_objConnection As ADODB.Connection Private m_rsData As ADODB.Recordset Public Sub updateDatabase(ByVal strName As String, _ ByVal intAge As Integer) Dim strSQL On Error Goto ErrUpdateDatabase Set m_objDBConnection = CreateObject("db_connection.clsConnection") Set m_objConnection = m_objDBConnection.GetADOConnection() strSQL = "SELECT name, age FROM EMP WHERE name = '" & strName & "'" Set m_rsData = New ADODB.Recordset With m_rsData .CursorLocation = adUseClient 'Cursor lokaal .ActiveConnection = m_objConnection .CursorType = adOpenDynamic 'Edit recorset, zowel voorwaarts als achterwaarts .LockType = adLockBatchOptimistic 'Tabellen worden pas bij update commando gelocked voor update . open strSQL End With If Not (m_rsData.BOF and m_rsData.EOF) Then With m_rsData !Age = intAge .UpdateBatch .Close End With msgBox("Record updated") Else MsgBox("No user found") End If Set m_objDBConnection = Nothing Set m_objConnection = Nothing Set m_rsData = Nothing Exit Sub ErrUpdateDatabase: App.LogEvent Err.Number & " " & Err.Description, vbLogEventTypeError End Sub [/code:1:0a812be4d4] Wellicht datje hier wat mee uit de voeten kunt... Greetz, Taz _________________ Live is all about priorities.<br> Was also known as Taz4fun... [ Dit Bericht is bewerkt door: Tazzie op 2002-02-13 10:11 ] [ Dit Bericht is bewerkt door: Tazzie op 2002-02-13 10:15 ] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen