Just nu i M3-nätverket
Gå till innehåll
R66

Access utbildningsregister

Rekommendera Poster

R66

Försöker få igång ett utbildningsregister i Access..

Nu är jag inte så kunnig som många andra och har egentligen följande fråga:

Jag kör en query och försöker få fram en lista på vilka personer som inte har gjort en viss utbildning.

Hur får jag access till att inte visa posterna för personerna som har gått en viss utbildning?

I tabellen så finns alla poster med på samtliga utbildningar men när jag kör den i scriptet så visar den alla posterna för den personen utom just den raden.

Jag vill inte att den som redan har gått utbildningen ska synas alls..

Så här ser det ut i sql:

 

SELECT DISTINCTROW Personal.Namn, Genomförda.Godkänd, Utbildningar.Kod, Genomförda.Datum
FROM Utbildningar INNER JOIN ((Chef INNER JOIN (Befattningar INNER JOIN (Avdelning INNER JOIN Personal ON Avdelning.ID = Personal.Avdelning_avdelning) ON Befattningar.ID = Personal.Befattningar_Befattning) ON Chef.ID = Personal.Chef) INNER JOIN Genomförda ON Personal.ID = Genomförda.Personal_Namn) ON Utbildningar.ID = Genomförda.Utbildningar_kod
WHERE (((Utbildningar.Kod)<>"EPP"))
ORDER BY Personal.Namn;

 

Jag vet inte riktigt hur jag ska kunna googla fram det heller så tacksam för lite input!

tmp_idg.jpg

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Automan

Hej!

Har inte använt Access speciellt mycket, men har kollat på din SQL samt din fråga.

 

Är svårt att svara utan att ha tillgång till den befintliga datan i tabellerna.

 

Men skulle börja med någonting som denna SQL

SELECT       Personal.Namn
       	    ,Genomförda.Godkänd
            ,Utbildningar.Kod
            ,Genomförda.Datum
FROM         Personal
INNER JOIN   Genomförda
WHERE        Personal.ID NOT IN (SELECT Personal_Namn FROM Genomförda)
INNER JOIN   Utbildningar
ON           Genomförda.Utbildningar_kod = Utbildningar.ID

Vet inte om du behöver anpassa SQL syntaxen för Access, men du vill få fram lista på den personal som ej gått en viss utbildning. Förmodligen kommer SQL:en ovan endast lista de som inte gått någon utbildning alls, men om du får den biten att fungera går det nog att anpassa för att få fram vilka av de tillgängliga utbildningar som en person inte har genomfört.

 

Har du möjlighet att lägga upp databasen som en fil i denna tråd? Du kan rensa bort känslig data, men finns tabellerna med och gärna med lite testdata så går det att prova sig fram.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
R66

Bra uppställning men något är fel ändå.. Får ett felmeddelande på FROM

Har provat lite fram och tillbaka men lyckas inte klura ut det. Hade verkligen uppskattat hjälp..

Utbildningar.zip

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

I din relationsbild så kopplar du Personal_Namn i tabellen Genomförda till ID i tabellen Personal. Är inte det lite märkligt? Tänker mig att ett namn (textsträng) sällan kommer vara samma/jämförbart med ett ID (nummer). Eller?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Automan
På 2020-04-22 på 08:26, skrev R66:

Har provat lite fram och tillbaka men lyckas inte klura ut det. Hade verkligen uppskattat hjälp..

Har kunnat öppna din databas i Access och börjat testa med olika SQL satser. Var länge sedan jag jobbade i Access, men det borde gå att få fram den information du vill få ut.

 

Återkommer då jag hunnit testa och prova mer.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Automan

Hej igen!

Följande SQL ger en lista över genomförda utbildningar

SELECT	 P.Namn AS PER_Namn
		,G.ID AS GEN_ID
		,G.Utbildningar_kod AS GEN_Utbildningar_kod
		,U.Kod AS UTB_Kod
		,U.Namn AS UTB_Namn
		,G.Personal_Namn AS GEN_Personal_Namn
		,G.Datum AS GEN_Datum
		,G.Godkänd AS GEN_Godkänd
FROM	 Personal P
INNER JOIN (Genomförda G
INNER JOIN Utbildningar U
ON		 G.Utbildningar_kod = U.ID)
ON       P.ID = G.Personal_Namn;

 

På 2020-04-21 på 16:26, skrev R66:

Jag vill inte att den som redan har gått utbildningen ska synas alls..

Problemet är att en person som inte har gått en viss utbildning kommer inte existera i tabellen Genomförda för den aktuella kombinationen av Utbildningar_kod och Personal_Namn.

 

Det du vill göra är att lista de personer som inte gått en viss utbildning, men har de inte gått utbildningen har du heller ingen rad att slå mot. Du har då tabellen Utbildningar och Personal, men ingen koppling mellan dem.

 

Vill du ha information om vilka i tabellen Personal som inte genomfört en viss utbildning behöver nog din databas byggas om med ytterligare en tabell. Kommer tyvärr inte på något bra sätt att lösa detta på.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Automan

Hej!

Om du lägger till alla kombinationer av Personal och Utbildningar i tabellen Genomförda och använder dig av fältet Godkänd som ett sätt att separera dem som genomfört en utbildning (Dvs. är godkänd) från de som ej genomfört en utbildning (Godkänd flaggan ej markerad) kommer du kunna söka fram personer som inte genomgått en viss utbildning

 

Följande SQL ger nu en lista över alla som Genomfört en utbildning

SELECT	 P.Namn AS PER_Namn
		,G.ID AS GEN_ID
		,G.Utbildningar_kod AS GEN_Utbildningar_kod
		,U.Kod AS UTB_Kod
		,U.Namn AS UTB_Namn
		,G.Personal_Namn AS GEN_Personal_Namn
		,G.Datum AS GEN_Datum
		,G.Godkänd AS GEN_Godkänd
FROM	 Personal P
INNER JOIN (Genomförda G
INNER JOIN Utbildningar U
ON		 G.Utbildningar_kod = U.ID)
ON       P.ID = G.Personal_Namn
WHERE 	 G.Godkänd <> 0;

Vill du istället lista all personal som ej genomgått en viss utbildning, kör följande SQL

SELECT	 P.Namn AS PER_Namn
		,G.ID AS GEN_ID
		,G.Utbildningar_kod AS GEN_Utbildningar_kod
		,U.Kod AS UTB_Kod
		,U.Namn AS UTB_Namn
		,G.Personal_Namn AS GEN_Personal_Namn
		,G.Datum AS GEN_Datum
		,G.Godkänd AS GEN_Godkänd
FROM	 Personal P
INNER JOIN (Genomförda G
INNER JOIN Utbildningar U
ON		 G.Utbildningar_kod = U.ID)
ON       P.ID = G.Personal_Namn
WHERE	 G.Godkänd = 0;

Har uppdaterat din databas och lagt in ovanstående 2 SQL satser i databasen. Kanske inte en optimal lösning, men enda sättet jag kom på för att kunna se både de som genomfört och de som ej genomfört en viss utbildning.

Testa gärna själv och bygg vidare ifall du vill ha andra kolumner och/eller villkor

 

 

 

Utbildningar_UPD.zip

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
R66
På 2020-04-22 på 09:35, skrev Cluster:

I din relationsbild så kopplar du Personal_Namn i tabellen Genomförda till ID i tabellen Personal. Är inte det lite märkligt? Tänker mig att ett namn (textsträng) sällan kommer vara samma/jämförbart med ett ID (nummer). Eller?

En grov miss, tack! :)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
R66
Postad (redigerade)
På 2020-04-24 på 07:50, skrev Automan:

Hej!

Om du lägger till alla kombinationer av Personal och Utbildningar i tabellen Genomförda och använder dig av fältet Godkänd som ett sätt att separera dem som genomfört en utbildning (Dvs. är godkänd) från de som ej genomfört en utbildning (Godkänd flaggan ej markerad) kommer du kunna söka fram personer som inte genomgått en viss utbildning

 

Följande SQL ger nu en lista över alla som Genomfört en utbildning


SELECT	 P.Namn AS PER_Namn
		,G.ID AS GEN_ID
		,G.Utbildningar_kod AS GEN_Utbildningar_kod
		,U.Kod AS UTB_Kod
		,U.Namn AS UTB_Namn
		,G.Personal_Namn AS GEN_Personal_Namn
		,G.Datum AS GEN_Datum
		,G.Godkänd AS GEN_Godkänd
FROM	 Personal P
INNER JOIN (Genomförda G
INNER JOIN Utbildningar U
ON		 G.Utbildningar_kod = U.ID)
ON       P.ID = G.Personal_Namn
WHERE 	 G.Godkänd <> 0;

Vill du istället lista all personal som ej genomgått en viss utbildning, kör följande SQL


SELECT	 P.Namn AS PER_Namn
		,G.ID AS GEN_ID
		,G.Utbildningar_kod AS GEN_Utbildningar_kod
		,U.Kod AS UTB_Kod
		,U.Namn AS UTB_Namn
		,G.Personal_Namn AS GEN_Personal_Namn
		,G.Datum AS GEN_Datum
		,G.Godkänd AS GEN_Godkänd
FROM	 Personal P
INNER JOIN (Genomförda G
INNER JOIN Utbildningar U
ON		 G.Utbildningar_kod = U.ID)
ON       P.ID = G.Personal_Namn
WHERE	 G.Godkänd = 0;

Har uppdaterat din databas och lagt in ovanstående 2 SQL satser i databasen. Kanske inte en optimal lösning, men enda sättet jag kom på för att kunna se både de som genomfört och de som ej genomfört en viss utbildning.

Testa gärna själv och bygg vidare ifall du vill ha andra kolumner och/eller villkor

 

 

 

Utbildningar_UPD.zip 73 kB · 1 download

 

Vilken lycka! SUPERTACK!!!!

 

Redigerad av Mikael63
lyft ut text utanför citat-ruta

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...