Visualizzazione dei risultati da 1 a 10 su 10

Discussione: vb6 problemi con ado

  1. #1

    vb6 problemi con ado

    codice:
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        stringa = stringa & "gissi.mdb"
        
        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
    
        cn.Open stringa
        rs.Open "SELECT * FROM login", cn, 1
    
        While rs.EOF = False
                'Controllo se i dati immessi sono quelli giusti
                If rs("User") = utentemodifica Then
                rs("Password") = txtpassword1.Text
                rs.Update
                End If
                
                rs.MoveNext
            Wend
        
        
        Set cn = Nothing
        Set rs = Nothing

    Praticamente è il codice che permette di modificare le password
    in "utentemodifica" c'e' l'user che ho selezionato


    l'errore che mi da vb6 e' questo:

    >Errore di run-time 3251
    Il set di record corrente non supporta l'aggiornamento.
    Potrebbe trattarsi di una limitazione del provider o del blocco selezionato
    <

    Quale potrebbe essere il problema...e come poterlo risolvere?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    forse sbaglio maio vedo un

    rs.Update

    senza prima un rs.edit o .addnew

    potrebbe essere li l'errore?

  3. #3
    rs.edit dove lo devo mettere?

    quando scrive rs. tra le varie opzioni selezionabili non c'e' edit....come e' possibile?

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    allora in ADO

    edit nn esiste hai ragione

    sto leggendo la guida e mi pare di capire

    che se scrivi rs.adnew senza poi specificare parametri, lo interpreta come edit

    quind metti addnew e prova!

    va messo nell'if che hai fatto prima del cambio di testo

    rs.addnew
    if then
    text = ......
    rs.update

    ti riporto il frammento di guida (speriamo che non ti ho incasinato)

    Sintassi

    recordset.AddNew elencoCampo, Valori

    Parametri

    ElencoCampo Nome singolo o matrice di nomi o di posizioni ordinali per i campi nel nuovo record (opzionale).

    Valori Valore singolo o matrice di valori per i campi nel nuovo record (opzionale). Se Campi è una matrice, anche Valori dovrà essere una matrice con lo stesso numero di membri, altrimenti si verificherà un errore. L'ordine dei nomi dei campi deve corrispondere all'ordine dei valori dei campi in ciascuna matrice.

    Osservazioni

    Utilizzare il metodo AddNew per creare e inizializzare un nuovo record. Utilizzare il metodo Supports con adAddNew per verificare se è possibile aggiungere record all'oggetto Recordset corrente.

    Dopo che è stato chiamato il metodo AddNew, il nuovo record diventa il record corrente e rimane tale finché non viene chiamato il metodo Update. Se l'oggetto Recordset non supporta segnalibri, potrebbe non essere possibile accedere al nuovo record dopo essersi spostati su un altro record. A seconda del tipo di cursore, potrebbe essere necessario chiamare il metodo Requery per rendere accessibile il nuovo record.

    Se si chiama AddNew durante la modifica del record corrente o durante l'aggiunta di un nuovo record, ADO chiamerà il metodo Update in modo che le modifiche vengano salvate, quindi creerà il nuovo record.

    Il comportamento del metodo AddNew dipende dalla modalità di aggiornamento dell'oggetto Recordset e dal fatto che vengano o meno passati gli argomenti Campi e Valori.

    Nella modalità di aggiornamento immediato, ovvero nella modalità in cui il provider apporta le modifiche nella fonte dati corrispondente dopo che è stato chiamato il metodo Update, se si chiama il metodo AddNew senza argomenti la proprietà EditMode verrà impostata su adEditAdd. Il provider memorizza nella cache qualsiasi modifica dei valori dei campi apportata localmente. Se si chiama il metodo Update, il nuovo record verrà inserito nel database e la proprietà EditMode verrà reimpostata su adEditNone. Se si passano gli argomenti Campi e Valori, il nuovo record verrà inserito immediatamente nel database, senza che sia necessario chiamare il metodo Update. Il valore della proprietà EditMode non verrà tuttavia modificato (adEditNone).

    Nella modalità di aggiornamento batch, ovvero nella modalità in cui il provider memorizza nella cache più modifiche e le apporta nella fonte dati corrispondente solo quando viene chiamato il metodo UpdateBatch, se si chiama il metodo AddNew senza argomenti la proprietà EditMode verrà impostata su adEditAdd. Il provider memorizza nella cache qualsiasi modifica dei valori dei campi apportata localmente. Se si chiama il metodo Update, il nuovo record verrà aggiunto al recordset corrente e la proprietà EditMode verrà reimpostata su adEditNone, ma il provider non inserirà le modifiche nel database corrispondente finché non verrà chiamato il metodo UpdateBatch. Se si passano gli argomenti Campi e Valori, ADO invierà il nuovo record al provider perché lo memorizzi nella cache. Per inoltrare il nuovo record al database corrispondente, è necessario chiamare il metodo UpdateBatch.

  5. #5
    messo cosi' ma niente non va
    codice:
      While rs.EOF = False
        Set Listaprodotti.DataSource = rs
        txtpassword1.DataField = "Password"
        
        
                'Controllo se i dati immessi sono quelli giusti
                If rs("User") = utentemodifica Then
                rs.AddNew
                rs("Password") = txtpassword1.Text
                rs.Update
                End If
                
                rs.MoveNext
            Wend

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    http://forum.html.it/forum/showthrea...light=ado+edit


    un altro utente aveva il tuo problema vedi se ci tifi fuori qualche cosa

  7. #7
    Non c'ho capito una gran che

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Prova con

    rs.Open "SELECT * FROM login", cn, 3, 3
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da oregon
    Prova con

    rs.Open "SELECT * FROM login", cn, 3, 3
    grazie...funzione

    solo che l'ho usato senza capire a cosa serve

    potresti spiegarmi cosa indicano i due 3?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da marcello90
    solo che l'ho usato senza capire a cosa serve
    Basta studiare la documentazione della Open del Recordset che trovi in

    http://msdn.microsoft.com/en-us/library/ms675544(VS.85).aspx

    Al posto dei due 3 potrai usare le costanti elencate per le varie modalità ma, soprattutto, potrai cambiare tali valori in base al tipo di lavoro che vuoi fare con il recordset.

    Ma bisogna che tu abbia anche chiari i concetti di base (recordset, tipo di cursore, tipo di lock ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.