Newsgroup: it.comp.lang.visual-basic
Titolo: Visual Basic 5, Database Access & SQL

Salve a tutti!!!!
Ho un piccolo quesito da porvi.
Con il seguente codice:
============================================================================
==
        Private Sub listapz_DblClick()
        Dim stNome As String
        Dim stSQL As String
        'Ottengo il nome del paziente elencato nella listbox
        stNome = listapz.List(listapz.ListIndex)
        stSQL = "SELECT * FROM Pazienti INNER JOIN DatiTests " & _
                        "ON Pazienti.id_paziente = DatiTests.id_paziente " &
_
                        "WHERE Pazienti.cognome_nome = '" & stNome & "'" & _
                        " ORDER BY DatiTests.data_test"
    With dati_anagrafici
        .RecordSource = stSQL
        .Refresh
    End With
    With dati_tests
        .RecordSource = stSQL
        .Refresh
    End With
If dati_tests.Recordset.RecordCount = 1 Then
    cmdPrecedente.Enabled = False
    cmdSuccessivo.Enabled = False
End If
cmdSalva.Enabled = False
modificapz.Caption = "Modifica i dati di " & stNome
'Chiudo la finestra principale
Unload Me
'Apro la finestra in cui dovrei modificare i dati
modificapz.Show
End Sub
============================================================================
==
è mia intenzione isolare un paziente con i relativi tests a cui si è
sottoposto. Devo dire che la cosa mi riesce e tutto fila liscio. Il problema
sorge quando provo a modificare questi dati o ad aggiungere un nuovo test.
Il programma si pianta dicendomi che il database è di sola lettura e non può
essere modificato. Come posso modificare i record che ho selezionato con
quel comando SQL?
--
              Ciao da Andrea
--== 
dran...@olografix.org
 ==--

>quel comando SQL?
Se la connessione al database non e' in sola lettura il problema sta nel fatto che apri un recordset con una JOIN sql e anche se Access spesso lascia modificare comunque la tabella si vede che nel tuo caso la cosa non e' fattibile. Ovvero non puoi modificare il recordset perche' e' una JOIN tra piu' tabelle.
Antonio

Ciao!!!!


Una cosa non riesco a capire. Su un libro di Visual Basic ho letto quanto
segue:
"...
    Esempi di istruzione SQL Select
Select * From Libri
Select * From Libri, Argomenti
    Where Libri.Codice_Argomento = Argomenti.CodiceArgomento
    Order by Titolo
Notare che il secondo esempio unisce le tabelle Libri e Argomenti in modo
che venga visualizzato il nome effettivo dell'argometo e non solo il
relativo codice. Questo semplice metodo per l'unione di tabelle crea un
recordeset che non può essere aggiornato. Per creare un recordset
aggiornabile, si deve utilizzare la clausola Join dell'istruzione Select,
che però non viene discussa qui. ( :(((( N.d.R.) .... "
Secondo gli autori e' possibile modificare un recordset derivato da una JOIN
tra due tabelle. In che modo!!!!?????
A presto, Andrea.
--== Andrea Di Renzo ==--
 
dran...@olografix.org

              Ciao da Andrea

>tra due tabelle. In che modo!!!!?????
Infatti, come avevo detto nel precedente messaggio, Access permette di modificare delle tabelle i join. Non ricordo esattamente in quale caso ma rispetto all'esempio del libro e' possibile che ti facesse modificare i campi di "Libri" e non quelli di "Argomenti".
Comunque si trattano di estensioni SQL che in genere alri database non supportano. Ho verificato pero' che in alcuni casi anche Sql Server lascia modificare dei campi con tabelle in JOIN.
Nel tuo caso si vede che la cosa non era fattibile oppure che hai modificato un campo della tabella non modificabile. Oppure se usi ADO, ad esempio, al cosa non passa perche' non te lo fa fare ADO.
Prova ad aprire la query dentro Access e prova a modificare dei campi.
Antonio