Newsgroup: it.comp.appl.access
Titolo: Errore 2105

Con la MiaCasellaCombinata cerco il nome da inserire
nella MiaSottomaschera.
Quando il nome è gia presente nella SM mi segnala:
 Microsoft Visual Basic
Errore di Run-time '2105':
Impossibile passare al record specificato
si potrebbe inserire un messaggio piu significativo che lasci intendere
che si sta tentando di duplicare un record (nella tabella Tb_Presenze)
Grazie Napoleone 

 ha scritto nel messaggio
news:GUaae.79404$zZ1.2...@twister1.libero.it...

Private Sub MiaCasellaCombinata_AfterUpdate()
On Error GoTo ErrHandle
tuo codice vario......
ErrHandle:
    If Err.Number = 2105 Then
        MsgBox"Caro Utonto ,stai cercando di duplicare una record nella
tblPresenze.Ciò è assolutamente impossibile a meno di non chiamare lo
sviluppatore e darglii un 100 eurelli",vbInformation
        exit sub
 End If
End Sub
SunRex



Ciao NApoleone,
 devi gestire l'errore ad esempio mettendo una routine che intercetti gli
errori a livello di maschera, tipo questa:  ( ma sei sicuro che quell'errore
dipenda da un nome già presente? sembra piuttosto un errore  dovuto al
tentativo di andare su un record inesistente..)
Private Sub Form_Error(DataErr As Integer, Response As Integer)
         Dim strMsg As String
    If DataErr = 2105 Then
        Response = acDataErrContinue
        strMsg = "Attenzione nome già inserito"
         MsgBox strMsg
    End If
End Sub
Ciao
Cinzia

 ha scritto nel messaggio 
news:42695208$0$18232$5fc...@news.tiscali.it...

Vi allego il codice dell'evento della mia combo:
Private Sub CasellaCombinata12_AfterUpdate()
Me!sNome = CasellaCombinata12.Column(2)
Me!sCognome = CasellaCombinata12.Column(1)
DoCmd.GoToRecord , , acNewRec
Me!SM_Presenze_oggi2.Requery
Me!CasellaCombinata57.Requery
End Sub
Ripeto, va tutto bene finchè non tento di inserire un nome gia presente.
Microsoft Visual Basic
Errore di Run-time '2105':
Impossibile passare al record specificato
Io l'ho inteso cosi, non riesce ad andare al nuovo record,
perche si tenta di duplicare il valore nell'indice.
Napoleone

 ha scritto nel messaggio
news:SAcae.60079$IN.10...@twister2.libero.it...



Dunque da quel che vedo capisco questo:
hai una casella combinata contenente un elenco di nomi e cognomi, la
selezione della combo va a compilarti 2 controlli della Maschera corrente e
qui potrebbe esserci il primo problema di integrità dei dati (se il nome e
cognome li hai già in un archivio   perchè scriverli anche in un altro
archivio? sempre che i due controlli siano associati a campi...)  ora se
questo nome era già presente in un qualche record della  maschera quando
tenti di andare al Nuovo record ti da l'errore.
Come prima cosa bisogna capire se deve essere possibile avere Nomi duplicati
oppure no ..  (a logica non si dovrebbe .... ma non mi è chiaro cosa stai
registrando in questa maschera...)
se è giusto che non ci siano duplicati la soluzione proposta da sunrex
dovrebbe funzionare...
Ciao
Cinzia

 ha scritto nel messaggio
news:SAcae.60079$IN.10...@twister2.libero.it...

Scusa mi è partito un colpo.
 Su Me!SM_Presenze_oggi2.Requery che succede?
Inoltre secondo me fai troppe cose sull'evento After Update della
CasellaCombinata12 (e cambialo no ,sto nome).
Perchè assegnare i due valori delle colonne dellla combinata così?.Ma sta
maschera da che prende i dati?
Ma la struttura dei dati non dovrebbe essere tipo tblPersone 1 a n con
tblPresenze?
Se è così che stai a fa?
SunRex

 SunRex
Napoleone 

 ha scritto nel messaggio 
news:xLdae.79707$zZ1.2...@twister1.libero.it...

