Avatar billede janvogt Praktikant
03. juni 2002 - 15:55 Der er 6 kommentarer og
1 løsning

VBA userform-kode til opdatering af database

Jeg har et Excel-ark med en database. Databasen består af 4 kolonner med følgende felter: Måned, værdi1, værdi2 og værdi3.
Databasen kan højst indeholde 12 poster - én til hver måned.

Til opdatering af databasen har jeg en userform, hvor jeg har en Combo-box til måneden og 3 text-bokse til værdi1, værdi2 og værdi 3.

Derudover har jeg en OK og en Annuler knap på userformen.

Hvordan skal VBA-koden til OK-knappen se ud, når jeg ønsker at databasen skal opdateres korrekt.
Står der en værdi for den pågældende måned i forvejen skal den bare overskrives.
Avatar billede janvogt Praktikant
03. juni 2002 - 15:58 #1
Hvis det skulle laves i alm. Excel ville jeg bruge INDEKS og FORSKYDNING til at opdatere databasen. Men hvordan ville det se ud i VBA?
Avatar billede bak Forsker
03. juni 2002 - 16:19 #2
Hvis din database starte i A1 med iverskrifter
Private Sub CommandButton1_Click()
Range("a1").Offset(ComboBox1.ListIndex + 1, 1) = textBox1.Value
Range("a1").Offset(ComboBox1.ListIndex + 1, 2) = textBox2.Value
Range("a1").Offset(ComboBox1.ListIndex + 1, 3) = textBox3.Value
End Sub
Avatar billede bak Forsker
03. juni 2002 - 16:20 #3
iverskrifter = overskrifter
Avatar billede rvm Nybegynder
03. juni 2002 - 16:28 #4
her er en kode til opdatering af databasen (skal sikkert modificeres lidt *S*)

Sub cmdOK_Click()
tekst1 = "1"
tekst2 = "2"
tekst3 = "3"
'
Set Db = OpenDatabase(Name:="C:\Brugeroplysninger.mdb") ' Databasen
Set RS = Db.OpenRecordset(Name:="bruger") ' den aktuelle tabel

For i = 0 To RS.RecordCount - 1

    If ComboBox.Value = RS.Fields(0).Value Then 'Måneden
        RS.Edit
        RS.Fields(1).Value = tekst1
        RS.Fields(2).Value = tekst2
        RS.Fields(3).Value = tekst2
        RS.Update
        Exit For
    End If
    RS.MoveNext
Next i
End Sub
Avatar billede janvogt Praktikant
03. juni 2002 - 17:18 #5
Tak Bak, lige hvad jeg skulle bruge med både INDEX og OFFSET :-)

Lige et lille tillægsspørgsmål:
Hvordan vil koden til ComboBox1_Change se ud, hvis jeg nu ønsker at text-boksene skal opdateres hver gang man vælger en ny måned?
Så man således får mulighed for at "bladre" i værdierne og evt. ændre ved at trykke "OK".
Avatar billede bak Forsker
03. juni 2002 - 17:51 #6
Lige omvendt, Jan
Private Sub ComboBox1_Change()
TextBox1.Value = Range("a1").Offset(ComboBox1.ListIndex + 1, 1)
TextBox2.Value = Range("a1").Offset(ComboBox1.ListIndex + 1, 2)
TextBox3.Value = Range("a1").Offset(ComboBox1.ListIndex + 1, 3)
End Sub
Avatar billede janvogt Praktikant
04. juni 2002 - 08:33 #7
Åh ja, det er klart.
Var i gang med at eksperimentere med noget opslag, men det er jo slet ikke nødvendigt.

Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester