Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Office suite

Notices

Rispondi
 
Strumenti discussione
Vecchio 25-10-2012, 17.33.05   #1
tezenis
Newbie
 
Registrato: 25-10-2012
Messaggi: 5
tezenis promette bene
Problema caselle di controllo

Ciao a tutti!
Vi chiedo una cortesia.
Premesso che ho access 2007,

Ho una tabella Libri, all'interno della quale ho un elenco di libri.
Collegata a questa tabella ho una tabella Generi.

Libri (id: contatore e primary key, titolo: string, autore: string, data: date)
Generi(id: contatore, genere a: logico, genere b: logico, genere c: logico, genere d: logico, genere e: logico, id_libri: foreigh key)
MascheraLibri: maschera

Ora, premesso che un libro può avere più generi, vorrei che l'utente potesse visualizzare i titoli dei libri che hanno il proprio genere spuntato nella casella di controllo.

es:
GENERE_A
GENERE_B
GENERE_C
GENERE_D
GENERE_E



Se io spunto A e B, vorrei che l'utente visualizzasse tutti i libri che hanno TRUE nella tabella generi in genere A e genere B.

Questa è la query che ho preparato io:

SELECT libri.titolo
FROM libri INNER JOIN generi ON libri.ID = generi.id_libri
WHERE generi.genere_a=Forms!MascheraLibri!CasellaControl lo1
and generi.genere_b=Forms!MascheraLibri!CasellaControl lo2
and generi.genere_c=Forms!MascheraLibri!CasellaControl lo3
and generi.genere_d=Forms!MascheraLibri!CasellaControl lo4
and generi.genere_e=Forms!MascheraLibri!CasellaControl lo5;

il problema è che così facendo, compaiono i libri che hanno true SOLO in genere a e b.
Se un libro ha true in A B e D ad esempio, questo non viene visualizzato...
.

Grazie
tezenis non è collegato   Rispondi citando
Vecchio 25-10-2012, 20.28.25   #2
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
Rif: Problema caselle di controllo

Secondo me il database non è ben organizzato.

Hai bisogno di due tabelle e una relazione, per esempio:

- Libro (id_libro, titolo, autore, data)
- Genere (id_genere, nome)
- Appartenenza (id_libro, id_genere)

Le relazioni sono molti a molti. id_libro e id_genere sono foreign key per Appartenenza.

Comunque il problema della tua query è dovuto alla lettura del dato dalla checkbox.
La checkbox restituisce true o false, prova a sostituire true o false nella query e capirai il perchè del problema.
___________________________________

La risposta è dentro di te...
e però, è sbagliata!
borgata non è collegato   Rispondi citando
Vecchio 26-10-2012, 14.26.46   #3
tezenis
Newbie
 
Registrato: 25-10-2012
Messaggi: 5
tezenis promette bene
Rif: Problema caselle di controllo

ciao.
Ho seguito il tuo consiglio, ho creato le due tabelle più quella della relazione.

tuttavia, anche inserendo la nuova query SQL non funziona:

SELECT DISTINCT libri.titolo
FROM libri INNER JOIN (Generi INNER JOIN Tabella1 ON Generi.ID=Tabella1.id_generi) ON libri.ID=Tabella1.id_libri
WHERE (Forms!Maschera1!CasellaControllo2=True And generi.id=1) Or (Forms!Maschera1!CasellaControllo4=True And generi.id=2) Or (Forms!Maschera1!CasellaControllo6=True And generi.id=3) Or (Forms!Maschera1!CasellaControllo8=True And generi.id=4) Or (Forms!Maschera1!CasellaControllo10=True And generi.id=5);



Con questa query, se io ad esempio inserisco tre generi, vengono fuori dei libri che hanno anche solo un genere!
invece, essendo i generi dei criteri, vorrei che i risultati in output devono avere ALMENO i criteri selezionati.
Mettendo un AND anzichè un OR invece vengono fuori quelli che hanno SOLO i criteri selezionati.

Ringrazio calorosamente chi mi darà una mano.
tezenis non è collegato   Rispondi citando
Vecchio 26-10-2012, 14.53.55   #4
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
Rif: Problema caselle di controllo

Ah, ho capito, pensavo volessi tutti i libri che appartenessero ad almeno uno dei generi tra quelli selezionati.

Il problema comunque rimane lo stesso: tu nella query imponi che il risultato di alcune checkbox debba essere true, mentre quello di altre debba essere false.

La JOIN con "generi" (per convenzione dovrebbe essere "genere", ma le convenzioni non sono univoche) è superflua, dato che nel risultato della query non ti serve scrivere il nome del genere ma solo la lista dei titoli.
Anche la query mi sembra da rivedere, prova a "disegnarti" un pezzo della tabella per capire meglio quali sono i campi da valutare.

