20. juni 2003 - 11:18Der er
21 kommentarer og 1 løsning
Brugeroplysninger - variable data i opslagstabeller
I en database ønsker jeg at give brugerne mulighed for selv at definere visse data i opslagstabeller. Dette skal enten foregå ved at oprette en knap med en handling "ved klik" eller også skal det kunne vælges i menuen øverst...
Ex:
I et formularfelt (liste eller komb.boks) - baseret på en opslagstabel med navnet "Sted" - skal brugeren selv kunne definere forskellige arbejdssteder (Ubberodløse plejehjem, Sindal dækservice, Lokalavisen etc. etc.
Med andre ord en brugervenlig ændring af en tabels indhold...
Hvordan kan dette gøres mest hensigtsmæssigt, så bruger ikke selv skal sætte sig ind i Access?
Da det nok er et omfattende spørgsmål, sætter jeg 150 points på spil, som så kan fordeles, når jeg har fået det til at virke.
kan du ikke bare lave en formular der vise dataerne i tabellen også lave nogle knapper til at oprette nye og rette de gamle. (det er det man bruger formulare til :-) )
ja den forspøgelse du bygger din liste på den bruger du til at lave en formular , du kan jo evt bruge guiden formular. hvis du har lavet din sql direkte i listen kan du åbne den og trykke "save" så kan du gemme den som en forspørgelse og derefter bruge den til at lave din formular.
Indsæt denne kode i en komboboks ved hændelsen Vedikkepåliste
Private Sub Kategori_NotInList(NewData As String, Response As Integer) On Error GoTo err_Kategori_NotInList
Dim ctl As Control Dim strSQL As String
' Returner markeringen til combo box. Set ctl = Me!Kategori ' Anmoder brugeren bekræfte at ny data skal tilføjes. If MsgBox("Kategorien er ikke på listen, skal den tilføjes?", vbOKCancel) = vbOK Then ' Set Response argument, for at vise at data bliver tilføjet. Response = acDataErrAdded ' Tilføj tekst til ny post i kategori tabellen. NewData = Proper(NewData) strSQL = " INSERT INTO Kategori ( Kategori ) SELECT '" & Proper(NewData) & "'" DoCmd.SetWarnings False DoCmd.RunSQL strSQL ctl.Value = NewData DoCmd.SetWarnings True Else ' Hvis bruger vælger Cancel, udelad fejlmeddelelse og slet ændringer. Response = acDataErrContinue ctl.Undo End If
exit_Kategori_NotInList: Exit Sub
err_Kategori_NotInList: If Err = 2113 Then Err = 0 Resume Next Else MsgBox Str(Err) MsgBox Err.Description Resume exit_Kategori_NotInList End If End Sub
Hvis brugeren indtaster noget som ikke er i tabellen bliver vedkommende spurgt er ikke på listen, skal den tilføjes?
Tak for tilbuddet, Juks. Det var sødt af dig. Men jeg vil helst selv lave det, så jeg bevarer overblikket helt.
Rosco.. den eksempeldatabase vil jeg meget gerne se. Du kan sende den på nbo@mail.dk - men lav extension om til txt eller zip - ellers kommer den ikke frem til mig (jeg er på netværk).
Du laver en formular baseret på opslagstabellen Og indsætter feltet "Sted".
I din Komboboks , ved Dobbeltklik indsætter du denne kode
On Error GoTo Err_Kommandoknap97_Click
Dim stDocName As String Dim stLinkCriteria As String 'Åbner formularen Retsletsted stDocName = "RetsletSted" DoCmd.OpenForm stDocName, , , stLinkCriteria
Private Sub SletPost_Click() On Error GoTo Err_SletPost_Click
DoCmd.SetWarnings False 'Sted er navnet på feltet If MsgBox("Vil du slette stedet " + vbLf + Me.Sted + vbLf + "Sletning kan ikke fortrydes!", _ vbQuestion + vbYesNo + vbQuestion + vbDefaultButton2, _ "Slette ?") = vbYes Then DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdDeleteRecord End If Me.Requery
Exit_SletPost_Click: DoCmd.SetWarnings True Exit Sub
Jeg bli'r en smule svimmel... Feltet "slet" i den nye formular.... Er det en tekstboks, en komb.boks eller hvad? I hvilken af formularerne placeres slet-knappen?
Og endelig... HVad hvis der er mange opslagstabeller knyttet til hovedformularen, som skal defineres af brugeren... er dette så den bedste løsning? (ex: Sted.. Tid)
Har du mulighed for at sende mig din db. Ikkke fordi jeg vil lave det for dig, men så ved jeg bedre hvad du skal bruge og gøre. Min mail er erlenbach@adslhome.dk
Dine relationer ville have givet dig problemer med at opdatere listerne eks. relationen mellen tbl Kirker og grundtabel skal gå mellem id.kirker og kirke.grundtabel.
Forespørgslen skal indeholde både id og kirke med id som første kolonne.
Egenskaben for Komboboksen skal så være Data: Bundet kolonne 1
Glæder mig at jeg kunne hjælpe. En sidste bemærkning Dine primærnøgler bør hedde mere end ID, hvis du får brug for at henvise til en primærnøgle vil din db ikke kunne vide hvilken, hvis der er mere end en i en forespørgsel. fortsat god fornøjelse.
Synes godt om
Ny brugerNybegynder
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.