Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [vb 6.0] invio dati tramite listbox

    Ciao!!
    Ho un piccolo dilemma da proporvi!
    Ho una listbox con proprietà stile impostata su 1 "checkbox".
    Questa listbox è popolata di dati stinga prelevati da una tabella access. es. "Paolo Rossi",
    "Paolo Bianchi", ecc.
    Ora, seleziono gli elementi desiderati e quando premo il pulsante "invio", mi da giustamente un errore di incompatibilità di dati, in quanto la tabella in cui devo salvare i dati e collegata ad un'altra tabella con una relazione numerica e non letterale.
    Il punto è che dovrei inviare l'Id relativo a quella stringa e non la stinga stessa. come posso fare???

    Vi inserisco un esempio in modo da capirci meglio..

    Tabella 1 : Id; Cognome; Nome; Brano; ecc...
    Query: Id; Nominativo: Tabella1!Cognome & " " & Tabella1!Nome; ecc...
    Tabella 2: Id; Data; Selezione; ecc...

    La Tabella1 e la Tabella2 sono correlate tra loro dal campo Id

    Ora la Listbox viene popolata tamite la Query

    CASO 1: Listbox popolata dal campo Nominativo
    sql = "SELECT * From Query"

    Do Until adoRecordset.EOF """""ERRORE""""
    List1.AddItem adoRecordset.Fields(2) "Campo Nominativo... es. Paolo Rossi"
    adoRecordset.MoveNext
    Loop

    CASO 2: Listbox popolata con il campo Id
    sql = "SELECT * From Query"

    Do Until adoRecordset.EOF """""Funziona""""
    List1.AddItem adoRecordset.Fields(0) "Campo Id... es. 65"
    adoRecordset.MoveNext
    Loop

    Codice per l'invio dei dati

    sqlPr = "SELECT * From Tabella2"

    adoRecordsetPr.Open sqlPr, adoConnectionPr, 3, 3

    iNumItems = List1.SelCount
    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
    adoRecordsetPr("Id") = List1.List(ItemIndexes(x)) ----qui vengono passati i valori selezionati nella Listbox --- è qui che dovrei far passare il valore 65 invece di Paolo Rossi--
    adoRecordsetPr.Update

    Next x

    Ringrazio anticipatamente chiunque voglia darmi una mano.....Ciao

  2. #2

    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

  3. #3
    Come non detto!!
    Finalmente ci sono arrivato!!

    Ora provo ad eliminare gli elementi selezionati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.