Access SI NO

lunedì 19 novembre 2007 - 17.21

giordix Profilo | Newbie

Ciao ragazzi sto creando un database con Access e non riesco proprio a fare due cose, mi date una mano?

- ho creato una tabella dove c'è un dato del tipo SI / NO, ma non riesco a fare il menù a tendina in una maschera con i valori SI/NO..cioè l'utente apre il menù a tendina e sceglie fra le due opzioni (poi con un pulsante ho fatto una funzione insert into x aggiungere i dati) come si fa? ho provato di tutto....

-un altra cosa; ho previsto l'ingresso nel mio database tramite un login. In pratica ho fatto tutto con le maschere, cioè nel pulsante di login faccio un IF cioè se, es in "testo7= parolasceltadame" allora cliccando sul login si apre la maschera della home.
Adesso pensavo di fare un altra maschera dove era possibile fare un cambio password dove si doveva inserire la vecchia pass, la nuova e un altra volta la nuova.

Non riesco a fare la verifica che inserendo la vecchia password l'access va a vedere se corrisponde a "parolasceltadame", eppoi anche il resto (cioè "parolasceltadame = nuovapass" IF "nuovapassword = altrovoltanuovapass"

Sono molto niubbo con access quindi vi prego datemi una mano!!!

avevo creato un altra discussione ma forse nn è spuntata pubblicata

alpanix Profilo | Junior Member

Ciao
1- nella maschera creata seleziona il controllo relativo al campo booleano in questione e attribuiscigli "Elenco valori" nella proprietà "Tipo Origine Riga".
In "Origine Riga" inserisci "Sì;No" e avrai i valori a discesa.
2- forse dovresti copiare il codice perché non sono riuscito a capire benissimo.. vorresti tre caselle di testo nelle quali dovrai inserire: 1° vecchia pass, 2° nuova pass e 3° nuova pass per conferma.
dovrai usare solo le if per la 1° e la 3° casella. il primo if per il confronto con la vecchia pass (parolasceltadame) e se il test va a buon fine dovrai passare al test del confronto tra le altre due caselle di testo.
solo allora, se il secondo test va bene, sarà necessario modificare il valore di "parolasceltadame" con quello della seconda casella di testo sulla maschera. poi dovrai aggiornare la tabella in cui è immagazzinata "parolasceltadame" con il valore nuovo.
spero di essere stato chiaro.
AlPanix

giordix Profilo | Newbie

Ciao e grazie.
per il primo problema ho provato come dicevi tu ed il menù a tendina adesso funziona. Devo ancora provare se l'inserimento nella tabella va a buon fine.

per il secondo problema hai capito bene, devo fare le tre caselle che dicevi tu.
diciamo che voglio fare l'ingresso del database con una maschera dove fare il login, una volta fatto il login farò un altra maschera dove sarà possibile fare il cambio password. Per fare questo cambio sarà necessario inserire la vecchia. la nuova e dinuovo la nuova.
Tu come la faresti? Non posso postrati codice xchè ho fatto varie prove che ho cancellato.
mi hanno consigliato di fare una variabile globale dove mettere la password, ma nn so come si fà...

se mi aiuti ti offro due caffe

giordix Profilo | Newbie

rileggendo il tuo intervento ho notate che secondo te la password i accesso (parolasceltadame) sia meglio metterla in un tabella??

alpanix Profilo | Junior Member

Meglio in una tabella, così puoi effettuare dei controlli ulteriori (ad es. non puoi inserire password uguali alternate, o password che siano già state immesse precedentemente..)


Ho allegato un esempio
La maschera principale è frmLogin
spero ti possa essere utile

AlPanix

edit: scusami, non ho inserito alcuna password nella tabella. fallo tu la prima volta poi lancia frmLogin

giordix Profilo | Newbie

GRAZIE 1000!
Il tuo esempio funziona anche se nn ho capito coma l'hai fatto...adesso il problema è fare la stessa cosa nel mio database...ti farò sapere!
dimenticavo xchè quella casella combinata nn visibile nella maschera frmLogin?

alpanix Profilo | Junior Member

in parole povere ho messo le pass su una tabella
1) ho creato una query per recuperare l'ultima immessa (id più alto)
2) ho creato una seconda query che recuperi dalla tabella delle password la password relativa all'id che proviene dalla SELECT Max(Id) della query precedente
3) ho messo sulla maschera una combo nascosta collegata alla seconda query, cosicché sia sempre aggiornata alla password attuale e sfrutto il metodo Column per confrontare la password che inserisco
naturalmente se avessi posto a Vero la proprietà Visible della combo, chiunque potrebbe vedere la password elencata. per questo l'ho nascosta.
nota che ho basato la maschera di login sulla seconda query.

AlPanix

giordix Profilo | Newbie

Grazie sei un grande, vedrò più tardi di implementarla sul mio database e ti faccio sapere.
Caffè pagato.
Non è che hai un contatto di Instan messaging?

giordix Profilo | Newbie

Allora per la password funziona tutto perfetto quindi grazie! però mi postresti spiegare cose la funzione Requery che usi spesso??
Inoltre dopo che effettuo un cambio password l'access mi da un messaggio di avvertimento che sta per inserire una nuova riga nella tabella....non si può togliere la visualizzazzione di questo mex?

857x359 45Kb


per il primo problema nel menù vengono visualizzati i campi SI e NO ma quando faccio l'inserimento l'access mi da questo errore:

795x170 31Kb


e nella tabella nn mi aggiunge alcun valore al tipo dato SI NO

953x266 30Kb


Il codice che ho usato per la funzione di esempio è il seguente, i dati del tipo SI NO sono Liquido e Fragile e le caselle combinate con menù a tendina si chiamano rispettivamente insoggliquido insoggfragile

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


alpanix Profilo | Junior Member

1) Il metodo Requery esegue nuovamente la query che sta sotto un determinato controllo aggiornando quindi i valori del controllo con gli attuali inserimenti delle tabelle a cui la query si riferisce

ad esempio una casella di riepilogo basata su una query ti riporta i valori risultanti dalla query all'apertura della maschera sulla quale si trova
con il comando "caselladiriepilogo.requery" viene eseguita la query in background e i valori della casella stessa vengono aggiornati nel caso nel frattempo sia stato modificato o inserito qualcosa

2) L'avviso che ti viene proposto è un avviso standard di Access. Io l'ho tolto dal menu strumenti -> opzioni e togliendo la spunta ai checkbox di conferma, in alto a destra nella tab Modifica/Trova

3) Prova a intercettare il valore dei campi liquido e fragile e attribuirgli il corrispondente in inglese (se valore = "Vero", dai ad una variabile di tipo stringa il valore "True" e "False" per "Falso"). Poi nella INSERT dai i riferimenti a quelle variabili invece che ai campi presenti sulla maschera stessa.
SQL è in inglese, quindi devi passargli i valori in inglese.

AlPanix

giordix Profilo | Newbie

sei stao chiaro ma nn ho capito bene il pt 3
Io ho creato nella maschera un casella combinata passando i con "elenco valori" i valoro SI e NO, ma naturalmente nn mi accetta questi valori (la tabella), come dovrei fare?

Tu indendi che invece di SI e NO come valori devo mettere TRUE e FALSE??
scusa ma sono molto niubbo con Access grazie della tua pazienza!

alpanix Profilo | Junior Member

intendo proprio quello che hai scritto
dovrai mettere un tasto inserisci sulla tua form che scateni un evento ad ogni click del mouse su di esso
in questa procedura dovrai sostituire il valore "Vero" con il valore "True", perché anche se nell'elenco valori tu metti "Sì;No", i valori che il controllo assume sono, in corrispondenza, "Vero;Falso" (se scegli "Sì" il sistema interpreta "Vero" e "Falso" per "No")
siccome però lo standard è in inglese (lo si può notare anche dai vari metodi e dalle varie proprietà, che sono in italiano sulla finestrella delle proprietà, ma sono in inglese a livello di codice) dovrai intercettare il valore scelto e, se "Sì" (quindi "Vero") sostituirlo con "True" e così di seguito
praticamente devi costruirti una maschera con un campo "Non associato" (meglio se lo sono tutti) di tipo combo con come origine "Elenco valori" e valori "Sì;No"
poi dovrai attribuire il giusto valore (tradotto) del campo combo ad una variabile (di tipo booleano o stringa) alla pressione di un tasto "Inserisci record"
in questo modo non ci sarà alcun problema

AlPanix

giordix Profilo | Newbie

quello che dici a livello teorico l'ho capito ma come creo un campo nn associato di tipo combo?

alpanix Profilo | Junior Member

I controlli non associati sono quelli non collegati a campi di query o tabelle.
Basta che crei un combobox e non gli attribuisci valori nella proprietà "Origine Controllo".
Il valore che vedrai in struttura maschera sarà "Non associato".

Ti ho fatto un esempio in allegato.
Se controlli le proprietà del combobox, noterai che sono identiche al campo "valore" dell'unica tabella presente.
Con il pulsante "Inserisci", scateni una procedura che intercetta il valore selezionato nel combobox e lo traduce in "booleano". Come puoi notare nel codice, la INSERT riporta il valore della variabile "valore_tradotto" non tra apici, e questo perché True e False, in realtà, sono due tipi di dato "numerico intero".

AlPanix
ps: se hai bisogno di altro, conviene avere contatti via e-mail.

giordix Profilo | Newbie

perfetto risolto tutto
all'inizio nn funzionava perchè tu nella query sql avevi fatto il controllo con "vero" invece io l'ho fatto con i valo "SI" e con i valori "NO"

dò l'ok al thread e ti ringrazio davvero tanto
Sicuramente avrò bisogno di altro aiuto mi lasci la tua mail? ecco la mia giordix@hotmail.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5