Åbne, ændre og Gemme en db i readonly?

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
Sorter efter stemmer Sorter efter dato
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



<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.




<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




<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





t