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

    [VB6] - AddItem in DataCombo

    Ciao!
    Ho bisogno di caricare (in vb6) un recordset in una datacombo, necessaria per la ricerca di termini. Ho vist che il metodo AddItem per le DataCombo non esiste, quindi non so come fare. Qualcuno sa come aiutarmi? Ho visto altri esempi nel forum , ma i dati del DB non devono essere passati direttamente alla Combo, ma prima ad un array a piu dimnesioni, che deve caricare successivamente i record nella DataCombo.
    Grazie!!

  2. #2
    il controllo datacombo dovrebbe avere una proprietà che ti permette di associargli il recordset ed il relativo campo... ma non mi ricordo forse "datasource"... ma non sono sicuro... se controlli fra le proprietà dovresti trovare qualcosa...
    I database... la mia passione + o -

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Prova a leggere questo esempio:
    http://msdn.microsoft.com/library/de...pplication.asp

    Ciao

  4. #4
    Puoi utilizzare Le proprietà:

    DataSource 'Risorsa dei dati
    DataMember 'Membro dei dati
    DataField 'Campo dei dati da associare al controllo

    oppure se possiedi un recorset, un Array, ecc. fai un ciclo che riempe la Combo.

    Es per il recordset

    While not Rs.Eof
    Combo.AddItem(Rs("NomeCampo"))
    Rs.MoveNext
    Wend


  5. #5
    Mi spiego meglio.. Avrei voluto usare la DataCombo perchè, a differenza della normale ComboBox ha la possibilità della ricerca termini all'interno della stessa. Però non possiede il metodo .AddItem ... Mi trovo bloccato
    Non sapete se c'è un oggetto alternativo che faccia entrambe le cose (ricerca e metodo .AddItem)??? Grazie

  6. #6
    Ciao..il combobox non avrà il metodo finditem però lo puoi fare manualmente..tempo fa io l'ho fatto per una listview in quanto finditem non mi soddisfaceva..
    Esempio:

    codice:
    record = "ciao" 'voce da cercare nel combo1
    for i = 0 to combo1.listcount - 1
    if ucase(record) = ucase(combo1.list(i)) then
    Msgbox "E' stato trovato un elemento uguale"
    else
    msgbox "Non sono stati trovati elementi simili"
    end if
    Se questa ricerca ti sembra troppo riduttiva ti posterò una mia funzione di ricerca, in cui si specifica il grado di ricerca (cioè se deve cercare solo parole identiche, parziali, con minuscole e maiuscole uguali ecc..

    fammi sapere..

    ciao

  7. #7
    Certo, se non ti secca... Comunque avrei intenzione di mettere, chiaramente al posto delle MsgBox, una lista prima invisibile subito sotto la ComboBox. In questo modo si avrà la sensazione di usare sempre la stessa combo. Che ne dici?

  8. #8
    Ciao..scusa per il ritardo ma ho dovuto riscriverla in quanto non la trovavo più..
    Per usarla occorrono delle piccole istruzioni:

    codice:
    Public Function Cerca(ByVal List As ListBox, ByVal WordToSearch As String, SearchType As Byte, PartialType As Byte, IgnoreShift As Boolean, ElementIndex() As Variant)
    WordToSearch = parola da cercare
    SearchType = 0--> ricerca integrale della parola, ossia restituisce l'index degli elementi formati dalla parola che cerchi
    1--> ricerca graduale: se WordToSearch è per esempio "Ciao" puoi scegliere nel seguente argomento quante lettere di questa parola devi far cercare: ESEMPIO

    SearchType = 1; PartialType = da 1 a 4 in quanto sono i caratteri della parola da cercare: se metti per esempio 2 trova tutti gli elementi il cui text è "ci". Questo serve quando si cerca una parola lunga e non viene trovato il risultato, allora si cerca graduatamente..

    IgnoreShift = Booleano. Se posto uguale a True--> ignora i caratteri minuscoli e maiuscoli, quindi "CIaO" = "ciAO"; al contrario per avere un'uguaglianza esatta occorre mettere questo argomento uguale a False.

    ElementIndex = matrice in cui vengono salvati gli index degli elementi che corrispondono alla ricerca.

    codice:
    Public Function Cerca(ByVal List As ListBox, ByVal WordToSearch As String, SearchType As Byte, PartialType As Byte, IgnoreShift As Boolean, ElementIndex() As Variant)
    
    If SearchType <> 0 And SearchType <> 1 Then msg = "Argomento non valido: deve essere 0 o 1": GoTo Messaggi
    
    If SearchType = 0 Then
    
        If IgnoreShift = True Then
            k = 0
            For i = 0 To List.ListCount - 1
                If UCase(List.List(i)) = UCase(WordToSearch) Then
                    ReDim Preserve ElementIndex(k)
                    ElementIndex(k) = i
                    k = k + 1
                End If
            Next i
        Else
            k = 0
            For i = 0 To List.ListCount - 1
                If List.List(i) = WordToSearch Then
                    ReDim Preserve ElementIndex(k)
                    ElementIndex(k) = i
                    k = k + 1
                End If
            Next i
        End If
    
    ElseIf SearchType = 1 Then
    
        Select Case PartialType
        
            Case Is = 0 'con funz. Instr
                If IgnoreShift = True Then
                   k = 0
                        For i = 0 To List.ListCount - 1
                          If InStr(1, UCase(List.List(i)), UCase(WordToSearch), vbTextCompare) <> 0 Then
                            ReDim Preserve ElementIndex(k)
                              ElementIndex(k) = i
                              k = k + 1
                          End If
                        Next i
                Else
                        For i = 0 To List.ListCount - 1
                          If InStr(1, List.List(i), WordToSearch, vbBinaryCompare) <> 0 Then
                              ReDim Preserve ElementIndex(k)
                              ElementIndex(k) = i
                              k = k + 1
                          End If
                        Next i
                End If
            
            Case Is <> 0
               
               If Len(WordToSearch) < PartialType Then msg = "Il valore dell'argomento PartialType deve essere compreso" _
               & Chr(13) & "tra 0 e la lunghezza dell'argomento WordToSearch": GoTo Messaggi
               
               If IgnoreShift = True Then
                   k = 0
                        For i = 0 To List.ListCount - 1
                          If Left(UCase(WordToSearch), PartialType) = UCase(List.List(i)) Then
                              ReDim Preserve ElementIndex(k)
                              ElementIndex(k) = i
                              k = k + 1
                          End If
                        Next i
                Else
                        For i = 0 To List.ListCount - 1
                          If Left(WordToSearch, PartialType) = (List.List(i)) Then
                              ReDim Preserve ElementIndex(k)
                              ElementIndex(k) = i
                              k = k + 1
                          End If
                        Next i
                End If
               
               
            End Select
    End If
    Exit Function
    Messaggi:
    MsgBox msg, vbCritical, "Funzione Cerca"
    End Function
    codice:
    'Si usa così:
    Dim matr() As Variant
    
    Cerca List1, "dD", 1, 0, True, matr
        
    On Error GoTo risolvi
        For i = 0 To UBound(matr)
            MsgBox matr(i)
        Next i
    Exit Sub
    
    risolvi:
    If Err.Number = 9 Then MsgBox "Non sono stati trovati elementi!"
    E' probabile che tu non capisca tutto immediatamente perchè ho scritto velocemente, cmq fammi sapere..

    ciao

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.