Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64

    [VB6] Problema con DataCombo.BoundText

    In un mio programmino ho creato una funzione che esamina un gruppo di DataCombo indicizzati.
    I datacombo sono legati ad un adodc, da cui prendno un elenco di elementi. Nel campo Boundtext è conservato l'indice (la chiave, nel database) di tali elementi.

    La sub così creata è piuttosto semplice, creando un pulsante di prova nel form che la contiene (e che contiene i datacombo), funzona perfettamente.
    Nel programma però devo lanciare la sub da un altro form (che gestisce l'aggiornamento dei dati che vanno nel datacombo).
    Lanciata da li, la sub funziona male e genera un errore.

    L'elemento incriminato è proprio il campo BoundText.
    Nel primo caso (da dentro il form), restituisce regolarmente l'indice dell'elemento scelto, e tutto funziona.
    Nel secondo caso (dall'altro form), restituisce invece il testo selezionato, generando l'errore (uso il dato per fare un confronto con un intero).

    Il parametro passato alla sub, in entrambi i casi, è lo stesso.

    Qualche suggerimento o spiegazione?

    Grazie!
    La risposta è dentro di te...
    ... e però, è sbagliata!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    Nessuna idea?
    Purtroppo se non risolvo questo problema sono fermo...
    La risposta è dentro di te...
    ... e però, è sbagliata!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    Pare che l'errore sia dovuto al refresh dell'adodc a cui sono legati i DataCombo, refresh che faccio subito prima di richiedere il DataCombo.BoundText
    Qualche idea del perchè?

    In pratica:
    Chiamiamo Form1 quello in cui stanno i DataCombo
    Chiamiamo Form2 quello da cui aggiorno il database e richiamo la funzione

    - modifico il dato nel database, tramite adodc2, che sta nel form2
    - refresh dell'adodc2 (dopo .update e .close)
    - refresh dell'adodc1, per aggiornare i datacombo (per esempio se aggiorno il nome di uno degli elementi in lista, viene aggiornato anche nei datacombo).
    - richiamo la funzione, una funzione pubblica del form1, che verifica il valore DataComboX.BoundText

    In questo modo la lettura di DataComboX.BoundText non restituisce il valore ID dell'elemento in lista ma il suo campo testo (ossia la voce che appare nella lista a tendina).

    Riuscite a vedere dove possa essere il problema?
    La risposta è dentro di te...
    ... e però, è sbagliata!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    Dop altre prove, posso dire concertezza che il problema sta nel Form1.Adodc1.Refresh.

    Senza di esso però non sono in grado di aggiornare il contenuto dei datacombo dopo averli modificati.
    Qualche soluzione?
    La risposta è dentro di te...
    ... e però, è sbagliata!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    mmm... bello, questo monologo! :master:

    Non ho risolto del tutto il problema, ma pare che, riselezionando le voci della lista nei DataCombo, questi tornino a funzionare correttamente, e le informazioni contenute nel .BoundText tornino reperibili.

    Il problema è che, andando perse tali informazioni, per riselezionare correttamente le voci nella lista ho bisogno di memorizzarle in un array, cosa un po' complicata, che fallisce nel momento in cui la modifica effettuata alla lista riguarda proprio il nome che appare.

    Per ovviare al problema, al momento ho semplicemente impedito la modifica di un elemento in uso (ossia selezionato in uno dei datacombo).

    Se qualcuno ha qualche altra idea più funzionale...
    La risposta è dentro di te...
    ... e però, è sbagliata!

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.