quesito su microsoft access

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
sally__75
00domenica 29 marzo 2009 12:34
ho visto su un database già fatto da altri che, all'apertura di una query, è possibile far apparire delle domande che funzionano da filtro x trovare solo quello che interessa all'interno di tabelle molto grandi. Qualcuno di voi sa come si fa a impostare la query in questo modo? Grazie in anticipo
Bud-
00domenica 29 marzo 2009 12:37
aspetta, devi usare per forza access o ti serve di usare un qualsiasi gestore di database?

Nel caso le query sono molto simili comunque, dato che sempre di SQL si tratta, solo che quello di access è un pò sporco.
Per poter scremare i dati da una tabella anzitutto sdevi sapere cosa stai cercando, e poi conoscere la sintassi SQL.

Non so se è questo che ti interessa.

Bud-
00domenica 29 marzo 2009 15:08
Ah tra parentesi di sql un pò ne so, quindi se serve aiuto a fare le query chiedi pure.
sally__75
00domenica 29 marzo 2009 15:42
ci sono riuscita ma solo in parte!! Ora mi succede questo:
Mi fa la prima domanda, dopo la prima domanda appare anche "1 [Text]=["
poi mi fa l'ultima domanda
poi mi ripete la prima domanda e dopo il testo appare "7 [Text]=[" e l'inizio del testo della domanda successiva
poi mi rifà l'ultima domanda
poi mi esce un messaggio di errore "parametri insufficienti. Previsto 0"

Che devo fare?
Bud-
00domenica 29 marzo 2009 15:46
metti il listato sql qui, vediamo com'è.
sally__75
00domenica 29 marzo 2009 15:47
PARAMETERS [Qual'è il titolo del film?] Text ( 255 ), [Chi è il regista del film?] Text ( 255 ), [Specifica il genere del film] Text ( 255 ), [In che anno è stato prodotto il film?] Short, [Qual'è il Paese di produzione del film?] Text ( 255 ), [Hai già visto questo film?] Bit;
SELECT Film.Titolo, Film.Regista, Film.Genere, Film.Anno, Film.Paese, Film.Durata, Film.Visto
FROM Film
WHERE (((Film.Titolo)=[Qual'è il titolo del film?]) AND ((Film.Regista)=[Chi è il regista del film?]) AND ((Film.Genere)=[Specifica il genere del film]) AND ((Film.Anno)=[In che anno è stato prodotto il film?]) AND ((Film.Paese)=[Qual'è il Paese di produzione del film?]) AND ((Film.Visto)=[Hai già visto questo film?]));
Bud-
00domenica 29 marzo 2009 16:35
Prova a sostituire con questa

PARAMETERS [Qual è il titolo del film?] char (255), [Chi è il regista del film?] char ( 255 ), [Specifica il genere del film] char ( 255 ), [In che anno è stato prodotto il film?] datetime, [Qual'è il Paese di produzione del film?] char ( 255 ), [Hai già visto questo film?] Bit;
SELECT Film.Titolo, Film.Regista, Film.Genere, Film.Anno, Film.Paese, Film.Durata, Film.Visto
FROM Film
WHERE (((Film.Titolo)=[Qual'è il titolo del film?]) AND ((Film.Regista)=[Chi è il regista del film?]) AND ((Film.Genere)=[Specifica il genere del film]) AND ((Film.Anno)=[In che anno è stato prodotto il film?]) AND ((Film.Paese)=[Qual'è il Paese di produzione del film?]) AND ((Film.Visto)=[Hai già visto questo film?]));

ho cambiato i tipi di dato.
sally__75
00domenica 29 marzo 2009 16:44
si comporta allo stesso modo solo che alla fine mi da "previsto 40" nell'errore.

Io prima avevo fatto anche Parametri dal menù Query ricopiando la domanda e scegliendo il tipo di dato ma ora parametri non è più attivo
Bud-
00domenica 29 marzo 2009 16:47
Potrebbe essere un'errore nella tabella forse...

Comunque quello che dovrebbe fare questa query (nel caso funzionasse) è restituirti esattamente quello che hai inserito come risposta alle domande.

Sei sicura che abbia un senso così com'è?
sally__75
00domenica 29 marzo 2009 16:59
beh! no! [SM=x53186] se chiedo alcuni dati di film devo avere come risposta tutti i film con quei dati.....
Bud-
00domenica 29 marzo 2009 17:32
Ho capito, allora la query e' fatta male.

Ti consiglio di provare a fare delle prove, ad esempio prima di passarci dei parametri prova a fare delle query sul database con fil di un certo anno o di un cero regista

esempio

SELECT * (<---con l'asterisco becchi tutti i campi)
FROM Film
WHERE Film.Anno = 1970 <---e' un esempio, fanne altri, serve a vedere se la tabella e' fatta bene


se poi la vuoi rendere parametrica non ti resta che fare

SELECT *
FROM Film
WHERE Film.Anno=[Anno:]



a quel punto dovrebbe chiederti l'anno di produzione e restituirti tutti i film dell'anno immesso.
Prova, fammi sapere

Bud-
00domenica 29 marzo 2009 17:45
Ah, ovviamente puoi mettere tutti i parametri che vuoi, tipo

SELECT *
FROM Film
WHERE Film.Anno=[Anno:] AND Film.Regista=[Regista:]

ecc
sally__75
00domenica 29 marzo 2009 17:53
per un solo parametro funziona, quando provo con 2 invece no
Bud-
00domenica 29 marzo 2009 18:06
C'e' qualcosa di strano, dovrebbe funzionare.

Che errore ti da?

Ricordati che se non ti da nessun risultato (riga tutta 0) allora non ci sono film coi parametri che hai messo.
sally__75
00domenica 29 marzo 2009 22:23
Rispondo solo ora perchè il mio pc ha contratto un virus e ho dovuto riformattare tutto [SM=x53160] riproverò tra qualche giorno
sally__75
00mercoledì 1 aprile 2009 18:43
Ehi Bud! Se leggi, ho provato e con un solo parametro funziona benissimo ma con 2 no.
Il listato SQL è il seguente:

SELECT Tabella.Titolo, Tabella.Regista, Tabella.Genere, Tabella.Anno, Tabella.Paese, Tabella.Durata, Tabella.[b/n o colore], Tabella.Lingua, Tabella.Visto
FROM Tabella
WHERE (((Tabella.Titolo) Like "*" & [Qual'è il nome del film?] & "*") AND ((Tabella.Regista) Like "*" & [Chi è il regista?] & "*"));

ma mi fa 2 volte la stessa domanda con le solite scritte dopo la domanda nella finestra.
Riesci a venirne a capo?
Bud-
00mercoledì 1 aprile 2009 19:28
Sally non deve essere cosi' il listato ;)

Ma come te l'ho scritto io, ovvero con * dopo select e il where modificato, ovvero


SELECT *
FROM Tabella
WHERE Tabella.Titolo=[Titolo:] AND Tabella.Regista=[Regista:]
sally__75
00mercoledì 1 aprile 2009 20:23
Ora funziona! Scusa ma non avevo capito prima [SM=x53186]

E se ora io volessi:

-Le domande come avevo fatto io es. "Chi è il regista?" invece di "Regista:" ?

- trovare non solo i titoli esatti ma anche i titoli dandogli solo 1 parola? Io avevo provato con Like"*"& e poi &"*"
sally__75
00mercoledì 1 aprile 2009 20:26
-e anche che, dando ok senza immettere nessun dato mi dia l'elenco completo
Bud-
00mercoledì 1 aprile 2009 20:33
Se vuoi le domande come le hai fatte tu dovrebbe bastare sostituire quello che c'e' scritto tra parentesi quadre.

per usare il like fai una prova

scrivi

SELECT*
FROM Tabella
WHERE Tabella.Titolo LIKE %[Titolo:]%

Non sono sicuro che funzioni pero' dovrai provare :)

E con quel listato se dai ok dovrebbe restituirti tutto.
sally__75
00mercoledì 1 aprile 2009 20:35
e poi come l'avevi scritta tu non mi mostra nessuno dei campi nel risultato della query!!!! Scusami [SM=x53186]
Bud-
00mercoledì 1 aprile 2009 20:39
Re:
sally__75, 01/04/2009 20.35:

e poi come l'avevi scritta tu non mi mostra nessuno dei campi nel risultato della query!!!! Scusami [SM=x53186]




cioe'?

sally__75
00mercoledì 1 aprile 2009 23:09
cioè in visualizzazione struttura non c'è la spunta su "Mostra" in nessun campo
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 22:18.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com