Newsgroup: it.comp.appl.access
Titolo: codice composto da contatore

Ciao a tutti,
ho bisogno del vs aiuto per un codice che ho su corrente di una maschera in
Access 2000.
Ho un codice "IdRichiesta" composto dal codice istat del comune ed un campo
contatore che genera n. casuali.
Il problema é che quando il primo record é vuoto non riesce ad assegnare
all'idrichiesta alcun valore!
Il codice che ho inserito é il seguente:
Dim rs As DAO.Recordset
 
    Set rs = CurrentDb.OpenRecordset("SELECT comune FROM configurazione",
dbOpenDynaset)
 
    newIdRichiesta = CStr(rs("comune")) + "/"
 
    Set rs = CurrentDb.OpenRecordset("SELECT contatore FROM richieste",
dbOpenDynaset)
 
    If (IsNull(rs("contatore"))) Then
 
        newIdRichiesta = newIdRichiesta + "01"
        Else
        rs.MoveNext
        cont = rs("contatore")
        newIdRichiesta = newIdRichiesta + cont
        End If
 
   idRichiesta.Value = newIdRichiesta
 
   Me.Refresh
Nonostante abbia previsto il caso Null cont é sempre vuoto e quindi assegna
all'idRichiesta sempre e solo il codice istat del comune (prima parte del
codice).
Tra l'altro al primo record dovrebbe assegnare sempre un valore casuale e
non 01!
Come posso fare???
Ringrazio tutti quelli che vorranno aiutarmi.
Ciao
Ecla
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

     If (IsNull(rs("contatore"))) Then
Se non ci sono record in rs, non ti restituisce null, quindi passa a
movenext sballando tutto.
Sostituisci il controllo con
if rs.recordcount = 0 then
Antonio


Non funziona lo stesso!
Ho modificato il codice in questo modo:
Dim rs As DAO.Recordset
Dim rs4 As DAO.Recordset
 
    Set rs = CurrentDb.OpenRecordset("SELECT comune FROM configurazione",
dbOpenDynaset)
 
    newIdRichiesta = CStr(rs("comune")) + "/"
 
    Set rs4 = CurrentDb.OpenRecordset("SELECT contatore FROM richieste",
dbOpenDynaset)
        rs.MoveFirst
        If rs.RecordCount = 0 Then
 
        newIdRichiesta = newIdRichiesta + "Me.CurrentRecord"
    Else
    rs.MoveNext
    cont = CStr(rs4("contatore"))
    newIdRichiesta = newIdRichiesta + cont
    End If
 
   idRichiesta.Value = newIdRichiesta
 
   Me.Refresh
quando tento di aprire la maschera si blocca su: "Set rs4 =
CurrentDb.OpenRecordset("SELECT contatore FROM richieste", dbOpenDynaset)" e
mi restituisce il seguente errore:
"errore di run time 3061". Parametri insufficienti. Previsto 1.


                    Il 29 Lug 2004, 13:35, "Antonio Biso" <ch...@NOSPAMetruria.net> ha scritto:

Non funziona!
Ho modificato il codice in questo modo:
Dim rs As DAO.Recordset
Dim rs4 As DAO.Recordset
 
    Set rs = CurrentDb.OpenRecordset("SELECT comune FROM configurazione",
dbOpenDynaset)
 
    newIdRichiesta = CStr(rs("comune")) + "/"
 
    Set rs4 = CurrentDb.OpenRecordset("SELECT contatore FROM richieste",
dbOpenDynaset)
        rs.MoveFirst
        If rs.RecordCount = 0 Then
 
        newIdRichiesta = newIdRichiesta + "Me.CurrentRecord"
    Else
    rs.MoveNext
    cont = CStr(rs4("contatore"))
    newIdRichiesta = newIdRichiesta + cont
    End If
 
   idRichiesta.Value = newIdRichiesta
 
   Me.Refresh
quando tento di aprire la maschera si blocca su: "Set rs4 =
CurrentDb.OpenRecordset("SELECT contatore FROM richieste", dbOpenDynaset)" e
mi restituisce il seguente errore:
"errore di run time 3061". Parametri insufficienti. Previsto 1.


 "errore di run time 3061". Parametri insufficienti. Previsto 1.
prova con select richieste.contatore from richieste
Richieste è una tabella o una query?
Antonio