Newsgroup: it.comp.appl.access
Titolo: utilizzo non valido di Null a volte...

Ciao, non soperchč ma a volte mi crea il problema e a volte no. mi spiego
stamane ho iniziato a inserire le schede ad un certo punto non funziona piů
e mi scrive, utilizzo non valido di null,cioč quando gli prende decide di
non andare piů?
ciao
Tz
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 non andare piů?
Per favore puoi dettagliare meglio.
Saluti.


mettici cmq nz(tuovalore,0)
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it


ciao scusa,
questo post faceva parte di uno piů lungo che ho iniziato nei giorni scorsi
ad ogni modo vi spiego cosa accade:
attraverso un menu che ho creato faccio partire questa prima parte di
codice:
********************************
  Dim ds As DAO.Recordset
  Dim db As Database
 
  Set db = CurrentDb
  Set ds = db.OpenRecordset("registro", dbOpenDynaset)
 
    ds.AddNew
    ds.Update
    db.Close
    DoCmd.OpenForm "MA_SCHEDATURA", acNormal, "", "", , acNormal
    DoCmd.GoToRecord acForm, "MA_SCHEDATURA", acFirst
    Call nuovirecordUSvsAQS
********************************
in questo modo creo una primo record nella tabella registro e decido poi di
aprirlo. nel frattempo chiamo un'altra funzione "nuovirecordUSvsAQS"
questa mi permette una volta aperta di inserire il valore dell id chiamato
IdRegGen nelle tabelle collegate.
********************************
Function nuovirecordUSvsAQS()
Dim ds As DAO.Recordset
Dim db As Database
Dim Valore As Integer
Set db = CurrentDb
   ' AGGIUNGI
   DoEvents
   '
   ' Aggiornamento 1° Tabella
   Set ds = db.OpenRecordset("t_amb", dbOpenDynaset)
   Valore = ds("idRegGen")
   ds.AddNew
   ds("IDRegGen") = Forms![ma_schedatura]![idregGen]
   ds.Update
   ds.Close
   Set ds = Nothing
   ' AGGIUNGI
   DoEvents
   '
   ' Aggiornamento 2° Tabella
   Set ds = db.OpenRecordset("t_se", dbOpenDynaset)
   Valore = ds("idRegGen")
   ds.AddNew
   ds("IDRegGen") = Forms![ma_schedatura]![idregGen]
   ds.Update
   ds.Close
   Set ds = Nothing
   ' AGGIUNGI
   DoEvents
   '
   ' Aggiornamento 3° Tabella
   Set ds = db.OpenRecordset("t_q", dbOpenDynaset)
   Valore = ds("idRegGen")
   ds.AddNew
   ds("IDRegGen") = Forms![ma_schedatura]![idregGen]
   ds.Update
   ds.Close
   Set ds = Nothing
    ' AGGIUNGI
   DoEvents
   '
 
   ' Aggiornamento 4° Tabella
   Set ds = db.OpenRecordset("t_annolista", dbOpenDynaset)
   Valore = ds("idRegGen")
   ds.AddNew
   ds("IDRegGen") = Forms![ma_schedatura]![idregGen]
   ds.Update
   ds.Close
   Set ds = Nothing
End Function
********************************
questo sistema funziona solo a volte e non capisco perchč. Alex ha provato
ad aiutarmi modificando parte del codice e speravo di non dover piů chiedere
aiuto su queste funzioni.
la cosa strana č che lo stesso codice, modificato per altre maschere
funziona egregiamente.
Grazie


 funziona egregiamente.
Il codice è lineare.
Ho qualche sospetto per il DoEvents,
che in alcune mie funzioni crea
problemi con i tempi di esecuzione
del codice.
L'errore "utilizzo non valido di null" mi suggerisce
che "idregGen" possa non contenere nulla.
Hai modo di verificare passo passo il valore
di "idregGen"?
Il fatto che in altre maschere io tutto funzioni
rende la cosa più enigmatica.
Saluti


