Newsgroup: it.comp.appl.access
Titolo: Errore: "Nessun record corrente"

su click di un pulsante posto in una maschera ho inserito questo codice:
 
    If IsNull(Me!nFatturaFo) Then
        MsgBox "Devi inserire il numero di Fattura!!!"
        Me!nFatturaFo.SetFocus
    ElseIf IsNull(Me!DataFatturaFo) Then
        MsgBox "Devi inserire la data nella Fattura!!!"
        Me!DataFatturaFo.SetFocus
    Else
 
        Dim Rs As DAO.Recordset, Rs1 As DAO.Recordset, Rs2 As DAO.Recordset
 
        Me!SM_DettFatturaFornitore.SetFocus
 
        Set Rs = Me.Recordset
        Set Rs1 = Me!SM_FattureFornitoridaRicevere.Form.Recordset
        Set Rs2 = Me!SM_DettFatturaFornitore.Form.Recordset
 
        If Not Rs1.BOF And Not Rs1.EOF Then
            Rs1.MoveLast
            Rs2.AddNew
 
            Rs2!IdFatturaFo = Rs!IdFatturaFo
            Rs2!IDCarico = Rs1!IDCarico
            Rs2!ImportoLordo = Rs1!ImportoLordo
            Rs2!Totale = Rs1!Totale
            Rs2!Spese = Rs1!Spese
 
            Rs2.Update
            Rs1.Requery
            Rs1.MoveNext
 
        Else
            MsgBox "Non c'è più nulla da aggiungere."
        End If
 
        Set Rs = Nothing
        Set Rs1 = Nothing
        Set Rs2 = Nothing
    End If
 
il problema è che sull'ultimo record anziche' avere il MsgBox "Non c'è più nulla da aggiungere."
ho "nessun record corrente" e solo successivamente ho "Non c'è più nulla da aggiungere."
 
Dove sbaglio?
Grazie

     endif
 
 
dim msg_fattura as string 
dim msg_data    as string 
 
if  not testa_fatt(Me!nFatturaFo.value, _ 
                   msg_fattura) then msgbox(msg_fattura) : exit sub 
 
if  not testa_data(Me!DataFatturaFo.value, _
                   msg_data) then msgbox(msg_data) : exit sub 
 
dove testa_fatt e  testa_data  sono  due  funzioni  ad  hoc  che 
analizzano per bene e con calma il valore immesso e nel caso non
va bene danno false e riempiono il messaggio da dare all' utente.
 
Il codice e' piu' leggibile (molto di piu'), piu' snello e piu' 
generale : in quelle funzioni puoi verificare se ha messo un numero
oppure no, se quel numero esiste e tutto quello che vuoi e cosi' 
per la data. 
 
Scusami se mi sono permesso ma ... non ce l' ho fatta a trattenermi :-)
 
 


grazie.
hai un funzione da mostrare come esempio?


Acciderba, e come no ! Ecco qua :
 
public  function _
testa_fatt(numero as variant,  _
           byref msg as string) as boolean
 
if not isnumeric(numero) then 
   ' t' ha passato un non - numero
    msg = "devi passarmi un numero, fesso !" 
    exit function
endif
 
' se arrivo qui e' di sicuro un numero : ma vediamo
' se l' imbecille me l' ha passato intero ... ;-)
 
if not (int(numero) = numero) then 
 
   ' e ti pareva ... 
    msg = "devi passarmi un numero INTERO, DEFICIENTE !"
    exit function    
endif
 
' qui al limite puoi collegarti al database per vedere
' se il numero di fattura (ossia la fattura) esiste  e 
' se non esiste lo rimandi a quel paese ... :D 
' ...
' ...
 
' se arrivi fin qui tutto ok allora fai : 
test_fatt = true
end function
 
Ciao ! 


se parliamo di fatture fornitori non vedo perchè non possa digitare 
lettere e numeri su num fattura.
esempio le fatture telecom
idem sulle fatture di vendita visto che di solito ci sono anche i 
sezionali con lettere o le classiche fatture numero/bis
 
ciao
BFS
 
 


Ovviamente hai ragione maestro, ma qui volevo  evidenziare  l' aspetto
dello stile di programmazione non il problema concreto in se e per se.
 


fammi vedere come fai...
 
 
 
grazie 


 fammi vedere come fai...
 
Devi fare una query  sulla  tabella che riporta i codici 
fattura,  chiamiamola Fatture col campo Codice (stringa) 
supponendo che stia in locale :   
select codice from Fatture where codice = '" & codice & "';"
 
Se il recordset che t' esce fuori 
- ha una sola riga (le conti) allora ok
- se non ne ha alcuna butti fuori l' utente
 
E : 
- se ne ha piu' d' una c'e' un errore grave sulla 
  normalizzazione perche' il codice deve essere 
  unico :-)