Newsgroup: it.comp.lang.visual-basic
Titolo: Dbgrid - DataControl e recupero insieme record selezionati.

Salve,
ho una dbgrid con associato un DataControl.
Alla selezione di ogni singolo riga sulla dbgrid, riesco a recuperare il
num. di riga selezionata, ma se uso il tasto ctrl, che mi permette di
selezionare + righe contemporaneamente, non riesco + a recuperare tutte le
righe che ho selezionato.
Qualcuno puņ aiutarmi su come posso riuscire a recuperarle?..
Uso il comando: "Data1.Recordset.AbsolutePosition"
Grazie,
SS.

 ha scritto

http://tinyurl.com/aa4sx

 ha scritto nel messaggio 
news:kjMwe.29337$yM4.4...@twister2.libero.it...

Prova cosi'...
Dim book As Variant
'ciclo per ogni elemento selezionato
For Each book In DataGrid1.SelBookmarks
    MioAdoRecordset.Bookmark=book
    'a questo punto accedi ai campi del recordset come ti pare, es:
     msgbox    MioAdoRecordset!Nome
Next
Umbe 

 > Qualcuno può aiutarmi su come posso riuscire a recuperarle?..



Allora, spero di aver capito bene...tu in pratica vuoi recuperare i record 
relativi alle righe selezionate dal controllo datagrid man mano che vengono 
selezionate.
Se questo è il problema, la soluzione si dovrebbe discostare poco da quello 
che avevo scritto prima.
Infatti consideriamo che il controllo datagrid è sempre associato ad una 
fonte dati ADO ed è la proprietà (della griglia) Bookmark che imposta o 
restituisce il bookmark al record corrente.
Inoltre poichè l'utente puo' scegliere tutte le righe che vuole (anche non 
vicine, cioè puo' scegliere righe non contigue o non adiacenti) , il sistema 
per sapere quali sono le righe selezionate è dato, da quello che mi risulta, 
dalla collection SelBookmarks, che quindi dovrebbe contenere  (come ti ho 
già scritto) tutti i bookmark (e quindi anche i record) selezionati sulla 
griglia.
A questo punto, per arrivare vicino alla soluzione, basta sfruttare un 
evento sempre della griglia che si chiama SelChange, che viene invocato 
quando appunto si seleziona/deseleziona una riga o colonna, anche col CTRL 
per le righe o col Maiuscolo per le colonne).
Sotto questo evento, allora basterà aggiungere alla collection SelBookmarks 
il Bookmark appena selezionato (che corrisponde alla riga della griglia) e 
cioè:
Private Sub griglia_SelChange(Cancel As Integer)
    griglia.SelBookmarks.Add griglia.Bookmark
    MsgBox griglia.SelBookmarks.Count
End Sub
Se tu inserisci questo codice, dovresti vedere aumentare o diminuire il 
numero dei record selezionati man mano che scegli una riga dalla griglia.
Anzichè visualizzare la msgbox come ho fatto io, dovresti poter accedere al 
recordset piu' o meno come ti ho postato precedentemente.
Per eliminare un bookmark, il problema è leggermente piu' complesso e a tal 
proposito ti rimando a MSDN sotto la voce "Insieme SelBookmark"
Questo ovviamente se vuoi mantenere traccia di tutti i record selezionati.
Per accedere invece solo all'ultima selezione fatta (senza scomodare quindi 
la collection), dovresti poter usare solo griglia.bookmark
Queste sono mie considerazioni (non conoscendo esattamente il problema) ed 
inoltre non ho avuto il tempo di verificare il codice ma spero di esserti 
stato quantomeno di aiuto.
Un saluto
Umbe 

 ha scritto nel messaggio
news:l_Ywe.30019$D7.8...@twister1.libero.it...


 SS.
Prova a lavorare con la proprietą item della collection 
SelBookmarks.Dovresti poter fare quello che chiedi.
Ciao
Umbe 

 Prova a lavorare con la proprietà item della collection


 SS.
L'evento SelChange non consente di recuperare i tasti premuti...si 
potrebbero recuperare da un altro evento..dai un occhiata a msde e guarda 
bene l'oggetto datagrid e gli eventi che espone
umbe