Newsgroup: it.comp.lang.visual-basic
Titolo: [?][ADO]campi di un recordset non aggiornabili

Situazione:
Eseguo una query su alcune tabelle. La query e' del tipo tabella pivot e 
mi restiuisce i dati aggregati per righe e colonne. Per es.:
Dalla tabella fatture:
data, cliente, importo
ricavo una struttura del tipo
cliente gennaio febbraio marzo ...
rossi       100      150     0
bianchi     1100    3000   150
...
Fin qui nessun problema.
Poiche' pero' questa query non mi restituisce i totali (ed e' abbastanza 
complicato modificarla per farglielo fare) ho pensato:
riempio il recordset, lo disconnetto, aggiungo un record con i totali 
calcolati "a mano" scorrendo il recordset ed infine associo al datagrid 
per la visualizzazione.
Scrivo allora il codice per l'aggiunta del record:
ADORst.Open sql, , adOpenDynamic, adLockOptimistic
adorst.AddNew
adorst!cliente="Totale"
adorst!gennaio=100
...
adorst.update
Il campo cliente me lo lascia inserire, ma non i campi numerici (ed 
infatti La proprieta' Attributes del campo ha il flag adFldUpdatable=0).
L'errore generato e' "-
2147217887
 Gli argomenti non sono di tipo valido, 
non sono compresi nell'intervallo consentito o sono in conflitto."
Se inserisco un valore solo per il campo cliente ed eseguo l'update non 
vengono generati errori!
Mi domando che senso abbia permettere la modifica solo di alcuni campi
di un recordset.
E' possibile forzare nella query adFldUpdatable=1 in modo da poter 
scrivere anche in questi campi?
grazie
	maxx
VB6 SP5
w2k SP3
mdac 2.7
sqlServer 2000
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 abbastanza complicato modificarla per farglielo fare)
CUBE ?
ROLLUP ?
Ciao
Alberto

Il 7/23/2003 2:10 PM, Albe V° scrisse:

I clienti vanno ordinati alfabeticamente, se aggiungo una riga con 
"Totale", sostituendo il NULL generato dal ROLLUP viene ordinato anche 
il totale, allora dovrei aggiungere un'altra colonna per tener conto 
dell'ordinamento, ma la stored procedure e' gia' abbastanza complicata 
di suo (e' un crosstab con il numero di colonne variabile).
Aggiungere un record ad un recordset sembrava cosi' facile ... :-(
Speravo in un tuo suggerimento meno banale! :-)
	maxx

Magari se posti la ddl della sp qua, ma forse sarebbe meglio
su microsoft.public.sqlserver.programming, qualcuno ti può
anche dare una mano ... se però il tuo codice è prezioso
e non puoi divulgarlo accontetati dei suggerimenti di albe.
-- 
Saluti
Andrea Moro

Il 7/23/2003 4:30 PM, Andrea Moro scrisse:

Ma che prezioso! :-)
La stored procedure ch ho utilizzato e' un adattamento di questa:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=u04smHRxBHA.1556%40tkmsftngp03&rnum=11&prev=/groups%3Fq%3DDECLARE%2B%2540NEWLINE%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26start%3D10%26sa%3DN
Ho comunque risolto "velocemente" salvando il risultato in una tabella a 
cui poi aggiungo il record dei totali.
Cio' che mi stupiva era invece la possibilita' di modificare solo alcuni 
campi di un recordset. Che cosa puo' importare ad ADO se decido di 
aggiungere un record ad un recordset che e' pure disconnesso, 
modificando i campi che voglio io e non lui. In fin dei conti se eseguo 
una banalissima query con delle somme, una volta che ADO mi ha fornito 
il risultato perche' deve continuare ad incombere sui miei dati?
ciao
	maxx


 cui poi aggiungo il record dei totali.
?
Scusa, ma se non andava bene il Rollup perchč il record veniva ordinato nel
Sort, facendo cosě alla fine hai comunque un recordset con il campo "Totale"
che viene ordinato.
Mi sfugge il punto del problema...
Ciao
Alberto

 
Il crosstab mi genera un recordset ordinato, ad es per cliente:
cliente   gennaio febbr ...
bianchi	   100    2000
rossi      150    ...
...
Modificando sp_crosstab da "select" a "select into" i record "ordinati" 
vengono inseriti in una tabella d'appoggio.
A questo punto faccio le somme ed aggiungo un record alla tabella 
d'appoggio.
Forse non e' troppo corretto, perche' non e' scontato che visualizzando 
i record della tabella d'appoggio questi vengano visualizzati 
nell'ordine corretto, ma sembra funzionare.
Ripeto pero' che il problema non era quello di trovare una soluzione 
alla query, ma di capire a cosa serve avere un recordset a cui e' 
possibile aggiungere record, ma in cui aluni campi non si possono 
modificare.


 modificare.
Lo so. Stavamo divagando.
Ciao
Alberto


wrote:
Dai un'occhiata a questo link :
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/Articles/q241/8/18.asp&NoWebContent=1
Ciao!

 
L'avevo intuito! ;-)


Il 7/25/2003 11:29 AM, ErPotenza scrisse:

Ah, allora e' by design! Quindi ho anche pagato per avere questa 
funzionalita'!!!
;-)
grazie
	maxx
