Newsgroup: it.comp.lang.visual-basic
Titolo: vettore con dati presenti in un recordset

Salve,
dovrei riempire un array con dei dati presenti in un recordset e
precisamente in una colonna (pos_x) prelevata da un database access. Il
codice usato è:
Dim rstFirma1 As New ADODB.Recordset
Dim cmmFirma1 As New ADODB.Command
With cmmFirma1
        .ActiveConnection = cnnDati
        .CommandText = "SELECT pos_x, pos_y, pressure, tempo FROM Firma1"
End With
rstFirma1 = cmmFirma1.Execute
vectPosX() = rstFirma1.GetRows(, adBookmarkFirst, pos_x)
ma mi provoca un errore di compilazione: 'utilizzo di property errato'.
Qualcuno sa dirmi che errore commetto?
Grazie in anticipo

 ma mi provoca un errore di compilazione: 'utilizzo di property errato'.
In quale riga?
termoPilucco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 termoPilucco
Appena  provo il programma con F5 eseguo l'acquisizione dati e poi quando va
a copiare i dati dal recordset all'array dà l'errore e mi evidenzia la riga:
rstFirma1 = cmmFirma1.Execute
sarà qui l'errore? Alla fine si tratta di riempire il recordet con i dato di
una colonna di un database access. La colonna è pox_x e la tabella è Firma1.

 sarà qui l'errore?
insomma, ecco, direi...
se in debug si ferma lì, direi che è estremamente probabile che il problema
sia lì...
stai usando vb6? se sì, il tutto dovrebbe risolversi con un set
strategicamente piazzato.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 Sergio
Si uso VB6. Il set deve riguardare il recordset? Cioč qualcosa del tipo:
Set rstFirma1 = New ADODB.Recordset
posto prima di assegnare al recordset stesso il risultato dell'esecuzione
del comando?
Grazie

 tipo: Set rstFirma1 = New ADODB.Recordset
no. scusa se sono stato laconico nel messaggio di prima.
intendevo dire:
set rstFirma1 = cmmFirma1.Execute
sulla spiegazione puntuale del perchè si faccia così, è una cosa che
coinvolge le proprietà predefinite degli oggetti. in pratica se ometti il
set non assegni alla variabile rstfirma1 il riferimento all'oggetto
restituito dal metodo execute, ma quello della proprietà predefinita di tale
oggetto.
una delle caratteristiche più infide di vb6.


 Sergio
Il tutto sembrerebbe funzionare. Ma ho un altro problemino. Lo scrivo qui
perchè spero non sia necessario creare un nuovo messaggio. Il problema è che
quando provo a copiare i dati dal recordset al vettore il compilatore dice:
'tipo non corrispondente' e evidenzia la riga:
vectPosX() = rstFirma1.GetRows(, , 1)
ove il vectPosX() è un vettore di String (ho provato anche long). Si notino
che i file da copiarvi presi dal recordset come prima specificato sono
presenti in un database access come testo (ma sono numeri ovvero coordinate
nuemriche).
Le ho provate tutte e cioè a modificare il tipo di vectPosX() oppure a
modificare il campo pos_x nel database in numerico, ecc.... secondo voi
perchè mi dà questo errore?
(spero che anche di aver utilizzato correttamente il metodo GetRows visto
che devo copiare tutti i valori del campo pos_x nel vettore).
Grazie ancora.....

 vectPosX() = rstFirma1.GetRows(, , 1)
già, era l'altra riga che, a occhio, poteva dare problemi.
non ricordo di aver mai usato getrows, e adesso non ho voglia di aprire
msdn, però... tra le tante prove che hai fatto, c'è stata anche quella di
togliere le parentesi?
prima che tu mi chieda "dove toglierle", te lo dico io:
vectPosX = rstFirma1.GetRows(, , 1)
:-)


 Sergio
E già, probabilmente hai ragione le parentesi non ci vanno ma il problema
deve essere proprio nel passaggio del campo da copiare nell'array, ovvero
qui:
vectPosX = rstFirma1.GetRows(, , pos_x1)
Il campo nel database (file access) che voglio copiare nell'array si chiama
pos_x1 e si trova nella tabella Firma1. Dopo aver copiato tutta la tabella
nel rstFirma1 (recordset), vorrei copiare nel vettore vectPosX solo i valori
all'interno del campo pos_x1. Quindi nel metodo GetRows suppongo di dovergli
passare come Fields proprio il nome 'pos_x1'.
Ma il compilatore mi dice che la variabile non è stata dichiarata. Bah...
devo dichiararla allora e copiarci il nome del campo che mi interessa e poi
passarlo al metodo GetRows?
Grazie (oggi propprio ho tante difficoltà.... finirò mai il
programma?!?!?!?? eheheh grazie davvero...)

 passarlo al metodo GetRows?
Visto che in un DB possono stare dati di vario tipo, l'unico tipo
predefinito adatto di VB è variant.
Dichiara 
dim vectPosX() as variant
termoPilucco, maieutico


 termoPilucco, maieutico
Gli altri campi presenti nel recordset mi serviranno all'interno della
stessa routine per svolgere altre operazioni. Quindi li ho copiati nel
recordset tutti in una volta sola. Il problema è che il metodo GetRows mi
dice di specificare il campo Field o il numero del campo. Visto che nel file
access il campo pos_x1 è al primo posto ho provato ad inserire 1:
vectPosX = rstFirma1.GetRows(, , 1)
Forse funziona...devo controllare che inserisca nel vettore i valori
corretti...ehmmmm
Grazie comunque.