Esempio.
Ci sono 5 generi (genere1, genere2, ...) e tu visti la casella dei primi due.
La tua query quindi sarà del tipo:
SELECT [...] WHERE genere1=true AND genere2=true AND genere3=false AND genere4=false AND genere5=false
dove true e false sono i valori che recuperi dalle checkbox.
A questo punto diventa evidente il perchè del tuo problema, ossia il fatto che imponi la lettura dei checkbox anche se non vistati.
___________________________________

La risposta è dentro di te...
e però, è sbagliata!
borgata non è collegato   Rispondi citando
Vecchio 26-10-2012, 15.09.17   #5
tezenis
Newbie
 
Registrato: 25-10-2012
Messaggi: 5
tezenis promette bene
Rif: Problema caselle di controllo

Quota:
A questo punto diventa evidente il perchè del tuo problema, ossia il fatto che imponi la lettura dei checkbox anche se non vistati.
Esattamente. E' proprio quello il problema! Mi hai capito!

Avresti qualche consiglio da darmi?
Non è strettamente necessario che vi siano queste benedette caselle di controllo, l'unica necessità sostanzialmente è dare la possibilità all'utente di selezionare in qualche modo determinati criteri e che il report mi restituisca tutti i titoli dei libri che soddisfano almeno tutti i criteri selezionati.
tezenis non è collegato   Rispondi citando
Vecchio 26-10-2012, 15.22.32   #6
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
Rif: Problema caselle di controllo

Ti do un'ulteriore imboccata.

Quando effettui la JOIN tra libro e appartenenza, ottieni una tabella in cui un singolo libro potrà essere presente da 1 a più volte a seconda del numero di generi a cui è associato.
Con la clausola WHERE puoi ridurre il numero di queste occorrenze selezionando solo le righe in cui il genere specificato è uno di quelli selezionati.
A questo punto ti basta fare un "GROUP BY id_libro HAVING COUNT (DINSTINCT id_genere) >= N" dove N è il numero di generi selezionati per avere solo quei libri in cui sono presenti tutti i generi specificati.
___________________________________

La risposta è dentro di te...
e però, è sbagliata!
borgata non è collegato   Rispondi citando
Vecchio 28-10-2012, 23.35.06   #7
tezenis
Newbie
 
Registrato: 25-10-2012
Messaggi: 5
tezenis promette bene
Rif: Problema caselle di controllo

Ciao!

scusa se ti rispondo ora me ero impegnato a realizzare ciò che mi hai detto.
Sembra funzionare, grazie mille!

mettero il tuo nick fra coloro che hanno collaborato alla realizzazione del mio piccolo database ^^
tezenis non è collegato   Rispondi citando
Vecchio 29-10-2012, 09.29.07   #8
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
Rif: Problema caselle di controllo

Figurati

Se vuoi inserire qui la query finale, sono curioso di vederla.
___________________________________

La risposta è dentro di te...
e però, è sbagliata!
borgata non è collegato   Rispondi citando
Vecchio 30-10-2012, 15.37.23   #9
tezenis
Newbie
 
Registrato: 25-10-2012
Messaggi: 5
tezenis promette bene
Rif: Problema caselle di controllo

EDIT:

Questa è la query finale, te la semplifico un pò xD:

SELECT DISTINCT Libro.Titolo, LibroAutore, Libro.Anno [...]
FROM Libro INNER JOIN (Genere INNER JOIN Appartenenza ON Genere.ID=Appartenenza.ID_Genere) ON Libro.ID=Appartenenza.ID_libro
WHERE (Forms!Maschera_Report!CasellaControllo1=True And genere.id=1) Or (Forms!Maschera_Report!CasellaControllo2=True And genere.id=2) Or (Forms!Maschera_Report!CasellaControllo3=True And genere.id=3) Or (Forms!Maschera_Report!CasellaControllo4=True And genere.id=4) Or (Forms!Maschera_Report!CasellaControllo5=True And genere.id=5) [...]
GROUP BY libro.titolo, libro.Autore, Libro.Anno [...]
HAVING COUNT(appartenenza.id_genere)>=Forms!Maschera_Repo rt!Contatore;


il contatore è una casella di testo che conta le check selezionate

Come ti dissi funziona Grazie ancora!
tezenis non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[Vista] [SP1] - Problema periferiche USB crWT Windows 7/Vista/XP/ 2003 6 20-06-2008 11.28.32
[MDV] 2006 - problema kde juggler Linux e altri Sistemi Operativi 4 29-12-2006 20.06.08
Problema controllo file system ntfs fabius1983 Windows 7/Vista/XP/ 2003 1 17-09-2004 10.17.51
Problema indeterminato !! Help :°°° Poseidon Hardware e Overclock 20 10-06-2004 12.04.51
Problema con la masterizzazione... la colpa è della Audigy!!! Qualche idea??? LaBrie Windows 7/Vista/XP/ 2003 13 31-01-2004 14.28.25

Orario GMT +2. Ora sono le: 03.36.53.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.