Newsgroup: it.comp.appl.access
Titolo: Test su controlli valore null

vorrei fare un test su tutti i controlli, se qualcuno eè vuoto me lo colora
in giallo e non mi permette di spedire i dati in tabella
altrimenti spedisco i dati viene fuori il messaggio di record salvato e
pulisce i controlli.
non riesco a sistemare il codice per fare questo.
mi potete aiutare vi allego il codice da mettere in ordine:
Public Sub ColoraControlli()
Dim ctl As Variant
For Each ctl In Screen.ActiveForm.Controls
If TypeOf ctl Is TextBox Then
If IsNull(ctl.Value) Then
With ctl
  .BackColor = RGB(255, 255, 0)
  .SetFocus
  End With
  End If
  End If
  Next ctl
End Sub
Private Sub Comando18_Click()
Dim rec As Recordset
Dim strsql As String
strsql = "select * from [tblRipassiLotti]"
Set rec = CurrentDb.OpenRecordset(strsql)
For Each ctl In Screen.ActiveForm.Controls
If TypeOf ctl Is TextBox THEN
 IsNull(ctl.Value) Then
MsgBox "inserire dati"
  ColoraControlli
  Exit For
rec.AddNew '(per inserire un nuovo record)
    rec![A] = Me.txtA
    rec![B] = Me.txtB
    rec![C] = Me.txtC
    rec![D] = Me.txtD
    rec![E] = Me.txtE
    rec![F] = Me.txtF
    rec![G] = Me.txtG
   rec.Update
MsgBox "Record Salvato !"
Set rec = Nothing
     Me.txtA = ""
    Me.txtB = ""
    Me.txtC = ""
    Me.txtD = ""
    Me.txtE = ""
    Me.txtF = ""
    Me.txtG = ""
  End If
 End if
 Next ctl
End Sub
grazie
ciao


[CUT]
Per mia difficoltà non riesco quasi mai ad interpretare velocemente il
codice scritto da altri, quindi ti dico come di solito opero io.
Se si tratta di una verifica semplice dei dati immessi che coinvolge il
singolo campo, inserisco la regola a livello di tabella (Proprietà 'Valido
se' in struttura della tabella), è anche il livello più sicuro su cui
effettuare una verifica.
Se la verifica è più complessa, puoi inserirla campo per campo nella routine
evento 'Prima di aggiornare' del singolo controllo.
Oppure per lasciare meglio intatta la dinamica che desideravi, puoi lasciare
libertà di inserimento e modifica in tutti i controlli, ed eseguire tutte le
verifiche nella routine evento 'Prima di aggiornare' della maschera.
In quel frangente, in caso di incongruenza, puoi colorare i controlli,
oppure posizionarti direttamente sul controllo che non ha il valore
corretto.
Puoi eseguire il metodo Me.Undo per ripristinare il valore dei controlli, o
proporre tu un valore.
Piuttosto dimenticavo, tutto questo se i controlli sono associati ai campi
della tabella o query che hai come origine, altrimenti cambiano un pò le
cose.
Se quanto sopra non è sufficiente fallo sapere.
Ciao.

 mi potete aiutare vi allego il codice da mettere in ordine:
uhmmmm....
Sub x_click()
if coloracontrolli() then SalvaRecord()
end sub
Function coloracontrolli() as boolean
Coloracontrolli =true
per ogni  controllo
    se controllo tipo textbox 
       se valorecontrollo e' nullo
            colore giallo
            coloracontrolli=falso
       altrimenti
            colore bianco
       finese
    finese
fineper
End Function
sub salvarecord()
	gestisco il recorset
	salvo il record
	pulisco il form
fine sub
--
a.cara 
Togli qualcosa dall'email

 fine sub
semplifico:
pigiando sul pulsante se c'è un valore nullo il messaggio è "valore nullo"
altrimenti il messaggio è "invio dati"
dove metto msgbox "invio dati"?????????
Private Sub Comando6_Click()
Dim ctl
For Each ctl In Screen.ActiveForm.Controls
If TypeOf ctl Is TextBox Then
If IsNull(ctl.Value) Then
MsgBox "ciao"
Else
Exit For
End If
End If
Next ctl
------------------------->'MsgBox "invio"
End Sub

"T@Roberto" ha scritto:

[cut]
adesso, con  calma, cerca di spiegarmi, dove, nel tuo primo post, questa
cosa che scrivi si "evinceva". Cmq nel codice che hai scritto i
controlli ti restano "colorati". Sempre in riferimento alla struttura
che ti ho postato le variazioni sono:
.....
if coloracontrolli() then SalvaRecord() else msgbox "Deciditi a mettere
i valori!"
....
sub salvarecord()
-----> msgbox "l'hai sfangata, scrivo i dati"
 gestisco il recordset
 salvo il record
 pulisco il form
fine sub
Mi rifiuto di prendere in considerazione la tua struttura che scrive
anche record non validi. Che succede se il primo controllo e'
valorizzzato ed il secondo contiene un null? Perche' apri il recordset
se poi non scrivi il record? e c'e anche qualche altra "sottigliezza"
ancora piu' divertente.
--
a.cara
togli qualcosa dall'email

 ha scritto nel messaggio
news:3F047FF3...@blunet.it...

Qui però dovresti mettere un msg di invia dati, come si evinceva dal primo
post di roberto
Antonio

 codice scritto da altri, quindi ti dico come di solito opero io.
Ti consiglio di esercitarti a fare questo, sempre che la programmazione
debba essere il tuo mestiere o quasi...
Antonio

 uhmmmm....
cut
Pero' dovresti anche prendere bene in considerazione la struttura del
codice...
Sib

Antonio Biso ha scritto:

Uhhhmmmm......
msgbox 
"Giornataccia oggi ehhh?. La cena e la nottata non troppo buone? Non te
l'ha data?",vbexclamation
;<)


Sib ha scritto:

Sib!  sob...sob....ma potevo dirgli che ad un esame lo avrei bocciato 27
volte?
(cmq. cfr l'altro mio post). Di fatto ho rifatto (fatto-rifatto bello
no?) la struttura, per superare il trauma l'ho dovuto affogare in 1/2
bottiglia di Lagavulin


"T@Roberto" ha scritto:
[cut]
P.S.
Attenzione il valore "" non e' null e' empty
io per risolvere questo problema faccio cosi'
if "" & var = "" then
o
if len(" & var) = 0 then
o se colto da momentanea follia
if nz(var,"") = "" then


 bottiglia di Lagavulin
Su', su'
che vedrai che poi tutto s'aggiusta.
;-)
Sib

 ha scritto nel messaggio
news:na9Na.144878$Ny5.4...@twister2.libero.it...

Hai ragione, quando facevo il programmatore COBOL non avevo certo di queste
difficoltà, ora dopo altre attività vorrei tornare a fare quel mestiere, ma
nel frattempo devo accontentarmi delle ore di tempo libero, quindi ci vorrà
un bel pò prima di prendere dimestichezza col VBA e la programmazione ad
oggetti  basata sugli eventi.
Ciao.


Non dargli spago Francesco. 
Queste "pippacce" nate con questi prodotti, che fanno tutto da soli, cosa
possono sapere della poesia dei dati packed con o senza segno o di record VBS e
datacheck di nastro o degli slack bytes dei livelli 01, quando la programmazione
era vera arte e non un accozzaglia di copia e incolla e quando il programmatore
vietnamita era Cio 'N Damp (morto nel frattempo)
Pfui!


 ha scritto nel messaggio
news:3F0560DC...@blunet.it...

Non farmi tirare fuori il manuale del PDP11, non farmelo fare!!!!!
Antonio