Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124

    [VB6] Aggiornare ed Eliminare record

    B.giorno ragazzi,
    sto cercando di eliminare e poi anche modificare un determinato record in un database Access. Con l'eliminazione ecco il risultato:

    codice:
    rs.Open "Fornitore", cn
    Do Until rs.EOF
    If rs("Paese") = "Italy" Or rs("Paese") = "France" Or rs("Paese") = "USA" Then
    If MsgBox ("Vuoi eliminare il fornitore " rs("Azienda") _ 
    & "?" , vbYesNo= = vbYes Then
    cn.Execute "DELETE FROM Fornitore WHERE ID =" _ 
    & rs("ID")
    End If
    End If
    rs.MoveNext
    Loop
    Ecco la modifica:

    codice:
    rs.Open "Prodotti", cn
    Do Untile rs.EOF
    If rs("Quantita") > 30 Then
    newval = InputBox ("Inserisci nuova quantità del prodotto " & _
    rs("NomeProdotto"), , rs("Quantita"))
    If Len(newval) Then
    cn.Execute "UPDATE Prodotti SET Quantita=" & newval & _
    " WHERE IDProdotto =" & rs("IDProdotto")
    End If
    End If
    rs.MoveNext
    Loop

    Come mai l'eliminazione funziona e la modifica no? Dov è l'errore?


    Thanks!

  2. #2
    Questa parte
    codice:
    If Len(newval) Then
    è incompleta ... la stai valutando come se fosse un valore boolean.
    La funzione Len, invece, restituisce un valore integer.

  3. #3
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Se deve essere così? Comunque ho cambiato in quel punto...ho inserito un ">". Però il problema mi viene visualizzato dopo...dice errore!

  4. #4
    Se deve essere così?
    Non può essere così .... non ha senso.
    ...dice errore!
    Quale errore? .... hai scritto davvero solo ">" o ci hai aggiunto anche un numeretto tipo "> 0".?

  5. #5
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Ovvio che ho aggiunto un numero, ma non 0...l'ho adattato al mio programma!
    L'errore viene subito dopo...qui:

    codice:
    cn.Execute "UPDATE Prodotti SET Quantita=" & newval & _
    " WHERE IDProdotto =" & rs("IDProdotto")

  6. #6
    Originariamente inviato da karl93
    Ovvio che ho aggiunto un numero, ma non 0...l'ho adattato al mio programma!
    L'errore viene subito dopo...qui:

    codice:
    cn.Execute "UPDATE Prodotti SET Quantita=" & newval & _
    " WHERE IDProdotto =" & rs("IDProdotto")
    Quale errore? Continui a non dare tutte le informazioni necessarie per aiutarti.

  7. #7
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Cosa vuoi sapere???

  8. #8
    Apetta provo ad essere più chiaro
    Q U A L E - E R R O R E - R I C E V I ?

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Jeremy75
    Questa parte
    codice:
    If Len(newval) Then
    è incompleta ... la stai valutando come se fosse un valore boolean.
    La funzione Len, invece, restituisce un valore integer.
    Non mi pare sia questo il punto.
    Se il risultato dell'espressione Len(newval) è 0 , equivale a False.
    Altrimenti qualsiasi risultato > 0 corrisponde a True.

    Sicuramente è poco leggibile, e dovrebbe essere scritto meglio, ovvero:

    codice:
    If Len(newval) > 0 Then
    e poi perchè dovrebbe essere 'sempre' > 0 ?
    L'utente potrebbe anche voler inserire 0...

    ma i problemi più gravi sono altri!
    C'è un approccio di base completamente sbagliato.
    In tanti tanti anni di programmazione mai visto aprire un recordset (per giunta in modalità tabella, con un cursore ReadOnly e ForwardOnly) per 'smazzolarselo' tutto alla ricerca di determinate condizioni, per poi eseguire una CN.Execute sulla stessa tabella.

    Credo che il problema sia causato proprio dalla modalità di apertura del recordset che blocca la tabella.
    Certo che senza sapere QUALE errore viene segnalato, ci vuole un'indovino!


    Scusa la franchezza, ma questo approccio è davvero orrendo.
    Se penso che nel database dell'azienda in cui sto lavorando ora (DB2 IBM) vi sono tabelle con decine di milioni di record, se implementassi una procedura del genere mi butterebbero fuori a calci senza pensarci un'attimo.


    Suggerirei di rivedere l'approccio.
    Naturalmente è solo la mia umile e modesta opinione.


  10. #10
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Allora subito dopo l'inserimento del dato tramite InpuBox...il programma si blocca e dice:

    "ERRORE DI SINTASSI NELL'ISTRUZIONE UPDATE"

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.