20. marts 2013 - 14:09Der er
8 kommentarer og 1 løsning
Tilrettet forespørgsel (kolonner) ud fra brugervalg uden at gå i designmode.
Access 2007. Jeg vil gerne sende en liste med en masse programmer ud til en række brugere (>200), hvor hver enkelt bruger blot i et afkrydsningsfelt markerer om de anvender det enkelte program eller ej. Det forestiller jeg mig at gøre i en FrontEnd - Backend Access-databaseløsning, hvor jeg i Backend databasen har en tabel med alle programmerne og en kolonne for hvert brugernavn med ene afkrydsningsfelter (ja/nej) (i princippet blot et regneark). Så vil jeg gerne lave en forespørgsel, som udtrækker samtlige programmer (programkolonnen) og brugerkolonnen (den enkelte brugers afkrydsningskolonne). Fungerende på den måde, at når en bruger i en FrontEnd-DB i en opstartsformular i et felt med en liste over samtlige brugere vælger sit eget brugernavn, så åbnes en forespørgsel med de 2 kolonner (programkolonnen, den enkelte brugers afkrydsningskolonne), hvor brugeren så krydser af og lukker ned igen. Afkrydsningerne havner i den samlede tabel i backend-databasen. Mit spørgsmål: Hvordan laver jeg koblingen mellem det valgte brugernavn i opstartsfomularens liste og forespørgselen, så den rigtige kolonne kommer med. - Altså hvordan får jeg det valgte brugernavn f.eks. "ADTHA" til at bevirke at den forespørgsel der åbner består af Programkolonnen og ADTHA-kolonnen ? - Vel at mærke uden at brugeren skal åbne forespørgselen i desigmode.
Det må kunne klares med en lille krølle i stil med:
Sub DinSub() Const Qname = "DinQuery" Const BrugerNavn = "ADTHA" Dim Q As QueryDef
On Error Resume Next 'Første gang findes forespørgslen jo ikke CurrentDb.QueryDefs.Delete Qname On Error GoTo 0
Set Q = CurrentDb.CreateQueryDef(Qname, "SELECT Programnavn," & BrugerNavn & " FROM ProgrammerOgBrugere") Set Q = Nothing
DoCmd.OpenQuery Qname End Sub
(Udskift selv diverse navne)
Synes godt om
Slettet bruger
21. marts 2013 - 20:53#2
En kolonne til hver bruger er regnearkstænkning - og - om ønsket, præsentation fra databasen. Strukturen, på databasevis, som jeg ser det, vist med et eksempel:
tabel Apps ---------- id name 1 photoshop 2 word 3 excel 4 firefox
Læg mærke til at hvis en bruger ikke bruger et program, så findes der ingen post i AppsUse.
Følgende forespørgsel forudsætter at refererede form er åben:
SELECT [Apps].[id], [Apps].[name], -(select count (Apps.name) as useStatus from Apps as A inner JOIN AppsUse ON A.[id]=[AppsUse].[Appsid] where Apps.id=A.id and AppsUse.bruger=forms!AppsUseAdmin!tbruger ) AS usestatus FROM Apps;
forespørgslen, som ikke er opdaterbar, er datakilde i datadataark vist underformular til AppsUseAdmin Denne har et tekstkontrolelement, som er bundet til usestatus og har event'en
Private Sub BUses_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim sql If BUses Then sql = "Delete from AppsUse where bruger=""" & Parent.tbruger & """ and appsId=" & id Else sql = "insert into AppsUse values(""" & Parent.tbruger & """," & id & ")" End If CurrentDb.Execute sql Requery End Sub
--
Men det ville nu være mere automatisk med hostname.loginnavn som brugernavn - dermed funktioner i stedet for, både i forespørgsel og sql udtryk - og så ville der kun være bruge for en formular.
Synes godt om
Slettet bruger
21. marts 2013 - 21:10#3
"Denne har et tekstkontrolelement..." rettelse: afkrydsningsfelt i stedet for tekstkontrolelement
Tak for jeres forslag, hvor jeg hælder mest til fdata's forslag, måske fordi jeg ikke helt forstår det andet.
Men fdata - jeg har forsøgt mig med dit forslag uden held. Min Tabel hedder "Gisprogrammer", som har felterne "Id", "PROGRAM" samt alle brugerne (f.eks. "ADTHA"). Min forespørgsel hedder "Gisprogrammer_FSP", som har felterne "Id", "PROGRAM" samt en bruger (f.eks. "ADTHA") Min opstartsformular hedder "Datasikring - Opstartsformular", og brugernavnet hentes som et valg i en liste i feltet "[Kombinationsboks0]"
Kan du så guide mig lidt mere ?
PS: går på ferie fra i dag - så får nok ikke lige svaret tilbage før efter påske
Mange tak for hjælpen. det fungerede lige som jeg havde ønsket det. Super.
Eneste problem nu er at få slået sikkerhedsindstillingerne fra i den database som jeg vil sende ud, så den enkelte bruger ikke først skal vælge "Aktiver indholdet", altså at det er tilladt at afvikle det lille script.
Hvis du er i Access 2010 kan du klare det ved at tilføje stien til databasen her: Filer / Indstillinger / Sikkerhedscenter / Indstillinger for sikkerhedscenter / Placeringer, der er tillid til
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.