Třída ComboBoxExtended

 

Třída rozšiřuje vlastnosti prvku combobox o plnění prvku daty s omezením TOP n záznamů podle zadaného textu a o událost onDropDown.

 

Použití třídy pro plnění comboboxu daty má tyto výhody:

1. Data se načítají až při otevření seznamu nebo zápisu dat, nikoli při vstupu do comboboxu.
2. Lze omezit TOP n záznamů. Pokud je záznamů více než n bude se seznam omezovat podle zadaného textu (např. firmy od A, od AL, od ALT - dokud jich bude více než n). Díky tomu se výrazně zrychlí práce nad velkými seznamy.
3. Není vyžadováno propojení tabulky do databáze s formulářem na němž je unístěn prvek combobox.

 

Příklad bez SELECT TOP:

Private Sub Firma_GotFocus()
On Error GoTo Chyba

If m_Firma Is Nothing Then
Set m_Firma = NewComboBoxExtended
With m_Firma
Set .Control = Me!Firma
.SQL = "SELECT Firma FROM Firmy ORDER BY 1"
.Databaze = dbData 'Zadání databáze = nepoužije se propojená tabulka
End With
End If

GoTo Konec
Chyba:
If mChyby.Chyba() = vbRetry Then
Resume
Else
Resume Konec
End If
Konec:

End Sub

 

 

Příklad s SELECT TOP:

If m_FirmaComboExt Is Nothing Then
Set m_FirmaComboExt = New ComboBoxExtended
With m_FirmaComboExt
Set .Control = Me!Firma
.SQL = "SELECT Firma " & _
"FROM Firmy " & _
"WHERE ({2}(Nabizet_v_dokladech=True)) " & _
"ORDER BY Firma;"
.WhereTop = "(Firma Like '{1}') AND"
.SelectTOP = avTop.avTop100
'.Databaze = dbData
End With
End If

Dim m_Firma As ComboBoxExtended

 

V tomto případě je potřeba v SQL výrazu použít podmínku WHERE. Značka {2} v .SQL bude nahrazena hodnotou z .WhereTop. Značka {1} v .SQL (nebo .WhereTOP) bude nahrazena textem vloženým do comboboxu & * - dokud bude počet vrácených záznamů větší než hodnota SelectTOP.