Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    [vb6] popolare combo con funzione

    ciao, ho un casino di combobox da popolare sempre allo stesso modo.

    é possibile fare una funzione che prenda come argomenti

    -la query (es: "select * from tabella")
    -la combobox (es: myCombo1)
    -il field da mostrare (es: "campo1")

    la funzione poi fa la query, fa il ciclo e riempie la combo. infine restituisce la combobox riempita.

    ecco cosa ho fatto:
    codice:
    Public Function fillCombo(q As String, ByVal cmb As ComboBox, field As String) As ComboBox
       Dim rst As ADODB.Recordset
       Set rst = Me.exeQuery(q) 'questa funzione é dentro alla classe che si occupa del db
       If Not rst.EOF Then rst.MoveFirst
        Do While Not rst.EOF
            cmb.AddItem (EOF!cause_fra) 'chiaramente dovrebbe essere il campo. ma presumo che non posso mettere una string. intanto é solo per prova
            rst.MoveNext
        Loop
        fillCombo = cmb 'restituisce la combobox
    End Function
    ed ecco come intendo richiamarla... ma non va
    codice:
    Dim qTest2 As String
    qTest2 = "select * from cause"
    Set cmbTest2 = db.fillCombo(qTest2, cmbTest2, "cause_fra") 'db é una mia classe
    cmbTest2.Refresh
    mi aiutate a farla funzionare? (sempre se si puo)
    alcool: la causa e la soluzione di tutti i problemi

  2. #2
    scusa ma a cosa serve il set? basta che richiami la funzione senza bisogno di restituire la combobox ma casomai solo un valore boolean che ti dice se la funzione è andata a buon fine...
    I database... la mia passione + o -

  3. #3
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ho risolto passando la combo byRef.. cosi la funzione non restituisce niente.. semplicemente modifica le proprietà della combo.

    ecco:
    codice:
    Public Function fillCombo(q As String, ByRef cmb As ComboBox, field As String)
       Dim rst As ADODB.Recordset
       'Dim f As field
       'f.Name = field
       Set rst = Me.exeQuery(q)
       If Not rst.EOF Then rst.MoveFirst
        Do While Not rst.EOF
            cmb.AddItem (rst!cause_fra)
            rst.MoveNext
        Loop
    End Function
    ora mi resta da risolvere il problema del campo! come posso fare? nelle righe commentate ho provato a creare un field e ad assegnargli il nome passato alla funzione. ma non credo sia la cosa da fare. consigli? io intanto continuo a cercare
    alcool: la causa e la soluzione di tutti i problemi

  4. #4
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    finalmente ho risolto...

    codice:
    Public Function fillCombo(q As String, ByRef cmb As ComboBox, field As String)
       Dim rst As ADODB.Recordset
       Set rst = Me.exeQuery(q)
       If Not rst.EOF Then rst.MoveFirst
        Do While Not rst.EOF
            cmb.AddItem (rst.Fields(field))
            rst.MoveNext
        Loop
    End Function
    alcool: la causa e la soluzione di tutti i problemi

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.