Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224

    [VB6] Update di una query in Access

    Ciao a tutti...in pratica ho un database in Access in cui c'è una tabella Clienti e una query che si chiama QueryClienti. In Visual Basic ho un pulsante che all'evento click esegue questo codice:

    codice:
    Private cn As New ADODB.Connection
    Private rsClienti As New ADODB.Recordset
    
    cn.CursorLocation = 3
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\database.mdb"
    
    If rsClienti.State = 1 Then
     rsClienti.Close
    End If
    rsClienti.Open "UPDATE QueryClienti SET Nome = 'Pippo'", cn, 3, 3 
    
    rsClienti.Close
    Set rsClienti = Nothing
    cn.Close
    Set cn = Nothing
    Purtroppo l'update non l'esegue perchè mi fa quest'errore:

    codice:
    Per l'operazione è necessaria una query aggiornabile.
    In effetti se vado all'interno del database in Access e visualizzo la query in modalità Foglio Dati non posso modificare alcun valore perchè l'origine dei dati sarebbe la tabella Clienti.

    Ho provato a fare una ricerca sul forum, ma non ho trovato nulla di utile e ho anche provato a cercare nell'help di Access dove mi dice che bisogna utilizzare le relazioni, ma non so utilizzarle.

    Ci sarebbe qualcuno che mi potrebbe spiegare come impostare le query in scrittura come una semplice tabella ? ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Scusami ma che senso ha aggiornare tutti i record della tabella impostando il nome = Pippo?

    Inoltre per aggiornare la query, il campo Nome non deve essere in join con altre tabelle, non puoi variare il campo in questo modo se è una chiave primaria o ha integrità referenziale con altre tabelle.

    Comunque l'errore, secondo me, è nella sintassi della open.

    Se vuoi puoi provare:

    codice:
    cn.execute "UPDATE QueryClienti SET Nome = 'Pippo'"
    oppure:

    codice:
    rsClienti.Open "Select * from QueryClienti ", cn, 3, 3 
    do Until rsClienti.eof 
       rsClienti!nome = "Pippo"
       rsClienti.Update
       rs!Clienti.Movenext
    Loop
    rsClienti.Close
    Ciao

  3. #3
    il problema è che vuoi aggiornare una query... ossia una vista, le viste non sono aggiornabili, devi aggiornare la tabella che ti interessa. le viste servono solo ad avere una query di selezione registarta sun db anzichè nel software e quindi diminuire il traffico in rete... qualora ce ne fosse una...
    I database... la mia passione + o -

  4. #4
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224
    Originariamente inviato da mgmg
    Scusami ma che senso ha aggiornare tutti i record della tabella impostando il nome = Pippo?

    Inoltre per aggiornare la query, il campo Nome non deve essere in join con altre tabelle, non puoi variare il campo in questo modo se è una chiave primaria o ha integrità referenziale con altre tabelle.

    Comunque l'errore, secondo me, è nella sintassi della open.

    Se vuoi puoi provare:

    codice:
    cn.execute "UPDATE QueryClienti SET Nome = 'Pippo'"
    oppure:

    codice:
    rsClienti.Open "Select * from QueryClienti ", cn, 3, 3 
    do Until rsClienti.eof 
       rsClienti!nome = "Pippo"
       rsClienti.Update
       rs!Clienti.Movenext
    Loop
    rsClienti.Close
    Ciao
    Non hai capito cosa intendo dire...pippo era un esempio!!

  5. #5
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224
    Originariamente inviato da power.mobile
    il problema è che vuoi aggiornare una query... ossia una vista, le viste non sono aggiornabili, devi aggiornare la tabella che ti interessa. le viste servono solo ad avere una query di selezione registarta sun db anzichè nel software e quindi diminuire il traffico in rete... qualora ce ne fosse una...
    Hai centrato il mio problema!!! Non è possibile modificare dati ad una query!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Scusatemi ma quanto dite non è vero, una query è aggiornabile come qualsiasi tabella, dipende da cosa si vuole aggiornare e da come è strutturata la query. Prima di scrivere, quando non sono sicura, provo e questo è l'esempio:
    codice:
    UPDATE Query5 SET ee = 100;
    dove Query5 è:
    codice:
    SELECT Codice.Id, Codice.articolo, Codice.ee
    FROM Codice
    ORDER BY IIf(codice!articolo Is Null,0,Val(Mid([ARTICOLO],2,Len([ARTICOLO]))));
    Queste sono query di access!! E con le opportune modifiche si possono riportare nel codice di un progetto di visual basic.
    Ciao

  7. #7
    Petra per favore posti il codice della query di selezione.
    Grazie
    I database... la mia passione + o -

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.