Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    2

    Access, recordset non aggiornabile, perche?

    Salve. Chiedo cortesemente aiuto su un problema che non riesco a risolvere. Premetto che non sono un programmatore, diciamo che quando è indispensabile mi arrangio scrivendo qualche riga di codice in vba prendendo spunto dalla rete, ma stavolta non riesco a venirne a capo.
    Riducendo all'osso il problema, ho un db con 2 tabelle:
    1) Impiegati, con i campi:
    - id_impiegato, chiave progressivo numerico;
    - Nome: testo;
    - Cognome: testo;
    - id_mansione: codice della mansione.
    2) Mansioni:
    - id_mansione: chiave, testo;
    - tipo_ansione: testo.

    Le due tabelle sono legate in fk 1 a molti tramite il campo id_mansione. Volutamente banalissimo.

    Sulla maschera Estrai_Dati ho piazzato un bottone premendo il quale viene creato un recordset tramite il quale vengono popolati i campi della sottomaschera Dati_Estratti. Il codice sull'evento on_click del bottone è il seguente:

    Private Sub Comando4_Click()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset

    Set cn = CurrentProject.AccessConnection

    Set rs = New ADODB.Recordset
    With rs
    Set .ActiveConnection = cn
    .Source = "SELECT Impiegati.id_impiegato, Impiegati.nome, Impiegati.cognome, Impiegati.id_mansione, Mansioni.tipo_mansione FROM Mansioni left JOIN Impiegati ON Mansioni.id_mansione = Impiegati.id_mansione"
    .LockType = adLockOptimistic
    .CursorType = adOpenKeyset
    .Open
    End With

    Set Me.Dati_Estratti.Form.Recordset = rs

    Set rs = Nothing
    Set cn = Nothing
    End Sub

    I 4 campi della sottomaschera visualizzata in formato foglio dati sono:
    - Nome: textbox con origine controllo nome;
    - Cognome: textbox con origine controllo cognome;
    - C.Mansione: combobox con origine controllo id_mansione e origine riga la query select * from Mansioni ;
    - Tipo Mansione: una textbox con origine controllo tipo_mansione.

    Il motivo per il quale ho messo la texbox Tipo Mansione subito dopo la combo C.Mansione è ovvio: nella sottomaschera in formato foglio dati la combo conterrà il codice della mansione, modificabile, mentre la textbox la descrizione della mansione.
    Ora , premendo il bottone il recordset viene caricato regolarmente, e questo va bene, però non è aggiornabile, e questo è un guaio!
    Il recordset diventa aggiornabile se elimino dalla sottomaschera il campo Tipo Mansione. Ma la cosa che mi lascia veramente perplesso è che se eseguo la stessa query del codice vba che carica il recordset dalla sezione Query di Access, questa produce un recordset che è regolarmente aggiornabile, perchè?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    2
    Sembra che il problema sia insito in ADO. Ho infatti provato con DAO e tutto funziona regolarmente.

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.