RecordSet.Source = str Set RecordSet.ActiveConnection = Connection RecordSet.Open RecordSet.MoveFirst
Hvis jeg så skriver
RecordSet!Read = True
får jeg følgende fejlmeddelelse??
"Object or Provider is not capable of performing requested operation"
Hvad skyldes det?? Hvorfor kan jeg ikke få lov til at skrive til databasen?? Skal det gøre ved hjælp af SQL?? Jeg mener bare at have læst at det kan lade sig gøre på den viste måde! Er der noget jeg har glemt??
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
MoveFirst henter ikke data fra tabellen!!! Den sætter cursoren til at pege på det første element i databasen!!
Herefter kan man hente data ved hjælp af a = RecordSet!Read
Men hvorfor kan jeg ikke skrive til databasen???
Har løst problemet ved at undlade at bruge en database men nøjes med at bruge et Dynamisk Recordset! Skide smart! Men jeg vil nu gerne have løst mit lille mysterium alligevel i tilfælde af....... I ved!
Nu har jeg ikke vildt meget forstand på ADO/DAO/RDO og hvad det hedder alt sammen, og det er sikkert også rigtigt at MoveFirst ikke "henter data", men som jeg plejer at tilgå data, har jeg erfaring for, at når MoveFirst er kaldt er "RecordSet" også loadet med data fra første række i tabellen. Jeg har ikke prøvet din metode, men er det ikke umiddelbart til at sammenligne...?
Som jeg ser det åbner du en "læse-cursor" og er nødt til at bruge AddNew eller Edit, eller hur?
Test.mdb oprettet med 2 felter: 1: et id -> autonumber felt 2: et tekst -> Text felt
Nedenstående afviklet i VB, uden problemer
Private Sub Command1_Click() Dim objCnn As New ADODB.Connection Dim objRecordSet As New ADODB.Recordset Dim strConn As String
strConn = "Provider=Microsoft.Jet.OLEDB.3.51; Data Source=c:\dokumenter\test.mdb" objCnn.Open strConn objRecordSet.Open "TestTabel", objCnn, , adLockOptimistic objRecordSet.MoveFirst ' Først lister vi de allerede eksisterende rækker While Not objRecordSet.EOF MsgBox objRecordSet(1) objRecordSet.MoveNext Wend ' Så opdaterer vi den sidste række objRecordSet.MoveFirst objRecordSet(1) = "Denne række er opdateret via ADO " & Now objRecordSet.Update objRecordSet.AddNew objRecordSet(1) = "Denne række er indsat via ADO " & Now objRecordSet.Update objCnn.Close End Sub
Godt nok men det er jo ikke det jeg vil! Jeg vil ændre et felts værdi for en record eller række om du vil, der allerede eksistere! Ikke oprette en ny record!
Jeg overvejede også 'adLockOptimistic' undervejs, men koncentrerede mig mere om hvilke funktionaliteter du ville have understøttet, og som jeg skrev kunne du prøve med et cut and paste for at checke om det ikke kørte hos dig....
Så jeg forstår ikke hvad du mener med: "Så værsgo selvom jeg ikke er meget for det!"?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.