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.