Newsgroup: it.comp.appl.access
Titolo: Errore di RunTime "13"...

ciao
in una maschera arrivati al controllo "TxTDataNascita"
mi esce il seguente errore digitando un utente già inserito
nel database...
si evidenzia la riga
 If Nz(DLookup("N_Protocollo", "SQControlloEsistePaziente"), 0) = 0 Then
ecco tutto il codice... me ne potete spiegare il motivo ???
inoltre... se non chiedo troppo alla richiesta di non proseguire
vorrei che il fuoco si spostasse sul controllo ID_Utente....
Grazie a tutti per l'aiuto....
Private Sub txtDataNascita_AfterUpdate()
    If Nz(DLookup("N_Protocollo", "SQControlloEsistePaziente"), 0) = 0 Then
    Exit Sub
    Else
        If MsgBox("Il paziente è stato già inserito!, Proseguire?", vbYesNo
+ vbDefaultButton2, "Pz. presente in elenco") = 7 Then   *(tutto su una
riga)
        Me.Undo
        Exit Sub
        Else
        Exit Sub
        End If
    End If
End Sub

"SuperPippo®_at Home" <ik0qddT...@TOGLISPAMlibero.it> ha scritto nel
messaggio news:SsEcb.346716$Ny5.11...@twister2.libero.it...

Scusa ma con  questa maschera che ci fai?
SunRex

SuperPippo®_at Home ha scritto:


Questa routine è molto molto confusa. Cerca di evitare gli exit sub,
tranne che nella gestione degli errori.
Se scrivevi anche il testo dell'errore sarebbe stato più facile capirlo.
Il nome della tabella o query è scritto giusto? E il nome del campo è
"N_Protocollo" o "N Protocollo" con lo spazio?
Il problema è chiedere una conferma prima di salvare il campo se la
tabella/query contiene già un certo valore, giusto?
Io farei così: (su Form_BeforeUpdate, non txtDataNascita_BeforeUpdate)
Private Sub Form_BeforeUpdate()
   If Nz(DLookup("N_Protocollo","SQControlloEsistePaziente"),0)<>0 Then
      If MsgBox("Il paziente....",vbYesNo)=vbno then Cancel=True
   end if
End sub
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 End sub
--------------------------
ciao... rispondendo a SunRex.. questa maschera è per l'inserimento
di dati anagrafici...
l'errore è il seguente..
Runtime 13 - Tipo non corrispondente...
eppure il controllo N_Protocollo e scritto attaccato...
ho provato il tuo codice...ma l'errore è identico e lo dice alla fine degli
inserimeti in maschera... mentre prima lo diceva dopo il controllo
TxtDataNascita...
ecco il codice utilizzato...grazie per l'aiuto
------------------------------------------
Private Sub Form_BeforeUpdate(Cancel As Integer)
 If Nz(DLookup("N_Protocollo", "SQControlloEsistePaziente"), 0) <> 0 Then
      If MsgBox("Il paziente....", vbYesNo) = vbNo Then Cancel = True
   End If
End Sub

"SuperPippo®_at Home" <ik0qddT...@TOGLISPAMlibero.it> ha scritto nel
messaggio news:UlGcb.347672$lK4.11...@twister1.libero.it...

Il campo N_Protocollo di che tipo è?
Namor

 Namor
Manda anche l'SQL della query, che forse ci si capisce qualcosa di piů su
questo errore.
Namor

 Runtime 13 - Tipo non corrispondente...
E a che ti  serve sta routine sul campo TxTDataNascita?
SunRex
[CUT]

 E a che ti  serve sta routine sul campo TxTDataNascita?
-----------
beh.. mi servirebbe per vedere, senza che arrivo alla fine del DB se dopo
i primi 3 inserimenti l'utente è già in archivio...
cmq.. se vi è una migliore soluzione posso anche rinunciare
a questa routine...
il campo N_Protocollo è di formato Testo, richiesto NO
consenti lunghezza zero NO, Indicizzato (Si, duplicati ammessi)....
ad ogni buon conto allego come da richiesta di
Namor anche il codice SQL della Query...
SELECT TABAnagrafe.*
FROM TABAnagrafe
WHERE (((TABAnagrafe.TxTCognome)=[Forms]![Anagrafe]![txtCognome]) AND
((TABAnagrafe.TxTNome)=[Forms]![Anagrafe]![txtNome]) AND
((TABAnagrafe.TxTDataNascita)=[Forms]![Anagrafe]![txtDataNascita]));
-------------------------
ciao e grazie per l'aiuto...

"SuperPippo®_at Home" <ik0qddT...@TOGLISPAMlibero.it> ha scritto nel
messaggio news:uKVcb.349390$lK4.11...@twister1.libero.it...

Ah SuperPippo ma che per controllare se un paziente è già in archivio gli
fai fare una qry su tre campi?!?!?!?
Se hai un codiceregionale o come dicevi il CodiceFiscale
Fagli controllare solo quello
Sul Click di un tasto
Private Sub Salva_Click()
Dim db as Dao.DataBase
dim rs As DAO.Recordset
Dim strSQL As String
Dim strCodFis As String
txtCodiceFiscale.SetFocus
strCodFis=txtCodiceFiscale.Text
strSQL="SELECT * FROM tblAnagrafe WHERE CodiceFiscale" & strCodFis & ";"
set db=CurrentDb
set rs= db.Openrecordset(strSQL)
IF rs.BOF And rs.EOF Then
'Effettui il salvataggio
Else
Msgbox"Il paziente immesso è già presente in archivio" & rs.Filds("Cognome"
& " " & rs.Fields("Nome") & rs.Fields("CodiceFiscale"),vbInformation
Exit Sub
End If
End Sub
Lo scritto di corsa è indentato che fa schifo ma dovrebbe funzionare.
SunRex

 > beh.. mi servirebbe per vedere, senza che arrivo alla fine del DB se
dopo
[cut]

--------------
ok... quando ho tempo provo la tua soluzione...ma rimane il fatto che
bisogna arrivare alla fine degli inserimenti... qundi perdita di tempo...
e poi controllare se l'utente esiste... se esiste bisogna ricominciare
a scrivere tutti i dati... era questo il mio problema...
Cmq... farotti sapere...

"SuperPippo®_at Home" <ik0qddT...@TOGLISPAMlibero.it> ha scritto nel
messaggio news:TBedb.352028$lK4.11...@twister1.libero.it...

Ma manco per niente.
Partendo dal presupposto che prima di inserire un nuovo paziente
controllerai se non l'hai già in archivio , il controllo sul CodiceFiscale
serve per evitare di inserire duplicati che essendo PK è impossibile.Il
concetto è che quando l'utente inserisce un nuovo paziente gli concedi di
toppare tutti i campi tranne il CodiceFiscale.
Cmq secondo me il fatto è che se vuoi gestire bene l'inserimento di
anagrafiche devi lavorare con VBA.
SunRex

 anagrafiche devi lavorare con VBA.
------------
Ok..mi hai quasi convinto a cancellare tutto quel codice che oltretutto
procura qualche rogna.. etc...
ma mi puoi suggerire un pò di codice VBA da inserire nel controllo
CF in maniera che se doppio avvisi con una finestra???
da considerare che ho un Db che calcola automaticamente il CF
alla pressione del tasto Enter...
oppure posso farlo da tabella direttamente inserendo duplicati
non ammessi ???
che dici ???