Aiutate un principiante con Access!!!!

venerdì 29 febbraio 2008 - 14.00

nioanto1980 Profilo | Newbie

Ciao a tutti vi chiedo gentilmente un aiuto per un principiante di access. Premesso che non so nulla di VB e ben poco di access sono stato incaricato dal mio capo di creare un database per archiviare i clienti. Con access sono riuscito a realizzare la tabella e la maschera che utilizza circa 30 campi. Nella maschera ho inserito i pulsanti "cerca" "aggiungi nuovo" e "chiudi". Funziona tutto ma ho notato che quando cerco un cliente e lo trovo se per errore cambio qualcosa in un campo non posso tornare indietro, perciò ho bloccato uttte le finestre nella maschera. Questo non mi permette di modificare i campi in una nuova schermata perchè dovrei sbloccare uno per uno i campi. Vi chiedo, sapendo che si possono fare cose turche, con access e VB mi potreste dire passo passo come posso fare a creare un bottone che mi abiliti e disabiliti il blocco della modifica dei campi? Inoltre vi chiedo quando faccio il cerca devo sempre settare nella schermata "cerca in" il database e mettere "parte del campo" se no non funziona esiste un modo di poter settarlo in automatico in modo tale da premere cerca e immettere il teso da cercare senza fare ulteriori passaggi? Nel ringraziarvi della paziente Vi saluti. Antonio

grancati Profilo | Newbie

Ciao,

Se esegui per errore una variazione, puoi annullare le modifiche premendo il tasto ESC

Comunque potresti fare in questo modo:
Al posto del pulsante, inserisci una CheckBox (o casella di controllo) non associata nella maschera, scrivi nella sua etichetta "Blocca modifiche", poi apri la maschera delle proprietà, nella proprietà "Nome elemento" inserisci ad esempio chk_LockEdit, nella proprietà "Valore predefinito" inserisci Vero.
Ora seleziona le proprietà della maschera, vai nella scheda eventi, pemi click sull'evento "In Attesa" poi click sui tre puntini a destra di esso, si aprirà la mascherina "Scegli Generatore", seleziona "Generatore di codice" e premi Ok, si aprirà l'editor VBA che mostrerà il codice...
----
Private Sub Form_Dirty(Cancel As Integer)

End Sub
----

Al suo interno scrivi la riga Cancel = Me.chk_LockEdid ottenendo complessivamente:
----
Private Sub Form_Dirty(Cancel As Integer)

Cancel = Me.chk_LockEdit

End Sub
----
in pratica se la CheckBox è spuntata (valore True o Vero) l'evento viene cancellato impedendo le modifiche delle caselle testo associate ai campi dell'origine record della maschera.

Per quanto riguarda il "Cerca" premi Strumenti-->Opzioni poi vai nella scheda "Modifica/Trova" e vedi se una delle tre opzioni "Ricerca sostituzione predefinita" può esserti comoda.

Ciao
Giorgio


nioanto1980 Profilo | Newbie

Ciao Giorgio ti ringrazio veramente ho inserito le modifiche ora e funziona tutto. Ti posso chiedere solo un'ultima cosa ho notato che una volta sbloccato la casella per fare modifiche se non fai esc e la riblocchi il programma ti permette comunque di modificare i campi. Esiste un modo che faccia l'ESc automatico? Ciao nuovamente ti ringrazio. Antonio

grancati Profilo | Newbie

Ciao,

se non ho capito male, lo scenario è questo:
L'utente toglie la spunta dalla checkbox quindi la maschera è modificabile, poi modifica qualche casella testo, poi ci ripensa e rimette la spunta sulla checkbox ma ormai la maschera è in stato di dirty e tu vorresti che automaticamente le modifiche apportate vengano annullate.

Fai così:
Vai in struttura maschera, seleziona la checkbox e apri la maschera delle proprietà, vai nella scheda eventi, pemi click sull'evento "Dopo Aggiornamento" poi click sui tre puntini a destra di esso, si aprirà la mascherina "Scegli Generatore", seleziona "Generatore di codice" e premi Ok, si aprirà l'editor VBA che mostrerà il codice...

----
Private Sub chk_LockEdit_AfterUpdate()

End Sub
----

al suo interno scrivi queste righe
----
If Me.chk_LockEdit = True And Me.Dirty = True Then
Me.Undo
End If
----

ottenendo complessivamente il codice...
----
Private Sub chk_LockEdit_AfterUpdate()

If Me.chk_LockEdit = True And Me.Dirty = True Then
Me.Undo
End If

End Sub
----

in pratica se la maschera è stata variata viene eseguito il metodo Undo che annulla le modifiche.

Ciao
Giorgio

nioanto1980 Profilo | Newbie

Ciao giorgio mi hai dato un'idea in più e sicuramente applichero questo codice. ma io dicevo questo: spunto la casella e modifico il testo NON faccio esc ribloccco schiacciando lòa spunta il testo continua ed essere modificabile. Ne approfitto per chiederti un'altra cosa. Abbi pazienza ma è da poco che uso access. Esiste la possibilità e premesso che ogni cliente ha un numero sequenziale, di poter inserire una casella di testo dove venga visualizzato il numero dell'ultimo cliente inserito ? Ed anche esiste il modo di bloccare nella maschera la rotella del mouse? Ciao e grazie ancora sei grande!!!!

grancati Profilo | Newbie

Ciao,

sì, la logica si basa sulla proprietà Ditry della maschera, se hai già iniziato la modifica non puoi impedire la variazione a meno di non annullare le modifiche precedenti.
Per rendere più chiara la situazione puoi eliminare il codice messo nell'evento dopo aggiornamento della checkbox e inserire questo nell'evento Prima di aggiornare
----
Private Sub chk_LockEdit_BeforeUpdate(Cancel As Integer)

If Me.chk_LockEdit = True And Me.Dirty = True Then
If MsgBox("Alcuni campi sono stati modificati, si conferma l'eliminazione delle modifiche ", _
vbQuestion Or vbYesNo Or vbDefaultButton2) = vbYes Then
Me.Undo
Else
Cancel = True
End If
End If

End Sub
----

Per quanto riguarda la rotellina del mouse la cosa si complica un po'.
Quarda questa soluzioni:
----
ACC2000: Rilevamento e impedimento dello scorrimento dei record di una maschera mediante la rotellina del mouse
http://support.microsoft.com/kb/278379
----

oppure questa che è più semplice e corredata con un db di esempio
----
mousewheel on off
http://www.lebans.com/mousewheelonoff.htm
----

Ciao
Giorgio

nioanto1980 Profilo | Newbie

Ciao Giorgio ti ringrazio ho eseguito tutto tranne la rotella mouse che mi sembra veramente troppo per questa fase. Ciao ti ringrazio ancora dell'aiuto. Antonio
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5