+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: combobox impossibile!!!

  1. #1
    bornslippy non è in linea Scribacchino
    Post
    540
    Vorrei realizzare una combobox in cui i valori della lista li prendo da un campo di una tabella Access e fin qui non dovrebbero esserci problemi, poi una volta che inserisco e convalido un valore per la combobox, aggiorno contemporaneamente la tabella e la lista della combobox. [img]smileys/smiley19.gif[/img]
    Si accettano consigli per una eventuale soluzione.

  2. #2
    delfo999 non è in linea Novello
    Post
    32
    Fossi in te mi creo una piccola sub che effettua la query sul DB e che carica la combo...fatto questo la lanci ad ogni modifica del DB...

  3. #3
    bornslippy non è in linea Scribacchino
    Post
    540
    Sto facendo in questo modo e sembra che funzioni, grazie delfo.

  4. #4
    mark3m non è in linea Novello
    Post
    17
    Quote Originariamente inviato da bornslippy
    Vorrei realizzare una combobox in cui i valori della lista li prendo da un campo di una tabella Access e fin qui non dovrebbero esserci problemi, poi una volta che inserisco e convalido un valore per la combobox, aggiorno contemporaneamente la tabella e la lista della combobox. [img]smileys/smiley19.gif[/img]
    Si accettano consigli per una eventuale soluzione.
    potresti postare il codice che ho lo stesso problema? Grazie

  5. #5
    bornslippy non è in linea Scribacchino
    Post
    540
    Nella Form X in cui sono inserite le combo (supponiamo 2, nel mio progetto ne ho molte di più), ho utilizzato il seguente codice:

    Option Explicit

    Private cnMagazzino As ADODB.Connection
    Private rsStore As ADODB.Recordset
    Private rsBox As ADODB.Recordset
    Private rsCodeDevice As ADODB.Recordset

    --------------------------------------------------------
    Private Sub Form_Load()
    Set cnMagazzino = New ADODB.Connection
    cnMagazzino.CursorLocation = adUseServer
    cnMagazzino.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & NameDB & ".mdb"

    Set rsStore = New ADODB.Recordset
    rsStore.CursorLocation = adUseServer
    rsStore.Open "SELECT * FROM tblStore;", cnMagazzino, adOpenKeyset, adLockPessimistic, adCmdText

    Set rsBox = New ADODB.Recordset
    rsBox.CursorLocation = adUseClient
    rsBox.Open "SELECT Box FROM qryBox ORDER BY Box;", cnMagazzino, adOpenStatic, adLockReadOnly, adCmdText

    Set rsCodeDevice = New ADODB.Recordset
    rsCodeDevice.CursorLocation = adUseClient
    rsCodeDevice.Open "SELECT CodeDevice FROM qryCodeDevice ORDER BY CodeDevice;", cnMagazzino, adOpenStatic, adLockReadOnly, adCmdText

    Call WriteCombo(rsBox, cmbCampo(cBox), cBox)
    Call WriteCombo(rsCodeProject, cmbCampo(cCodeProject), cCodeProject)

    Nel mio caso per i recordset ho utilizzato delle query definite in Access sulla tabella tblStore ma puoi benissimo usare direttamente delle tabelle.

    --------------------------------------------------------

    Private Sub Form_Unload(Cancel As Integer)
    rsCodeDevice.Close
    Set rsCodeDevice = Nothing
    rsBox.Close
    Set rsBox = Nothing
    rsStore.Close
    Set rsStore = Nothing
    cnMagazzino.Close
    Set cnMagazzino = Nothing
    Unload Me
    Set frmNewDevice = Nothing
    End Sub

    --------------------------------------------------------

    La Sub WriteCombo l’ho definita in un modulo e serve per caricare la lista della combo.

    Public Sub WriteCombo(rsApp As ADODB.Recordset, cmbApp As ComboBox, Index As Integer)
    cmbApp.Clear
    If Not rsApp.BOF Then rsApp.MoveFirst
    While Not rsApp.EOF
    Select Case Index
    Case cCodeDevice
    cmbApp.AddItem rsApp!CodeDevice
    Case cBox
    cmbApp.AddItem rsApp!Box
    End Select
    rsApp.MoveNext
    Wend
    End Sub

    -------------------------------------------------------

    Una volta definito il text della combo si deve andare a creare (addnew) o ad aggiornare (update) il record che si sta definendo.

    Al verificarsi di un opportuno evento (non conosco le tue esigenze), nel mio caso alla pressione di un pulsante che ho chiamato “Save”, richiamo la seguente Sub che ho definito nella Form X.

    Private Sub WriteDB()
    Dim varFields As Variant
    Dim varData As Variant

    varFields = Array(“CodeDevice”,”Box”)
    varData = Array(cmbCampo(cCodeDevice),cmbCampo(cBox))
    If blSave Then ‘blSave è una variabile booleana che mi tiene conto se devo creare il record o lo devo aggiornare
    rsStore.Update varFields, varData
    Else
    rsStore.AddNew varFields, varData
    End If

    ‘A questo punto la tabella a cui farai riferimento ha subito una modifica e se hai definito un ordinamente specifico occorre riordinare il ‘tutto con requery

    rsBox.Requery
    rsCodeDevice.Requery

    ‘Ora è il momento di andare a ricaricare la lista della combo.

    Call WriteCombo(rsDevice, cmbCampo(cCodeDevice), cCodeDevice)
    Call WriteCombo(rsBox, cmbCampo(cBox), cBox)
    End Sub


    Non so cosa potrai capirci mi rendo conto che è molto confusionale, comunque per ogni chiarimento sono sempre disponibile.
    Ciao.


+ Rispondi al Thread

Discussioni simili

  1. Excel - ComboBox
    Da raffaela nel forum Excel
    Risposte: 11
    Ultimo Post: 15-12-2011, 12:36
  2. Articolo: ComboBox a completamento automatico
    Da TheTruster nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 13-10-2008, 15:26
  3. Problema Combobox
    Da Cis nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 23-10-2006, 14:42
  4. combobox con Form 2.0
    Da aspineta nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 18-10-2006, 11:53
  5. Combobox in sola lettura
    Da mavy nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 01-12-2005, 23:20

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi