[VB6]Combo con valori obbligatori

di il
5 risposte

[VB6]Combo con valori obbligatori

Veniamo al mio problema:
ho un combo che pesca i dati da una tabella di un db access e io volevo fare in modo che quando uno deve scrivere nel combo possa scrivere solo quello che c'è dentro ossia se nel combo ci sono 4 valori, ad esempio:
patate, carote, insalata e cipolle
uno non può scrivere cavolfiori e nel caso in cui lo faccia deve uscire un messsaggio di errore.
Chi riesce a darmi na mano?
Grazie


Stefano

5 Risposte

  • Re: [VB6]Combo con valori obbligatori

    Devi impostare la proprietà della ComboBox 'Style' = 2 Dropdown List
    Questo non consente nuove digitazioni, ma solo selezione tra i dati già contenuti nella ComboBox
    Saluti
  • Re: [VB6]Combo con valori obbligatori

    Grazie quello lo sapevo già io però devo poter scrivere dentro ma quando non scrivo un valore già presente al suo interno ed "esco" (magari usando lo stato lostfocus) dal combobox mi esca un msgbox.
    Io per popolare il combobox uso questa procedura:
    rs.Source = "SELECT distinct categoria FROM tblcategoria ORDER BY categoria"
        rs.ActiveConnection = cn
    rs.Open
        Do Until rs.EOF
                CboCategoria.AddItem rs.Fields("categoria")
            rs.MoveNext
        Loop
    rs.Close
    Il mio problema è che non so che codice scrivere nell'evento lostfocus per fare im modo che controlli se nel combobox ho scritto un valore uguale a quello che ho caricato precedentemente nel combobox

    Grazie


    Stefano
  • Re: [VB6]Combo con valori obbligatori

    Scusa la risposta banale, non avevo individuato il problema.
    Usando la tua stessa tecnica:
    Private Sub CboCategoria_LostFocus()
    Dim Esistevalore As Boolean
    
    Esistevalore = False
    rs.Source = "SELECT distinct categoria FROM tblcategoria"
        rs.ActiveConnection = cn
    rs.Open
        Do Until rs.EOF
            If RTrim$(CboCategoria.Text) = RTrim$(rs.Fields("categoria")) Then
                Esistevalore = True
                Exit Do
            End If
            rs.MoveNext
        Loop
    rs.Close
    If Not Esistevalore Then
        MsgBox "Valore inseistente"
        CboCategoria.SetFocus
    End If
    End Sub
    
    Spero risolva
  • Re: [VB6]Combo con valori obbligatori

    Sei un mito Guido, c'è solo un piccolo problema ossia se io ho due combo uno dopo l'altro e nel primo non metto nulla mi esce il msgbox ma poi anzichè ritornare nel combo 1 va nel combo due e poi ritorna nel combo1 e si innesca un loop e non posso più uscire, come lo risolvo?
    Grazie
  • Re: [VB6]Combo con valori obbligatori

    Devi sapere che sono un COBOLista ed ho imparato VB da autodidatta.
    La soluzione che Ti do non è bella, forse ci sono soluzioni tecniche mirate e più eleganti, ma funziona.
    Le mie TextBox sono indicizzate per consentirmi Routines di controlli di validità dei valori quasi parametriche e la possibilità di usare le frecce per spostarmi da un campo all'altro.Quindi Il problema della GotFocus del controllo con TabIndex successivo è stato per me significativo.
    Alla fine uso una variabile Booleana che attivo alla possibile perdita di fuoco che impedisce azioni al campo succcessivo; nell'esempio:
    Option Explicit
    Dim bSetFocus As Boolean
    
    Private Sub CboCategoria_LostFocus()
    Dim Esistevalore As Boolean
    
    Esistevalore = False
    rs.Source = "SELECT distinct categoria FROM tblcategoria"
        rs.ActiveConnection = cn
    rs.Open
        Do Until rs.EOF
            If RTrim$(CboCategoria.Text) = RTrim$(rs.Fields("categoria")) Then
                Esistevalore = True
                Exit Do
            End If
            rs.MoveNext
        Loop
    rs.Close
    If Not Esistevalore Then
        bSetFocus = True
        MsgBox "Valore inesistente"
        CboCategoria.SetFocus
    End If
    End Sub
    
    Private Sub Combo1_GotFocus()
    If bSetFocus Then
        bSetFocus = False
        Exit Sub
    End If
    End Sub
    
    Fammi sapere
    Saluti
Devi accedere o registrarti per scrivere nel forum
5 risposte