grazie per provare a risolvere il mio problema, punto primo.
dunque andiamo per ordine, prima non c'era il doevents, mi è stato suggerito
da alex, per ovviare al problema, credo ritenesse, in questo modo di essere
certi dello svolgimento del codice. [dico io perchè non sono molto capace
con il codice] ad ogni modo all'inizio aveva funzionato poi no, o meglio non
si è riusciti a superare il problema.
le tabelle collegate hanno impostato come valore predefinito un tipo di dati
numerico con valore 0(zero) per idreggen, stessa cosa anche per le altre
tabelle su cui il codice funziona.
questo è il codice funzionante:
creo una scheda per le immagini......
++++++++++++++++++++++++++++++++++
Function nuovo_record_FOTO()
On Error GoTo nuovo_record_FOTO_Err
  Dim ds1 As DAO.Recordset
  Dim db1 As Database
 
  Set db1 = CurrentDb
  Set ds1 = db1.OpenRecordset("Reg_immagini", dbOpenDynaset)
 
    ds1.AddNew
    ds1.Update
 
    db1.Close
    DoCmd.OpenForm "REGISTRO_IMMAGINI", acNormal, "", "", , acNormal
    DoCmd.GoToRecord acForm, "REGISTRO_IMMAGINI", acFirst
    Call nuovirecordFotoVsAQS ' qui richiamo la funzione nuovirecordFotoVsAQS
per creare in automatico sulle 4 tabelle un record con valore predefinito
idreggen 0
nuovo_record_FOTO_Exit:
    Exit Function
nuovo_record_FOTO_Err:
    MsgBox Error$
    Resume nuovo_record_FOTO_Exit
End Function
++++++++++++++++++++++++++++++++++
Function nuovirecordFotoVsAQS()
Dim ds As DAO.Recordset
Dim db As Database
Dim Valore As Integer
Set db = CurrentDb
   ' Aggiornamento 1° Tabella
   Set ds = db.OpenRecordset("t_amb_f", dbOpenDynaset)
   Valore = ds("IDFOTO")
   ds.AddNew
   ds("IDFOTO") = Forms![registro_IMMAGINI]![IDfoto]
   ds.Update
   ds.Close
   Set ds = Nothing
   ' Aggiornamento 2° Tabella
   Set ds = db.OpenRecordset("t_se_f", dbOpenDynaset)
   Valore = ds("IDFOTO")
   ds.AddNew
   ds("IDFOTO") = Forms![registro_IMMAGINI]![IDfoto]
   ds.Update
   ds.Close
   Set ds = Nothing
 
   ' Aggiornamento 3° Tabella
   Set ds = db.OpenRecordset("t_q_f", dbOpenDynaset)
   Valore = ds("IDFOTO")
   ds.AddNew
   ds("IDFOTO") = Forms![registro_IMMAGINI]![IDfoto]
   ds.Update
   ds.Close
   Set ds = Nothing
   ' Aggiornamento 4° Tabella
   Set ds = db.OpenRecordset("t_us", dbOpenDynaset)
   Valore = ds("IDFOTO")
   ds.AddNew
   ds("IDFOTO") = Forms![registro_IMMAGINI]![IDfoto]
   ds.Update
   ds.Close
   Set ds = Nothing
End Function
non so se hai seguito tutti i post ad ogni modo sulla mia macchina
funzionava tutto quando ho diviso il db e messo in rete si sono verificati
questi problemi. il mio dubbio nasce ora dal fatto che la maschera
ma_schedatura è una maschera con molti controlli e molti dei quali memo non
vorrei che la "pesantezza"della maschera ed una rete a 10mb inficiasse tutto
il mio lavoro
ciao
tz


    '
[cut]
ciao,
Mat.


ciao


 odinamento legato ad un altro controllo della maschera
