Newsgroup: it.comp.appl.access
Titolo: Query UPDATE parametrica

Ciao a tutti.
Ecco il mio problema:
Sto usando un DB access da un'applicazione esterna, attraverso il Jet DB
Engine.
Il linguaggio che uso mi offre una funzione di INSERT automatica, cioè,
io passo il nome della tabella ed una struttura di dati con la stessa
struttura del record. La funzione crea in automatico la query (se la
sbriga da sola a riconoscere i tipi di dati) del tipo INSERT INTO table
VALUES (?, ?, ?) dove il numero di parametri varia a seconda della
struttura e della tabella. Ho sbirciato un pò negli "intrinsics" della
funzione e questa in realtà crea il testo SQL e lo dá assieme alla
struttura ad un'altra funzione che mi isola degli ActiveX del MDAC.
La cosa é molto comoda perchè io mi concentro solo sulla struttura dei
dati e non sulle funzioni di accesso.
Ho voluto creare una funzione simile per fare l'update. Ho copiato quela
funzione, ho rimpiazzato la prima parte che crea il testo SQL in modo
che produca UPDATE table SET field1=?, field2=?, ecc. in modo dinamico,
cioè, a seconda della struttura dati in ingresso. Poi l'ho data in pasto
alla stessa funzione che mi isola degli ActiveX.
Non vuole sapere di funzionare!
Mi ritorna un errore che il manuale traduce in :
Exception occurred in Microsoft JET Database Engine, Operation must use
an updateable query.
Qualcuno ha una spiegazione?
Io ci sto sbattendo la testa da giorni e non ne vengo a capo.
Probabilmiente é una stupidaggine - solo una cosa del genere resiste
tanto tempo!!!
Ringrazio chi mi possa aiutare.
Gilberto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:8a6c30f38e159c1495e...@mygate.mailgate.org...

Ciao Gilberto,
molto probabilmente la query che usi per fare l'aggiornamento è una query
Non aggiornabile, tipicamente sono non aggiornabili le query che fanno dei
raggruppamenti,  query basate su 3 o più tabelle in cui esiste una relazione
molti a uno a molti, query di unione... hai provato ad eseguire quella
stessa query direttamente in Access per vedere se funziona? oppure a provare
l'aggiornamento diretto di una sola tabella....
Facci sapere
Cinzia


Grazie, Cinzia, della risposta.
Io sto cercando di aggiornare una sola tabella e la query in SQL funziona benissimo.
Il problema é che questa mia funzione e si costruisce la query dinamicamente ogni volta in base alla 
struttura di dati che io passo in ingresso: prima costruisce la stringa SQL, poi prende i campi dalla 
struttura uno ad uno e attraverso l'ADO costruisce una query parametrica e fa l'accesso al database.
Se io scrivo la query direttamente in SQL funziona sempre, che io la esegua da Access o dalla mia 
applicazione.
Il vantaggio di questa funzione "dinamica" é che devo solo pensare a tenere allineate la tabella e la 
struttura dati nel mio codice e NON devo toccare le funzioni di write/read/update.
La funzione di lettura (SELECT) funziona, quella di scrittura (INSERT) anche, quella di update mi dà 
quel errore che citavo prima.
Mi viene in mente che possa essere un problema del JET che non suporta query di update parametriche, 
ma mi sembra troppo stupido che suporti l'INSERT parametrico e non l'UPDATE.
Oltre a questo non so cosa pensare!
Gilberto