Tags:
visual-basic
Hej.
Er der nogen der kan fortælle mig hvordan
jeg kan åbne en database (DAO) med "readonly"
og så ændre i databasen, for så til sidst
gemme databasen?
Jeg bruger VB 6.0
V.H kim.
4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
0
Uden at vide noget som helst om databasekommunikation i VB, så vil jeg umiddelbart sige, ud fra det angivne navn "readonly", at det er umuligt; da det jo som navnet siger: redonly. Altså kun læseadgang <b>ikke</b> skriveadgang.
Mikl
mikl@mikl.dk
www.mikl.dk
0
<quote>Hej.
Er der nogen der kan fortælle mig hvordan
jeg kan åbne en database (DAO) med "readonly"
og så ændre i databasen, for så til sidst
gemme databasen?
Jeg bruger VB 6.0
V.H kim.</quote>
Du skal fjerne readonly for at at kune skrive til den!
det er ikke sikkert du kan kna gøre det fra vb, men skal gøre det fra hvor du har lavet databsen
eller filen må ikke være skrivebeskyttet.
0
<quote>Hej.
Er der nogen der kan fortælle mig hvordan
jeg kan åbne en database (DAO) med "readonly"
og så ændre i databasen, for så til sidst
gemme databasen?
Jeg bruger VB 6.0
V.H kim.
Du skal fjerne readonly for at at kune skrive til den!
det er ikke sikkert du kan kna gøre det fra vb, men skal gøre det fra hvor du har lavet databsen
eller filen må ikke være skrivebeskyttet.
</quote>
Hej igen.
Jeg tror ikke jeg har formuleret mig godt nok.
Min kode kan godt gemme, men det skal den ikke før jeg siger til.
Her er koden.
Først åbner vi databasen:
Public db As Database
Public rsGruppe As Recordset
SetBdb = DBEngine.Workspaces(0). _
OpenDatabase("d:\\test.mdb")
Set rsGruppe = db.OpenRecordset("Gruppe", dbOpenDynaset)
Nu er den så åben, så ændre vi i den:
rsGruppe.MoveFirst
rsGruppe.Edit
rsGruppe!Group = "blabla"
rsGruppe.Update ' Det er her den gemmer databasen
Problemet er at den først skal gemme databasen på harddisken når der bliver trykket på en knap.
Den skal huske ændringerne i recordset men ikke gemme det på harddisken.
Håber det gav lidt mening.
V.H kim
0
<quote>Hej igen.
Jeg tror ikke jeg har formuleret mig godt nok.
Min kode kan godt gemme, men det skal den ikke før jeg siger til.
Her er koden.
Først åbner vi databasen:
Public db As Database
Public rsGruppe As Recordset
SetBdb = DBEngine.Workspaces(0). _
OpenDatabase("d:\\test.mdb")
Set rsGruppe = db.OpenRecordset("Gruppe", dbOpenDynaset)
Nu er den så åben, så ændre vi i den:
rsGruppe.MoveFirst
rsGruppe.Edit
rsGruppe!Group = "blabla"
rsGruppe.Update ' Det er her den gemmer databasen
Problemet er at den først skal gemme databasen på harddisken når der bliver trykket på en knap.
Den skal huske ændringerne i recordset men ikke gemme det på harddisken.
Håber det gav lidt mening.
V.H kim
</quote>
Har selv fundet ud af det.
Koden indlæser databasen og lukker den igen.
Så kan du bare ændre lige så meget du vil, men den gemmer det kun i ramen.
Når du så trykker på en knap, så gemmer den det på harddisken.
Her er koden.
Dim cnContacts As ADODB.Connection
Dim rsContacts As ADODB.Recordset
Private Sub Form_Load()
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & "D:\\test.mdb" & ";"
Set cnContacts = New ADODB.Connection
Set rsContacts = New ADODB.Recordset
If cnContacts.State = adStateClosed Then
cnContacts.CursorLocation = adUseClient
cnContacts.Open strConn
End If
' Gruppe = Tabel navn , Group = Kolonne
rsContacts.Open "SELECT * FROM Gruppe ORDER BY Group", cnContacts, adOpenStatic, adLockBatchOptimistic, adCmdText
Set rsContacts.ActiveConnection = Nothing
cnContacts.Close
rsContacts.MoveFirst
Text1.Text = rsContacts!Group
rsContacts!Group = "BlaBla"
rsContacts.Update
rsContacts.MoveNext
rsContacts!Group = "BlaBla2"
rsContacts.Update
rsContacts.MoveFirst
Text2.Text = rsContacts!Group ' Den nye tekst
End Sub
Private Sub Save_Click()
cnContacts.Open
Set rsContacts.ActiveConnection = cnContacts
rsContacts.UpdateBatch
Set rsContacts.ActiveConnection = Nothing
cnContacts.Close
End Sub
V.H kim