Questo potrebbe essere un problema: tu dai per scontato che aprendo la maschera il primo record sia quello che hai appena creato
mentre in realtà potrebbe non essere così.
Un'ipotesi è che in alcuni casi il record sia nuovo (intendo vuoto e con IDRegGen=Null), così la funzione nuovirecordUSvsAQS
genererebbe dei record sulle tabelle secondarie t_ con IDRegGen=Null (o per lo meno tenterebbe di farlo).
Una soluzione potrebbe essere quella di passare tramite un argomento della funzione nuovirecordUSvsAQS il valore di IDRegGen che si
vuole sia utilizzato per generare i record sulle tabelle t_
Suppongo che IDRegGen sulla tabella registro sia un contatore.
per es.
Dim NuovoIDRegGen as long
Set ds = db.OpenRecordset("registro", dbOpenDynaset)
ds.AddNew
NuovoIDRegGen=ds("IDRegGen")
ds.Update
db.Close
Call nuovirecordUSvsAQS NuovoIDRegGen
****
Function nuovirecordUSvsAQS(NuovoIDRegGen)
Dim ds As DAO.Recordset
Dim db As Database
Set db = CurrentDb
   ' AGGIUNGI
   DoEvents
   '
   ' Aggiornamento 1° Tabella
   Set ds = db.OpenRecordset("t_amb", dbOpenDynaset)
   Valore = ds("idRegGen")    ' -> Questo lo toglierei
   ds.AddNew
   ds("IDRegGen") = NuovoIDRegGen
   ds.Update
lo stesso vale per le altre tabelle
[cut]
ciao,
Mat.

 Suppongo che IDRegGen sulla tabella registro sia un contatore.
è esatto
ho modificato i tuo codice nel seguente modo:
'------------------------------------------------------------
' nuovo_record_US
'
'------------------------------------------------------------
Function nuovo_record_US()
On Error GoTo nuovo_record_US_Err
Dim NuovoIDRegGen As Long
Set ds = db.OpenRecordset("registro", dbOpenDynaset)
ds.AddNew
NuovoIDRegGen = ds("IDRegGen")
ds.Update
db.Close
Call nuovirecordUSvsAQS(NuovoIDRegGen)
nuovo_record_US_Exit:
    Exit Function
nuovo_record_US_Err:
    MsgBox Error$
    Resume nuovo_record_US_Exit
End Function
Function nuovirecordUSvsAQS(NuovoIDRegGen)
Dim ds As DAO.Recordset
Dim db As Database
Set db = CurrentDb
   ' AGGIUNGI
   DoEvents
   '
   ' Aggiornamento 1° Tabella
   Set ds = db.OpenRecordset("t_amb", dbOpenDynaset)
   ds.AddNew
   ds("IDRegGen") = NuovoIDRegGen
   ds.Update
   ' Aggiornamento 1° Tabella
   Set ds = db.OpenRecordset("t_se", dbOpenDynaset)
   ds.AddNew
   ds("IDRegGen") = NuovoIDRegGen
   ds.Update
   '
   ' Aggiornamento 3° Tabella
   Set ds = db.OpenRecordset("t_q", dbOpenDynaset)
   ds.AddNew
   ds("IDRegGen") = NuovoIDRegGen
   ds.Update '
 
   ' Aggiornamento 4° Tabella
   Set ds = db.OpenRecordset("t_annolista", dbOpenDynaset)
   ds.AddNew
   ds("IDRegGen") = NuovoIDRegGen
   ds.Update
End Function
ma la risposta è:
 necessario oggetto



dove si ferma esattamente (specificalo anche in futuro, non possiamo saperlo qui)?
Hai preso proprio tutto alla lettera, in nuovo_record_US() devi almeno dichiarare db che ds come nella versione originale della
funzione (Dim db as ...).
In nuovirecordUSvsAQS devi dichiarare l'argomento NuovoIDRegGen As long.
Mat.


> [cut]
Ciao,
solo oggi ho potuto riaccendere un pc e controllare la tua risposta, ora
funziona tutto, ti ringrazio e scusa se non mi sono fatto vivo prima.
Buona giornata



Nessun problema, ciao.
Mat.