Newsgroup: it.comp.lang.visual-basic
Titolo: DBCombo

Non avendo stuzzicato l'attenzione di alcuno, ripropongo il mio problema.
Ho associato ad un form un controllo DBCombo che, a sua volta, è associato
ad un elemento di un Recordset di database su Access.
Ho inoltre associato a vari Textbox gli altri elementi "colonne" della
stessa tabella.
Vorrei ottenere che al cambiare della scelta sul DBCombo mi si aggiorni il
record corrente in modo che si modifichino anche i vari Textbox.
Ma... è tanto difficile?
Chi, per favore, mi dà una mano?
Grazie
Stefano
st...@tin.it

Guarda, io non uso mai i controlli associati e quindi non so se il DBCombo
muove il recordset ad ogni selezione di un elemento della sua lista.
Può essere, infatti, che esso memorizzi i vari dati nella sua matrice
interna.
Comunque non è un problema, puoi intercettare l'evento Click ed agire di
conseguenza sul recordset.
Io, per esempio, memorizzo nella proprietà ItemData dell'elemento ennesimo
della Combo una chiave che identifica il recordset e sull'evento Click
rifaccio la select del recordset che mi fornisce i campi da mostrare nella
form. Puoi anche memorizzare il Bookmark del record nella proprietà Tag
dell'elemento ennesimo della Combo e, quindi, sull'evento Click riassegnare
il Bookmark al recordset ed aggiornare, di conseguenza, i dati sulla form.
Ciao
    Giuseppe Saffioti
-------------------------------------
pino.s...@tiscalinet.it
pino.s...@asl1.to.it

 Comunque non è un problema, puoi intercettare l'evento Click ed agire di
conseguenza sul recordset. Io, per esempio, memorizzo nella proprietà
ItemData dell'elemento ennesimo della Combo una chiave che identifica il
recordset e sull'evento Click rifaccio la select del recordset che mi
fornisce i campi da mostrare nella form. Puoi anche memorizzare il Bookmark
del record nella proprietà Tag dell'elemento ennesimo della Combo e, quindi,
sull'evento Click riassegnare il Bookmark al recordset ed aggiornare, di
conseguenza, i dati sulla form.
mi sembrava che il dbcombo normalmente si usasse per legare il rs in uso a
un rs di riferimento. dubito che il controllo possa memorizzare tutto il rs
di riferimento: nel caso questo abbia migliaia o milioni di record...
in effetti avevo anche provato da una tabella principale a legarne altre
5-10 attraverso altrettanti dbcombo, e direi che a ogni spostamento della
tab principale i vari combo andassero proprio a cercarsi gli elementi
corrispondenti nelle tab di riferimento.
a parte questo, e' proprio sull'uso del dbcombo che ha in mente piffe che ho
qualche dubbio. il dbcombo dovrebbe servire, p.e., per restituire un campo
descrizione attraverso un legame su un campo codice (seek o select, non
importa).
il punto e': dubito che gli spostamenti nella tabella principale vadano
effettuati attraverso un controllo che punta a una tabella di riferimento.
normalmente li si effettua via datacontrol oppure seek/select sulla
principale (p.e. mediante un textbox in cui si immettono valori ecc.).
il dbcombo dovrebbe avere una funzione 'passiva'. se vuoi muoverti nella
tabella corrente selezionandone un elemento, ti conviene usare un combo
normale, caricandolo via sql e utilizzandolo come dice pino. il dbcombo fra
l'altro e' piuttosto pesante, come controllo.
ciao, a.
ps: gli altri c.d. "elementi colonne della tabella" di solito si chiamano
"campi". "colonna" implica la visualizzazione della tabella in formato
griglia, che non e' certo l'unico possibile. se visualizzi un solo record
(riga, scheda) per volta, "colonna" non ha alcun senso...

record corrente in modo che si modifichino anche i vari Textbox.
poiche' usi un db che supporta il bookmark puoi scrivere
Private Sub DBCombo1_Click(Area As Integer)
    if area=2 then    Rs.Bookmark = DBCombo1.SelectedItem
End Sub
selezioni area 2 per ricevere l'evento sul click nella lista non su altri
elemento del dbcombo
naturalmente le prop rowsource e listfield del dbcombo devono corrispondere
al Recordset
non impostare le prop datasource e datafield e lasciale vuote
perche' di regola non si impostano le prop di edit del dbcombo con lo stesso
recordset che popola il dbcombo
Ciao stefano