IT Fjernundervisning

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 →