![]()
Mi sa tanto che non sono riuscito a farmi capire!!!!![]()
Chiedo scusa pure per gli errori di scrittura.
Vi ripropongo il mio problema schematizzando la cosa in maniera leggermente diversa.
Sperando che risulti più comprensibile.
--------------------------------------------------
Listbox a selezione multipla con proprietà style impostata su 1 "checkbox".
Questa Listbox è popolata da dati stinga prelevati da una tabella access. "Tabella1"
es. "Paolo Rossi", "Paolo Bianchi", ecc.
Seleziono dalla Listbox gli elementi che desidero inviare alla Tabella2.
Quando premo il pulsante "INVIA" mi da giustamente un errore di incompatibilità di dati, in
quanto la Tabella2, nella quale devo salvare i dati, e collegata alla Tabella1 con una relazione numerica e non letterale.
Il punto è che dovrei inviare l'Id relativo a quella stringa e non la stringa stessa.
**************** tabelle access ********************
Tabella 1 :
campo0 = Id; ' Campo Contatore
campo1 = Cognome;
campo2 = Nome;
campo3 = Brano;
ecc...
Tabella 2:
campo0 = Id; ' Campo Numerico
campo1 = Data;
campo2 = Selezione;
ecc...
La Tabella1 e la Tabella2 sono correlate tra loro dal campo "Id" che contiene valori numerici
************* fine tabelle access ******************
'CASO 1: genera errore di incompatibilità dei dati
<Code>
' creo la connessione alla tabella dalla quale voglio prelevare i dati
sql = "SELECT * From Tabella1"
'popolo il controllo List1 con i campi Cognome e Nome es. "Paolo Rossi"
Do Until adoRecordset.EOF
List1.AddItem adoRecordset.Fields(1) & " " & adoRecordset.Fields(2)
'questo non so se è giusto!!
'è così che assegno alla proprietà Index della List1 il valore del campo Id??
List1.ItemData(List1.NewIndex) = AdoRecordset.Fields(0)
adoRecordset.MoveNext
Loop
</Code>
'CASO 2: Funziona
<Code>
sql = "SELECT * From Tabella1"
'popolo il controllo List1 con il campo Id es. "65"
Do Until adoRecordset.EOF
List1.AddItem adoRecordset.Fields(0)
adoRecordset.MoveNext
Loop
</Code>
'Pulsante INVIA
<Code>
' creo la connessione alla tabella alla quale voglio inviare i dati
sqlPr = "SELECT * From Tabella2"
adoRecordsetPr.Open sqlPr, adoConnectionPr, 3, 3
'assegno alla variabile iNumItems il numero di elementi selezionati nel controllo Listbox
iNumItems = List1.SelCount
' se è stato selezionato qualche elemento nella Listbox
If iNumItems Then
ReDim ItemIndexes(iNumItems - 1)
SendMessage List1.hWnd, LB_GETSELITEMS, iNumItems, ItemIndexes(0)
End If
For x = 0 To iNumItems - 1
adoRecordsetPr.AddNew
'qui viene assegnato il valore visualizzato nella Listbox. es "Paolo Rossi"
'mentre vorrei passargli il suo Id. es "65"
adoRecordsetPr("Id") = List1.List(ItemIndexes(x))
adoRecordsetPr.Update
Next x

Rispondi quotando