Ret data
Beskrivelse
Ret data
Nu har vi fundet ud af at danne et recordset og finde de rigtige poster i dem - så mangler vi bare at kunne redigere og oprette nye poster i recordsettet. Og det har vi sjovt nok en række metoder på recordsettet til:
- Edit: Laver en kopi af den aktuelle post i recordsettet og gør det klar til redigering
- AddNew: Opretter en ny post med default værdier (hvis der er nogle)
- Update: Gemmer de ændringer der er lavet
- CancelUpdate: Rydder op og glemmer de ændringer der er lavet
- Delete: Sletter den aktuelle post
Et eksempel kunne se sådan her ud:
Do While Not rs.EOF
rs.Edit
rs("Firma") = UCase(rs("Firma"))
rs.Update
rs.MoveNext
Loop Øvelse
Opret en kopi af databasen fra forrige øvelse og kald den "RetData.mdb"
Prøv ovenstående
Lav også en knap der sletter en post - uden at spørge brugeren. I den forbindelse kan det være nyttigt at kende ShowAllRecords metoden til DoCmd objektet, som man kan kalde efter man har slettet posten.
Du skal nok lige lave en backup af din database inden du går i gang med at slette for mange poster.
Pak databasen sammen eller omdøb den og send den til mig.
Løsning
Du kan se mit forslag til løsningen her.
Jeg har hygget mig med at arbejde lidt videre på koden:

Sub SkiftTilStorebogstaver() Dim db As Database Dim rs As Recordset Dim store As Boolean Set db = CurrentDb Set rs = db.OpenRecordset("Kunder") store = (MsgBox("Skal der skiftes til store bogstaver (hvis du svarer nej skiftes til små)", vbYesNo) = vbYes) Do While Not rs.EOF rs.Edit If store Then rs("Firma") = UCase(rs("Firma")) Else rs("Firma") = LCase(rs("Firma")) End If rs.Update rs.MoveNext Loop rs.Close Set rs = Nothing Set db = Nothing End Sub Sub sletpost(Optional Kundenr) Dim db As Database Dim rs As Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Kunder") If Kundenr = "" Then Kundenr = InputBox("Hvilken kunde skal slettes? ", "Slet kunde") If IsNumeric(Kundenr) Then rs.Index = "PrimaryKey" rs.Seek "=", Kundenr If rs.NoMatch Then MsgBox "Kunden blev ikke fundet" Else rs.Delete DoCmd.ShowAllRecords End If End If rs.Close Set rs = Nothing Set db = Nothing End Sub Private Sub cmdSlet_Click() sletpost cboKunder.Value End Sub Private Sub cmdSletKunde_Click() sletpost End Sub Private Sub cmdSQLLoop_Click() SQLList End Sub Private Sub cmdVisKunder_Click() DoCmd.OpenTable "Kunder" End Sub Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →