Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Finestra Messaggio:Vuoi salvare le modifiche?
lunedì 19 novembre 2007 - 14.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
lun 19 nov 2007 - 14:23
Help!!!!!!!!!!
Dovrei integrare nella maschera una funzione che al momento dell'immissione dei dati mi esce un messaggio avente oggetto: vuoi salvare le modifiche? SI o NO.
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 19 nov 2007 - 16:38
>Help!!!!!!!!!!
>
>Dovrei integrare nella maschera una funzione che al momento dell'immissione
>dei dati mi esce un messaggio avente oggetto: vuoi salvare le
>modifiche? SI o NO.
Ciao! Cerca di essere più chiaro, di cosa stai parlando?
Alx81 =)
http://blogs.dotnethell.it/suxstellino
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
lun 19 nov 2007 - 17:29
Quando vado ad effettuare in una maschera una modifica sui dati, prima di effettuarla definitivamente mi deve chiedere se voglio salvare o meno le modifiche. Non solo quando attraverso la maschera aggiungo un record il campo contatore va avanti senza che io abbia di fatto salvato il nuovo record creato. Infatti anche se decido di non aggiungere più il record il campo contatore comunque è avanzato di 1 senza che io salvassi di fatto il movimento.
Spero di essere stato chiaro.
Grazie
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 19 nov 2007 - 17:53
E' da capire se usi un DataGridView, se lavori in modalità connessa o disconnessa, che tipo di database usi, con cosa sviluppi le tue maschere...
http://blogs.dotnethell.it/alebadalin
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
lun 19 nov 2007 - 17:55
Il database che uso è ACCESS 2003. Creo le maschere da access.
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 19 nov 2007 - 18:46
Devi intercettare l'evento AfterUpdate (Dopo aggiornamento) oppure l'evento Change (Su modifica) del controllo sul quale apporti le modifiche.
Per quanto riguarda il contatore mi sà che con Access c'è ben poco da fare... a meno che tu non ti gestisca tutto a mano... dipende dalle tue conoscenze di VBA.
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
mar 20 nov 2007 - 11:52
Ciao
scusate se mi intrometto
io ho avuto lo stesso problema già dai tempi di access 97
ho risolto da poco tempo con delle pseudo stored-queries
praticamente agisco così:
1) creo la maschera con i campi non associati che però hanno come definizioni tipi di dato le stesse che sono sulla tabella (praticamente una maschera trasparente che rifletta un record vuoto della tabella)
2) inserisco un pulsante per la registrazione dei dati inseriti
3) creo una stored-query di inserimento sulla tabella dei valori presenti sulla maschera (tutti tranne il contatore, che si auto-aggiorna)
4) alla pressione del tasto di inserimento presente sulla maschera eseguo un codice che come prima cosa mi chieda se sono sicuro di voler inserire (tramite msgbox, che mi restituirà un valore di ritorno relativo al codice del pulsante premuto ["OK" o "Annulla"])
5) in caso il tasto premuto sia "OK" richiamo la query di inserimento tramite il comando docmd.
con me ha funzionato alla grande
il contatore non viene toccato finché non clicchi su OK, per cui puoi fare tutte le modifiche che vuoi e tornare indietro senza incrementare il valore dell'ID.
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
mar 20 nov 2007 - 16:29
Sarebbe perfetto!!
Solo che non mi è chiaro come debbo procedere praticamente sui tre punti da te elencati:
3)creo una stored-query di inserimento sulla tabella dei valori presenti sulla maschera (tutti tranne il contatore, che si auto-aggiorna)
4) alla pressione del tasto di inserimento presente sulla maschera eseguo un codice che come prima cosa mi chieda se sono sicuro di voler inserire (tramite msgbox, che mi restituirà un valore di ritorno relativo al codice del pulsante premuto ["OK" o "Annulla"])
5) in caso il tasto premuto sia "OK" richiamo la query di inserimento tramite il comando docmd.
Per caso mi potresti inviare un mdb come esempio?
Grazie in anticipo.
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
mar 20 nov 2007 - 17:13
la stored-query dovrai crearla da SQL, non è assolutamente difficile:
INSERT INTO tuatabella ( campo2, campo3, campo4, ..., campo999 )
SELECT Forms!tuamaschera.Controllo2 AS Valore2, Forms!tuamaschera.Controllo3 AS Valore3, Forms!tuamaschera.Controllo4 AS Valore4, ..., Forms!tuamaschera.Controllo99 AS Valore99, ;
(ho volutamente evitato campo1, controllo1 e valore1 perché sottintendo come campo1 il campo chiave, nel tuo caso l'ID, che non dovrà essere valorizzato da maschera ma si dovrà autoincrementare ad ogni inserimento)
in questo modo, quando sarai sulla maschera "tuamaschera" potrai sfruttare un command button per eseguire semplicemente la query che catturerà i valori dalla maschera stessa
---
il msgbox dovrai attribuirlo come valore ad una variabile di tipo integer, poiché i tasti OK, Annulla, Riprova.. equivalgono a numeri interi in VBA
il tasto OK per esempio equivale a 0.
devi quindi dichiarare una variabile di tipo integer, chiedere conferma all'utente, testare la risposta ricevuta e comportarti di conseguenza:
Dim tuavariabile As Integer
tuavariabile = MsgBox("Sicuro?", vbOKCancel, "Conferma inserimento")
' "Sicuro?" è il testo, vbOKCancel visualizza i pulsanti "OK" e "Annulla", e
' "Conferma inserimento" è il titolo della finestra del messaggio
If tuavariabile = vbOK Then ' vbOK è una costante numerica già dichiarata in VBA
DoCmd.OpenQuery "tuaquery"
Else
' L'applicazione in questo caso non fa niente e tu puoi modificare gli inserimenti senza
' lasciare "buchi" nel campo incrementale di "tuatabella"
End If
spero di essere stato chiaro
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
mar 20 nov 2007 - 17:49
Scusami ma io non sono assolutamente pratico di VBA.
Hai un piccolo mdb come esempio da inviarmi come allegato?
Please.
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
mer 21 nov 2007 - 11:23
Vorrei capire circa SELECT Forms!tuamaschera.Controllo2 AS Valore2...il controllo corrisponde al nome del campo dellla tabella e il Valore a cosa si riferisce?
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
mer 21 nov 2007 - 11:53
470_esempio s-q.zip
I campi "ValoreXX" sono i campi della query.
Naturalmente si riferiscono a campi che devi inserire in creazione query.
Allego l'esempio.
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
mer 21 nov 2007 - 15:51
Perfetto l' allegato.
Se io volessi inserire una funzione attraverso la quale quando vado a modificare un campo specifico di un record inserito mi chiede se voglio salvare le modifiche...come posso fare?
C'è la possibilita che ogni qualvolta effettuo una modifica mi chiede la password?
Grazie
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
mer 21 nov 2007 - 16:17
per quanto riguarda l'aggiornamento basta che ti crei una query di aggiornamento
per la seconda domanda, come si dice a firenze, "avòglia!"
puoi metterci tutti i controlli che vuoi, basta che sulla stessa maschera aggiungi il pulsante di aggiornamento che prima di lanciare la query di update ti apra una maschera con la richiesta della password
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
mer 21 nov 2007 - 17:12
Esempio: il database che mi hai gentilmente inviato:
ho creato una query di aggiornamento cioè UPDATE tuatabella SET tuatabella.campo2 = "", tuatabella.campo3 = "", tuatabella.campo4 = "", tuatabella.campo5 = ""; Il mio problema è come faccio ad associare la query ai vari controlli della maschera? Quando io devo modificare dati di un singolo campo non mi deve modificare tutti i record del campo stesso ma solo quello selezionato.
1000 Grazie
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
gio 22 nov 2007 - 08:16
beh, ci sono due metodi semplici da poter utilizzare:
1) più veloce: modifica di un record valorizzando tutti i campi: posizioni una casella di riepilogo sulla maschera e ad ogni doppio click su uno dei record elencati visualizzi sulla maschera il record completo (quindi selezioni il record per la modifica), dopodiché modifichi il campo che necessita aggiornamento e fai un update del record. gli unici valori differenti dall'originale saranno quelli che hai modificato tu (l'update dovrà aggiornare tutti i campi del record, anche se la maggior parte di essi non avrà subito modifiche) e in questo caso puoi creare una query di aggiornamento nello stesso modo in cui è strutturata quella di inserimento sull'esempio che ti ho mandato
2) modifica di un solo campo: alla pressione del tasto modifica ti fai un controllo su tutti gli elementi della maschera, intercettando quello o quelli che presentano un valore e che quindi dovranno essere modificati: ti costruisci l'update in base a questo, ma non potrai usare la query che ho creato io. dovrai invece intervenire da codice.
io prediligo la prima
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
gio 22 nov 2007 - 13:57
471_470_esempio s-q.zip
La query di aggiornamento è "UPDATE tuatabella SET ( campo2, campo3, campo4, campo5 )
SELECT Forms!tuamaschera.Controllo2 AS Valore2, Forms!tuamaschera.Controllo3 AS Valore3, Forms!tuamaschera.Controllo4 AS Valore4, Forms!tuamaschera.Controllo5 AS Valore5;"?
Sicuramente c'è un problema sulla stringa perchè non mi fa salvare la query.
La query va associata all casella di riepilogo sulla maschera?
Quando effettua l' update su un campo mi chiede la password?
Vorrei che si lasciasse traccia su ogni modifica effettuata.
Ti è possibile effettuare le suddette modifiche sul mdb che mi hai inviato come esempio?
Ho molto da imparare.
Grazie per la tua disponibilità.
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
gio 22 nov 2007 - 14:51
473_esempio s-q.zip
fatto
il comando UPDATE prevede che vengano passato valori di aggiornamento tramite l'istruzione SET:
UPDATE tabella SET campoA = valoreA, campoB = valoreB.. WHERE campoID = valoreID;
in questo modo selezioni il record che ha ID = valoreID e gli modifichi tutti i campi con i valori che gli passi dalla maschera.
nel caso modifichi il valore di un campo solo, vengono comunque aggiornati anche tutti gli altri con gli stessi valori che già hanno, quindi teoricamente il dato aggiornato risulta solo quello modificato.
AlPanix
per quanto riguarda la password ho postato un esempio qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=19518
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
gio 22 nov 2007 - 17:33
Chiarissimo l' esempio della query di aggiornamento.
Sulla password ho ancora dei problemi. Sulla base del mdb di esempio quando aggiorno un campo mi deve chiedere oltre alla domanda "sei sicuro" anche la password. Facendo in questo modo c'è traccia di chi ha effettuato le modifiche. Come posso fare su quest'ultimo punto? Magari crendo dei veri account....
Grazie, Grazie, Grazie.....
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
ven 23 nov 2007 - 09:03
in questo caso perché non crearti una tabella di utenti abilitati?
ogni utente dovrebbe avere la sua password e con una maschera di login all'apertura dell'applicazione potresti intanto filtrare l'accesso al db, poi memorizzarti l'utente su una variabile universale e utilizzare tale variabile per valorizzare e aggiornare un campo (ad es. UtenteModifica) presente sulle tabelle.
se invece vuoi solo che ti venga chiesta una password, creati la tabella di appoggio delle password e inserisci sulla maschera quel combo nascosto come nell'esempio dell'altro topic. ogni volta che fai un inserimento, oltre a forzare il msgbox di conferma, forza anche una inputbox che ti chieda la password. confronti la password con il combo e se è identica procedi con l'applicazione, altrimenti esponi un msgbox di rifiuto.
es.
Private Sub cmdAggiorna_Click()
...
Dim password As String
...
password = Inputbox("Inserisci password")
If password = cboPassword Then
...
DoCmd.OpenQuery "qry_aggiornamento"
Else
MsgBox "Password errata", vbOKOnly, "Utente non autorizzato"
End If
...
End Sub
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
ven 23 nov 2007 - 11:00
475_473_esempio s-q.zip
A me servirebbe sia una maschera di login e sia un combo che ad ogni modifica ed ad ogni inserimento mi chieda la password.Ovviamente ci dovrebbe essere un controllo che verifichi la password inserita per inserimento o modifica corrisponda alla password di login.
Il codice che mi hai scritto ovviamente e come sempre è chiaro ma ho difficoltà a renderlo operativo.
Potresti applicare gentilmente "il tutto" nel famoso mdb di esempio che ti allego.
GRAZIE
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
ven 23 nov 2007 - 11:22
476_esempio s-q.zip
ecco qua
la password è nella relativa tabella
leggiti il codice e guarda la struttura della maschera
ho nascosto il combo che ti dicevo
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
ven 23 nov 2007 - 12:28
OK!!!!!!!!!!
Ora se io inserisco più di una password in tabella perchè il database sarà utilizzato da + utenti, come faccio io ad assegnare una password all'utente?
Ho inserito un 'altra password però mi consente comunque di effettuare la modifica.
Posso poi associare la tabella delle password con una maschera di login?
GRAZIE
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
ven 23 nov 2007 - 14:01
l'esempio allegato al topic di cui ti ho mandato il link contiene proprio un login collegato ad una tabella che contiene password. è identica a quella che ho allegato qui.
se vuoi attivare un controllo a livello utente non hai che da crearti una tabella utenti che abbia anche il campo password. nel login dovrai inserire il codice dell'utente e il controllo poi sarà effettuato sulla corrispondenza tra questo e la password dell'utente. se non c'è questa corrispondenza il login non verrà effettuato.
il codice che ti ho mandato in allegato nel post precedente non permette la modifica se nella inputbox digiti una password non identica a quella presente sulla tabella.
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
ven 23 nov 2007 - 15:05
477_esempio s-qnew.zip
Ti rimando il database con la tabella creata degli utenti. Ho difficoltà a creare una maschera di login iniziale che apra le successive maschere ma che soprattutto sia in relazione con la password che inserisco per le modifiche.
Grazie
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
ven 23 nov 2007 - 17:31
478_esempio s-q.zip
nella maschera "login" ho inserito una casella di testo non associata. una volta scelto l'utente sarà necessario autenticarsi tramite password da inserire in questa casella di testo.
il controllo autorizzativo è associato al click sul pulsante "Login".
se la password non è corretta viene visualizzato un messaggio di mancata autorizzazione e ti mantiene sulla stessa maschera.
se è corretta, nasconde i dati di login e visualizza un pulsante "Logout" per la disconnessinoe dell'utente. nel medesimo istante apre "tuamaschera" visualizzando nella parte inferiore l'utente attualmente loggato tramite una casella di testo.
se quando chiudi "tuamaschera" ti scolleghi con il tasto "Logout" (il che svuota tutti i campi della maschera di login) puoi collegarti come altro utente.
il controllo della password avviene tramite la proprietà Column(n) del combobox. studia il codice.
le possibilità di personalizzazione da VBA sono notevoli.
ps: devi riportarci il check sulla password per le modifiche perché l'ho inavvertitamente tolto. puoi farlo tramite la maschera di login che rimane sullo sfondo, controllando che la password che viene inserita in caso di modifica sia identica a quella presente nella casella di testo (ormai nascosta) txtPassword della maschera "login".
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
ven 23 nov 2007 - 19:06
479_esempio s-qnew.zip
All'interno della maschera ho provato ha replicare la casella non associata "utente" con txtpassword però comunque in fase di aggiornamento non mi funziona. Perchè?
Grazie
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
sab 24 nov 2007 - 13:10
ho analizzato il tuo allegato
il mio suggerimento non era quello che hai realizzato
quello che intendevo io era un confronto tra la password immessa tramite la InputBox e quella presente nella maschera di login
infatti, sebbene i controlli siano nascosti dopo un login avvenuto con successo, sono comunque presenti e utilizzabili
proprio per questo fatto la casella di testo "txtPassword" sulla maschera "tuamaschera" è a mio avviso inutile
toglila dalla maschera e aggiungi nella If dell'evento Click relativo al pulsante "Aggiorna" un confronto delle due password, la prima (ins_password) derivante dalla InputBox e la seconda (Forms!login.txtPassword) presente sulla maschera "login"
per quanto riguarda il fatto che non ti funziona in fase di aggiornamento, questo è dovuto al controllo che fai sulla casella di testo "txtPassword" che hai inserito nella maschera. infatti se lì non iserisci la password, la modifica non va a buon fine. cosa che invece non succede se ci inserisci la password che c'è nella InputBox
la cosa migliore è togliere quella casella di testo
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
dom 25 nov 2007 - 11:58
ok funziona..
grazie
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
dom 25 nov 2007 - 13:08
figurati
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
lun 26 nov 2007 - 11:05
Mi servirebbe gentilemente una tua consulenza.
Nel database ho 3 caselle combinate. La mia esegenza è che la 2 casella combinata filtra i valori sulla base del valore selezionato nella 1 casella combinata. Stesso discorso dicasi per la terza casella combinata.
Esempio: quando seleziono nella prima casella combinata come tipologia di articolo"monitor" nella seconda casella combinata mi deve filtrare solo le matricole del monitor. Nella terza casella combinata mi deve filtrare solo il Serial Number del numero di matricola selezionato nella seconda casella combinata.
Grazie per la tua disponibilità.
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
lun 26 nov 2007 - 13:48
è la stessa domanda che hai fatto qui?
http://www.dotnethell.it/forum/messages.aspx?ThreadID=19608
mi pare ci stia già lavorando Alessandro.
comunque, l'unica cosa che sono in grado di dirti su questo è che devi ricorrere al metodo Requery su ogni combo dipendente, una volta selezionato un valore sul combo di riferimento.
AlPanix
salinis
Profilo
| Junior Member
142
messaggi | Data Invio:
lun 26 nov 2007 - 21:32
si.
Se puoi aiutarmi mi potresti rispondere su
http://www.dotnethell.it/forum/messages.aspx?ThreadID=19608.
Grazie
alpanix
Profilo
| Junior Member
164
messaggi | Data Invio:
lun 26 nov 2007 - 22:36
Accetta la risposta su questo post, così lo chiudiamo.
AlPanix
Torna su
Stanze Forum
Elenco Threads
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 !