Posso dire con certezza che, a fronte di qualsiasi evento ci sia
DoCmd.GoToRecord , , acNewRec e qual'ora un cliente è gia
presente nella tabella presenze oggi mi da il messaggio di errore 2105.
Ma mi chiedo, esiste un'elenco con tutti i codici errori.
Napoleone 

 ha scritto nel messaggio
news:xLdae.79707$zZ1.2...@twister1.libero.it...

Per evitare che ti lanci l'errore devi prima verificare se già esiste nella
tblPresenzeOggi il cliente.
L'errore nasce dal fatto che mentre carichi i dati del cliente forzi
l'inserimento di un nuovo record.
Quindi o intercetti l'errore oppure ti fai una routine che ti testi prima di
creare un nuovo record se
ne esiste già uno con lo stesso cliente.
P.S.
Se intuisco cosa stai facendo perchè non ti fai un'unica tblPresenze così
strutturata?
IDPresenza Contatore
IDCliente    Numerico (lato n di tblClienti)
DataPresenza  DataBreve
Quando aggiungi un record gli aggiungi l'IDCliente (e non il nome e cognome)
e la data
che se è quella del giorno puoi inserire con Date.
SunRex
Option Compare Database
Option Explicit
Dim intCliente as integer
Private Sub CasellaCombinata12_AfterUpdate()
intCliente = CasellaCombinata12.ItemData(CasellaCombinata12.ListIndex)
    If AggiungiPresenza=True Then
            Me!SM_Presenze_oggi2.Requery
            Me!CasellaCombinata57.Requery
    Else
        Exit sub
    End If
End Sub
Function AggiungiPresenza
Dim rsPresenze As Dao.Recordset
Dim db As Dao.Database
Dim strSQL As String
Dim intX as Integer
AggiungiPresenza = True
strSQL = "SELECT * FROM tblPresenze WHERE IDCLiente = " & intAnagrafica & "
AND DataPresenza = Date "
Set db=CurrentDb
Set rsPresenze=db.Openrecordset(strSQL)
    If rsDitte.BOF And rsDitte.EOF Then
            rsPresenze.AddNew
            rsPresenze.Fields("IDCliente")=intCliente
            rsPresenze.Fields("DataPresenza")=Date()
        rsPresenze.Update
         rsPresenze.Close
       Set  rsPresenze=Nothing
        AggiungiPresenza=True
Else
         rsPresenze.Close
       Set  rsPresenze=Nothing
        msgbox"Il cliente selezionato risulta già presente alla data di
oggi",vbInformation
AggiungiPresenza=False
End Function

     If rsPresenze.BOF And rsPresenze.EOF Then


> End Function
Scusami ma adesso considerando l'ora, il bisogno di aiuto cresce.
Grazie
Napoleone 

 ha scritto nel messaggio
news:Nveae.79763$zZ1.2...@twister1.libero.it...

La metti nel codice della maschera dove sta la casellacombinata.
La funzione va da
FunctionAggiungiPresenza
a
End Function
SunRex

 ha scritto nel messaggio 
news:Nzeae.814353$b5.36...@news3.tin.it...

L'Ho riportato cosi, ma niente, ci riprovo domani mattina.
Function AggiungiPresenza()
 Dim rsPresenze As Dao.Recordset
 Dim db As Dao.Database
 Dim strSQL As String
 Dim intX As Integer
 AggiungiPresenza = True
 strSQL = "SELECT * FROM tblPresenze WHERE IDCLiente = " & intAnagrafica & 
"" And DataPresenza = Date
 Set db = CurrentDb
 Set rsPresenze = db.Openrecordset(strSQL)
     If rsPresenze.BOF And rsPresenze.EOF Then
             rsPresenze.AddNew
             rsPresenze.Fields("lCodiceBarreCLiente") = intCliente
             rsPresenze.Fields("dDataIngresso") = Date
         rsPresenze.Update
          rsPresenze.Close
        Set rsPresenze = Nothing
         AggiungiPresenza = True
 Else
          rsPresenze.Close
        Set rsPresenze = Nothing
         MsgBox "Il cliente selezionato risulta già presente alla data di"
 oggi ",vbInformation"
 AggiungiPresenza = False
End Function
Buona Notte e Grazie
Napoleone