Newsgroup: it.comp.appl.access
Titolo: errore su codice

Set db = CurrentDb
intNuovoRec = Me.NewRecord
If intNuovoRec = True Then
   Set QDF = db.QueryDefs("Cerca codice col per numerazione")
   QDF.Parameters![Cod] = Me.Maker
   Set rs = QDF.OpenRecordset
   If rs.EOF Then
      MsgBox "IL CODICE SUPERIORE DIGITATO NON ESISTE"
      Cancel = True
      Me.Maker.SetFocus
      Exit Sub
===================ERRORE===============================
Errore di compilazione
Impossibile trovare il metodo o il membro dei dati
Su una mascherà ho impostato il codice sopra riportato ma quando tento di
inserire un novo record mi si apre il codice evidenziando la parola
"SetFocus" dandomi l'erore sopra riportato
Su un altro DB il codice funziona
I riferimenti impostati sono uguali in entrambi i DB
C'è un anima gentile che può dirmi l'eventuale causa?
Grazie per le risposte

 ha scritto nel messaggio
news:9pmgli$3m2$1...@nreadb.inwind.it...

Ad occhio sembrerebbe che la tua routine VBA l'hai generata a fronte
dell'evento "Prima di aggiornare" del controllo Maker della tua maschera.
Sembrerebbe inoltre che tu voglia dare un messaggio di errore (e spostare il
fuoco sul controllo chiamato Maker) nel caso in cui in una certa tabella,
sulla quale hai attualmente basato la query chiamata "Cerca codice col per
numerazione", non esista alcun record che nel campo di tipo Numerico
chiamato [cod] abbia il valore digitato nel controllo Maker.
Se la mia sfera di cristallo ha detto la verità e le cose stanno come ho
ipotizzato io. ;-)
Se la tabella che contiene il campo su cui hai attualmente basato la query
si chiama TAbella1.
A fronte dell'evento "Prima di aggiornare" del controllo Maker genera in
codice VBA di questo tipo:
Private Sub Maker_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
    If DCount("cod", "Tabella1", "cod=" & Maker) = 0 Then
        MsgBox "IL CODICE" & Chr(13) + Chr(10) & _
        Me!Maker & Chr(13) + Chr(10) & _
        "DIGITATO NON ESISTE"
        Cancel = True
        Me!Maker.Undo
    End If
End If
End Sub
Resta comunque il fatto che Access ti darà errore se sposti il fuoco sul
controllo Maker all'interno di una routine generata a fronte dell'evento
"Prima di aggiornare" di detto controllo: d'altra parte il fuoco è ancora
posizionato sul controllo; Access ti permetterà di fare il SetFocus solo
dopo che il controllo Maker sarà aggiornato e non sarà più attivo.
In definitiva prova a vedere se tutto marcia eliminando la riga di codice
Me.Maker.SetFocus
o sostituendola con
Me!Maker.Undo
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Naturalmente, se il campo [cod] fosse di tipo Testo, la routin diventerebbe:
Private Sub Maker_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
    If DCount("cod", "Tabella1", "cod=" & Chr$(34) & _
        Maker & Chr$(34)) = 0 Then
        MsgBox "IL CODICE" & Chr(13) + Chr(10) & _
        Me!Maker & Chr(13) + Chr(10) & _
        "DIGITATO NON ESISTE"
        Cancel = True
        Me!Maker.Undo
    End If
End If
End Sub
Una curiosità: perché condizioni la verifica al fatto che stai inserendo un
nuovo record e non la fai comunque, anche quando devi aggiornare un record
già esistente?


 ha scritto nel messaggio
news:9pmmto$36da$1...@stargate1.inet.it...
