Newsgroup: it.comp.appl.access
Titolo: Problema aggiunta record a tabella da listbox

In una form1 (non associata) ho inserito una listbox1 (con selezione
estesa attiva) con origine dati una tab1 con 2 campi id_txt, descr_txt
(cod_txt contatore, descr_txt testo). Nel corpo della form1 ho inserito
una subform1  con origine dati una tab2 (4
campi:id;cod_p;cod_txt;desc_txt)in relazione, lato molti (cod_txt), con
tab1 (id_txt). Nel piede della form1 ho inserito un pulsante a cui ho
associato il seguente codice VBA:
Private Sub Comando17_Click()
On Error GoTo Err_Comando17_Click
    Dim db As Database
    Dim rst As Recordset
    Dim varItem As Variant
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tab2")
    If Me.listbox1.ItemsSelected.count = 0 Then Exit Sub
        For Each varItem In Me.listbox1.ItemsSelected
            rst.AddNew
            rst!cod_p= Forms!form2.campo1 'preleva un codice
identificativo da un'altra form precedentemente aperta
            rst!Cod_txt = Me.listbox1.Column(0)
            rst!desc_txt = Me.listbox1.Column(1)
            rst.Update
        Next varItem
    Me.listbox1.Selected(i) = False
    Me.subform1_tab2.Requery
Exit_Comando17_Click:
    Exit Sub
Err_Comando17_Click:
    MsgBox Err.Description
    Resume Exit_Comando17_Click
End Sub
Cosa succede? Che se seleziono un record, questo viene regolarmente
accodato, ma se ne seleziono 2 o più, vengono accodati 2 o più
record, ma sempre uguali all'ultimo della lista.
Qualcuno può gentilmente spiegarmi come mai?

 ha scritto nel messaggio news:1120223024.9...@g43g2000cwa.googlegroups.com...





    Me.listbox1.Selected(i) = False
    Me.subform1_tab2.Requery

End Sub

accodato, ma se ne seleziono 2 o piů, vengono accodati 2 o piů
record, ma sempre uguali all'ultimo della lista.
Qualcuno puň gentilmente spiegarmi come mai?
[risposta]
Veramente l'help in linea dell'insieme ItemSelected č chiaro, i valori restituiti li leggi dall'ItemData del copia dell'oggetto 
istanziato, non dalla casella di riepilogo originale;
Es. (tratte dall'help in linea)
L'esempio riportato di seguito consente di stampare il valore della colonna associata a ciascuna riga selezionata nella casella di 
riepilogo Nomi della maschera Contatti.
Sub BoundData()
    Dim frm As Form, ctl As Control
    Dim varItm As Variant
    Set frm = Forms!Contacts
    Set ctl = frm!Names
    For Each varItm In ctl.ItemsSelected
        Debug.Print ctl.ItemData(varItm)
    Next varItm
End Sub
Ciao.
-- 
Sergio MAZZA 

Quindi, non è possibile fare quello che mi serve in questo modo, ma
devo cercare un'altra soluzione?

 ha scritto nel messaggio
news:1120223024.9...@g43g2000cwa.googlegroups.com...





    Me.listbox1.Selected(i) = False
    Me.subform1_tab2.Requery

End Sub

accodato, ma se ne seleziono 2 o piů, vengono accodati 2 o piů
record, ma sempre uguali all'ultimo della lista.
Qualcuno puň gentilmente spiegarmi come mai?
Ciao Mauro,
prova cosě: sostituisci le righe del tuo codice con queste
rst!Cod_txt = Me.listbox1.Column(0,varItem)
rst!desc_txt = Me.listbox1.Column(1,varItem)
leggi sempre la stessa riga, non ti sposti mai.
togli:  Me.listbox1.Selected(i) = False
distruggi le variabili oggetto create :
set db=nothing
set rst=nothing
per queste :
Dim db As Database
Dim rst As Recordset
č meglio scrivere cosě :
Dim db As dao.Database
Dim rst As dao.Recordset
Ciao.

 
Perché? Non è chiaro cosa ho scritto?
Mi sembra di aver scritto tutto il contrario di quello che stai 
affermando ora.
Devi riadattare l'esempio che ti ho inviato...
Ciao.
- -
Sergio MAZZA

Grazie mille dell'aiuto. Funziona tutto.
Ciao

Grazie per la spiegazione tecnica........ci ho messo un po' a capirla,
in quanto non sono proprio così afferrato in materia.
Ciao

 Ciao
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it