Newsgroup: it.comp.appl.access
Titolo: RunSQL e gestione errori

Ciao a tutti, vediamo se riesco a spiegare il mio problema.
Ho la seguente subrutine:
   Private Sub cmdVai_Click()
   On Error GoTo Err_Msg
      DoCmd.OpenForm strForm, , , "stringa WHERE che potrebbe contenere un
errore"
   Exit_Err:
      Exit Sub
   Err_Msg:
      Call fcGestioneErrore(Err.Description)
      Resume Exit_Err
   End Sub
Nel caso in cui la suddetta sub vada in errore, come si può vedere viene
eseguita la funzione fcGestioneErrore la quale si preoccupa di inserire un
nuovo record sulla tabella tblErrori formata dai campi Data, Ora e
Descrizione:
   Function fcGestioneErrore(strDescrizione As String)
      Dim strSqlErrore As String
      strSqlErrore = "INSERT INTO tblErrori (Data, Ora, Descrizione) "
      strSqlErrore = strSqlErrore & "VALUES ('" & Date "', '"  & Time & "',
'" & strDescrizione & "')"
      DoCmd.RunSQL strSqlErrore
   End Function
Arrivo al dunque: nel momento in cui l'istruzione DoCmd.OpenForm strForm mi
va in errore (da me forzato per verificare la bontà del meccanismo) a causa
del criterio WHERE, viene richiamata la funzione fcGestioneErrori la quale
mi si blocca sull'istruzione DoCmd.RunSQL strSqlErrore.
Access mi visualizza <errore di sintassi (operatore mancante)
nell'espressione della query "errore di sintassi (operatore mancante)
nell'espressione della query 'IDincontro='.').>
(IDincontro fa parte della stringa WHERE del comando DoCmd.OpenForm)
A parte la rindondanza all'interno del messaggio di errore, non capisco
perchè mi si bocchi sul DoCmd.RunSQL visualizzando un errore inerente
all'istruzione DoCmd.OpenForm.
Scusate il caos.
Grazie a chi mi può dare un mano.
ciao
Massi

 ha scritto nel messaggio
news:bn8sqb$n5r$1...@grillo.cs.interbusiness.it...

Non è che quando inserisci una DATA servono in caratteri speciali "#" per le
date...??
Poi ricordati che quando inserisci una DATA in quel modo devi prima
Formattarla
poichè altrimenti ti troveresti invertito Mese/Anno.
In questo caso è possibile infatti che l'errore venga generato proprio da
questo.
Se fossimo al 10/12/2003(gg/mm/aa) in realtà Access converte in 12/10/2003
formato Inglese (mm/dd/yy), quindi nel tuo caso stai cercando di inserire
un Mese insesistente in quanto 10/23/2003 non esiste...!!!!
Usa per questo la funzione FORMAT per imbrogliare Access convertendola
prima tu così che la 2° inversione riporta tutto OK.
@Alex.

    End Function


Manca un "&" subito dopo Date (e un punto e virgola alla fine, ma credo
che non sia indispensabile):
"VALUES ('" & Date & "', '"  & Time & "','" & strDescrizione & "');"
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 @Alex.
Credo che salvi data e ora in formato testo, infatti li racchiude tra
apici.


 Namor
Intanto grazie per la risposta, il punto però è un altro.
L'istruzione:
    DoCmd.RunSQL strSqlErrore     mi funziona benissimo in tutti i casi
(quindi non vi sono errori di sintassi) escluso nel caso seguente:
forzo un errore sull' istruzione
    DoCmd.OpenForm strForm
il codice giustamente salta sulla funzione fcGestioneErrore e anzichè
eseguire correttamente tale funzione come fa sempre, mi si interrompe
sull'istruzione DoCmd.RunSQL strSqlErrore e mi visualizza un errore access
che non fa riferimento alla riga in cui mi si blocca il codice, ma bensì
all'istruzione DoCmd.OpenForm strForm.
Boh.

Massi ha scritto:





Adesso non riesco a provare il tuo codice per vedere se capisco cosa c'è
che non va. Prova a semplificarlo così (più semplice = meno probabilità di
errori) e vedi che succede:
Private Sub cmdVai_Click()
On Error resume next
  DoCmd.OpenForm strForm, , , "stringa WHERE"
  if err.number>0 then Call fcGestioneErrore(Err.Description)
End Sub


 Namor
Ho provato e mi dà gli stessi problemi.
Credo che il guaio sia connesso all'oggetto "err", ho provato varie cose tra
cui l'utilizzo di  err.clear, ma niente.
Accantono questa funzionalità che non è urgente, magari ci ritorno su con
calma più avanti.
Grazie per il tuo interessamento,
ciao
Massimo