Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    156

    Errore -2147217842 (80040e4e) in cancellazione ultimo record

    ciao a tutti
    Ho un form con controlli collegati tramite la proprietà DATASOURCE a un recordset di un data environment.

    Quando cancello l'ultimo record, e poi faccio un addnew, sulla riga dell'addnew Ado restituisce l'errore "-2147217842 (80040e4e) operazione annullata". Perchè??

    Questo errore lo da solamente dopo la cancellazione dell'ultimorecord rimasto, cioè quando il recordset è vuoto.

    grazie

  2. #2
    posta un po di codice, così è un po vago
    *** Rachele TI AMO DA MORIRE!!! ***

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    156
    ok ecco il codice

    EVENTO DEL TASTO "ELIMINA"

    codice:
    Private Sub cmdElimina_Click()
    On Error GoTo errore
    Dim ob As Control
    
    If DE.rscmdS.BOF Or DE.rscmdS.EOF Then
      MsgBox "Nessuna scheda selezionata"
      Exit Sub
    End If
    
    If MsgBox("Sicuro di eliminare la scheda?", vbYesNo, "Eliminazione scheda") = 6 Then
      DE.rscmdS.Delete
      
      If DE.rscmdS.RecordCount = 0 Then
        'Pulizia dei campi
        For Each ob In Me.Controls
          If (TypeOf ob Is TextBox) Or (TypeOf ob Is ComboBox) Then
            ob.Text = ""
          End If
          If (TypeOf ob Is CheckBox) Then
            ob.Value = False
          End If
          If (TypeOf ob Is DTPicker) Then
            ob.Value = Date
            ob.Value = Null
          End If
        Next
        lblLogin(0).Caption = ""
        lblLogin(1).Caption = ""
        
      Else
        Call cmdMove_Click(1)
      End If
    End If
    
    errore:
    If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description
    End Sub
    EVENTO DEL TASTO "NUOVO"
    codice:
    Private Sub cmdNuovo_Click()
    Dim ob As Control
    Dim N As Integer
    
    If Not (DE.rscmdS.EOF And DE.rscmdS.BOF) Then
      If DE.rscmdS.EditMode = adEditAdd Or DE.rscmdS.EditMode = adEditInProgress Then
        MsgBox "Prima salvare il record corrente!", vbCritical, "Attenzione"
        Exit Sub
      End If
    End If
    
    'Assegna il numero alla schedamscbox
    If DE.rscmdS.RecordCount = 0 Then
      DE.rscmdS.AddNew
      txtN = 1
    Else
      DE.rscmdS.MoveLast
      N = DE.rscmdS(0) + 1
      DE.rscmdS.AddNew
      txtN = N
    End If
    
    'Pulizia dei campi
    For Each ob In Me.Controls
      If (TypeOf ob Is TextBox) Or (TypeOf ob Is ComboBox) Then
        If ob.Name <> "txtN" Then ob.Text = ""
      End If
      If (TypeOf ob Is CheckBox) Then
        ob.Value = False
      End If
      If (TypeOf ob Is DTPicker) Then
        ob.Value = Date
        ob.Value = Null
      End If
    Next
    
    cmdSalva.Enabled = True
    End Sub

  4. #4
    Tanto per cominciare le istruzioni di pulizia dei campi mettile in una SubRoutine apposita così scrivi 1/4 di codice.

    poi mi sa che subito dopo il metodo "Delete" ci voglia un metodo "Update" o "Refresh" o "Requery" ma non ne sono sicuro....

    Per il resto non credo ci siano errori...

    ma il messaggio te lo da anche se parti da 0 record senza averne eliminato alcuno?
    *** Rachele TI AMO DA MORIRE!!! ***

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    156
    Originariamente inviato da Dardino
    Tanto per cominciare le istruzioni di pulizia dei campi mettile in una SubRoutine apposita così scrivi 1/4 di codice.

    poi mi sa che subito dopo il metodo "Delete" ci voglia un metodo "Update" o "Refresh" o "Requery" ma non ne sono sicuro....

    Per il resto non credo ci siano errori...

    ma il messaggio te lo da anche se parti da 0 record senza averne eliminato alcuno?
    La parte relativa alla pulizia dei campi ho dovuto metterla li perchè non me li pulisce nonostante i campi siano tutti collegati con DATASOURCE, quindi in teoria se il recordset è vuoto, mi dovrebbe svuotare i campi... cmq sono daccordo sull'utilizzo della sub.

    Ho provato a mettere i metodi che hai detto, oltre che a rebind sul recordset e refresh del form, ma l'errore permane.

    L'errore me lo da solamente sull'addnew dopo che ho eliminato l'ultimo record; se ho due record e ne elimino uno funziona tutto perfettamente...

  6. #6
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    linguaggio e versione?
    ricorda che vanno sempre specificati nel titolo
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Non è che vai oltre la fine del file?
    LM

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    156
    scusa
    linguaggio VB versione 6

    dopo averlo cancellato, le proprietà BOF e EOF sono true, ma questo è normale, visto che ho appena eliminato l'ultimo record...

    secondo me mi incasina il data environment ma non so intercettare dove...

  9. #9
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Perchè non provi ad aggirare il problema, ad esempio prima di Add sposti il cursore di un passo con (il RST deve essere adOpenDynamic):
    RSTpippo.Move (-1)
    LM

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    156
    Non posso fare move -1 perchè il rs è vuoto.. (bof=true, eof=true).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.