Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137

    [VB6] errore runtime 2147217900

    ho creato una piccola agennda che si appoggia a un databese access e per la connessione uso ADO , riesco a inserire i dati ma non riesco a modificare i dati gia inseriti, e mi da errore di runtime 2147217900 (80040e14) operatore mancante.
    non riesco a risolvere il problema
    codice:
    Private Sub cmdSalva_Click()
      ' CONTROLLO LA VALIDITA' DEI CAMPI
      If Len(Trim(ragione_sociale.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire la ragione sociale"
        ragione_sociale.SetFocus
      ElseIf Len(Trim(indirizzo.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire indirizzo"
        indirizzo.SetFocus
        ElseIf Len(Trim(citta.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire citta"
        citta.SetFocus
        ElseIf Len(Trim(provincia.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire provincia"
        provincia.SetFocus
        ElseIf Len(Trim(cap.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire cap"
        cap.SetFocus
        ElseIf Len(Trim(nazione.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire nazione"
        nazione.SetFocus
        ElseIf Len(Trim(p_iva.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire partita iva"
        p_iva.SetFocus
        ElseIf Len(Trim(cod_fiscale.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire cod fiscale"
        cod_fiscale.SetFocus
        ElseIf Len(Trim(telefono.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire telefono"
        telefono.SetFocus
        ElseIf Len(Trim(fax.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire fax"
        fax.SetFocus
        ElseIf Len(Trim(email.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire email"
        email.SetFocus
        ElseIf Len(Trim(http.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire http"
        http.SetFocus
      Else ' SE TUTTE LE CONDIZIONI SONO STATE SODDISFATTE...
    
        ' COMANDO SQL A SECONDA CHE SI TRATTI DI UNA INSERT O DI UN UPDATE
        Dim SQL As String
        ' MESSAGGIO DI CONFERMA (SECONDO LO STESSO CRITERIO DESCRITTO SOPRA)
        Dim conferma As String
    
        ' COME SOPRA...
        s = Split(cmbSeleziona.Text, " ")
    
        
       Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
    
      ' APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE I DATI
      
      
    
    'Apro la connessione.
        Const Provider As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\paghe.mdb"
        cn.Open Provider
    
        If cmbSeleziona.Text = "" Then ' ...ESEGUO LA INSERT
          SQL = "INSERT INTO clienti " _
          & "(nome, indirizzo, citta, provincia, cap, nazione, iva, codicefiscale, telefono, fax, email, http) " _
          & "VALUES " _
          & "('" & Replace(ragione_sociale.Text, "'", "''") & "', " _
          & "'" & Replace(indirizzo.Text, "'", "''") & "'," _
          & "'" & Replace(citta.Text, "'", "''") & "'," _
          & "'" & Replace(provincia.Text, "'", "''") & "'," _
          & "'" & Replace(cap.Text, "'", "''") & "'," _
          & "'" & Replace(nazione.Text, "'", "''") & "'," _
          & "'" & Replace(p_iva.Text, "'", "''") & "'," _
          & "'" & Replace(cod_fiscale.Text, "'", "''") & "'," _
          & "'" & Replace(telefono.Text, "'", "''") & "'," _
          & "'" & Replace(fax.Text, "'", "''") & "'," _
          & "'" & Replace(email.Text, "'", "''") & "'," _
          & "'" & Replace(http.Text, "'", "''") & "')"
          conferma = "Inserimento effettuato con successo"
        Else ' ...ESEGUO L'UPDATE
          SQL = "UPDATE clienti SET " _
          & "nome = '" & Replace(ragione_sociale.Text, "'", "''") & "', " _
          & "indirizzo = '" & Replace(indirizzo.Text, "'", "''") & "' " _
          & "citta = '" & Replace(citta.Text, "'", "''") & "' " _
          & "provincia = '" & Replace(provincia.Text, "'", "''") & "' " _
          & "cap = '" & Replace(cap.Text, "'", "''") & "' " _
          & "nazione = '" & Replace(nazione.Text, "'", "''") & "' " _
          & "iva = '" & Replace(p_iva.Text, "'", "''") & "' " _
          & "codicefiscale = '" & Replace(cod_fiscale.Text, "'", "''") & "' " _
          & "telefono = '" & Replace(telefono.Text, "'", "''") & "' " _
          & "fax = '" & Replace(fax.Text, "'", "''") & "' " _
          & "email = '" & Replace(email.Text, "'", "''") & "' " _
          & "http = '" & Replace(http.Text, "'", "''") & "' " _
          & "WHERE id = " & CInt(s(0))
          conferma = "Modifica effettuata con successo"
        End If
    
        ' ESEGUO IL COMANDO SQL CHE ARRIVA DELLA CONDIZIONE
        cn.Execute (SQL)
        lblMessaggio.Caption = conferma
    
        cn.Close
    
        ' PULISCO E RICARICO LA COMBO BOX
        cmbSeleziona.Clear
        Call Form_Load
      End If
    End Sub

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cosa e' s(0) ?

    Perche' mai chiami la Form_Load alla fine?

    Perche' usi la Replace per sostituire le virgolette semplici in doppie anche per campi come il CAP o il telefono o la partita IVA ??

    Hai fatto un po' di debug? Hai visualizzato la stringa SQL poco prima dell'esecuzione della UPDATE?

    In ogni caso, mi sa proprio che l'errore stia in questa riga

    & "WHERE id = " & CInt(s(0))

    ovvero, puo' essere che id non sia numerico nel tuo database ...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137
    ho copiato un mio precedente progetto che funzionava bene ed era questo
    codice:
    Private Sub Csalva_Click()
    Csalva.Enabled = False
      ' CONTROLLO LA VALIDITA' DEI CAMPI
      If Len(Trim(nome_categoria.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire il cliente"
        nome_categoria.SetFocus
      ElseIf Len(Trim(descrizione.Text)) = 0 Then
        lblMessaggio.Caption = "Inserire la data"
        descrizione.SetFocus
      Else ' SE TUTTE LE CONDIZIONI SONO STATE SODDISFATTE...
    
        ' COMANDO SQL A SECONDA CHE SI TRATTI DI UNA INSERT O DI UN UPDATE
        Dim SQL As String
        ' MESSAGGIO DI CONFERMA (SECONDO LO STESSO CRITERIO DESCRITTO SOPRA)
        Dim conferma As String
    
        ' COME SOPRA...
        s = Split(ricerca.Text, " ")
    
        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
    
        Const Provider As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\paghe.mdb"
        cn.Open Provider
        If ricerca.Text = "" Then ' ...ESEGUO LA INSERT
          SQL = "INSERT INTO categorie " _
          & "(nomecategoria, descrizione) " _
          & "VALUES " _
          & "('" & Replace(nome_categoria.Text, "'", "''") & "', " _
          & "'" & Replace(descrizione.Text, "'", "''") & "')"
          conferma = "Inserimento effettuato con successo"
        Else ' ...ESEGUO L'UPDATE
          SQL = "UPDATE categorie SET " _
          & "nomecategoria = '" & Replace(nome_categoria.Text, "'", "''") & "', " _
          & "descrizione = '" & Replace(descrizione.Text, "'", "''") & "' " _
          & "WHERE id = " & CInt(s(0))
          conferma = "Modifica effettuata con successo"
        End If
    
        ' ESEGUO IL COMANDO SQL CHE ARRIVA DELLA CONDIZIONE
        cn.Execute (SQL)
        lblMessaggio.Caption = conferma
    
        cn.Close
    
        ' PULISCO E RICARICO LA COMBO BOX
        ricerca.Clear
        Call Form_Load
      End If
    End Sub

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    ho copiato un mio precedente progetto che funzionava bene ed era questo
    Questo non vuol dire nulla ...

    Ad esempio, chiamare la Form_Load e' sbagliato sia nel primo che nel secondo programma ...

    Ripeto ... di che tipo e' il campo id nel database?

    Hai fatto il debug passo passo (F8) ? (come piu' volte ti hanno suggerito in tanti forum ...)

    Hai visualizzato durante il debug la stringa SQL ?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137
    il campo id è un campo contatore

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da donini
    il campo id è un campo contatore
    Hai fatto il DEBUG?

    Per esempio, se aggiungi la riga in grassetto

    codice:
    conferma = "Modifica effettuata con successo"
    MsgBox SQL
    cosa ti viene visualizzato?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137
    mi viene visualizzato un messaggio dove ci sono tutti i vari campi e alla fine c è scritto
    WHERE id =3 , ma mi da stesso errore di runtime

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sei sicuro che il campo si chiami id ?

    Mostra tutta la stringa cosi' come la vedi ...

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137
    cosa ti devo inviare il messaggio che mi ha risposto?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da donini
    cosa ti devo inviare il messaggio che mi ha risposto?
    Sicuro ...

    E se hai modo di farmi scaricare il file paghe.mdb gli do' un'occhiata ...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.