Funkce MsgVyber

Použití funkce umožňuje vývojáři zobrazit záznamy s možností jejich výběru.

Použití funkce má pro vývojáře tyto výhody:

1. Zobrazení dialogu bez zdlouhavého designování formuláře.
2. Dialog ve stylu Windows Vista.
3. Možnosti rozdělení textu do jednotlivých sekcí podle významu.

 

Syntaxe

MsgVyber(Zdroj As Variant, RozsirenyZdroj As Variant, VyberPodle As String, DB As Database, Optional Titulek As String, Optional HlavniInstrukce As String, Optional SekundarniInstrukce As String, Optional ByVal TypVyberu As avTypVyberu = avNasobnyVyber, Optional Poznamka As String, Optional NazvyPoli As String, Optional TitulkyPoli As String, Optional SirkyPoli As String, Optional VybraneZaznamy As String, Optional Vyska As Integer = 7000, Optional Sirka As Integer = 9000, Optional ZParametry As String, Optional ZNabidnoutZobrazeniVKontextu As Boolean = True, Optional ZPouzitPosledniZobrazeniVKontextu As Boolean = False, Optional ByVal CancelError As Boolean = False, Optional ByVal TypNavratoveHodnoty As avCollectionItems = avPKValue, Optional CekatPriZadnemVyberu As Boolean, Optional ByVal VlastnostiPoli As String) As Collection

Parametry

Zdroj As Variant viz Zdroje dat a příklady.
RozsirenyZdroj As Variant viz Zdroje dat a příklady.
VyberPodle As String Definuje pole, podle kterého se vybírají záznamy.
DB As Database Databáze odkud se volá funkce.
Optional Titulek As String Titulek dialogu.
Optional HlavniInstrukce As String Hlavní instrukce dialogu.
Optional SekundarniInstrukce As String Sekundární instrukce dialogu.
Optional JednoduchyVyber As Boolean = False Určuje, zda se jedná o jednoduchý či násobný výběr.
Optional Poznamka As String Poznámka v zápatí.
Optional NazvyPoli As String Seznam polí oddělený středníky. Pokud je zdoj pole či kolekce tak určuje jak se

dané pole mají jmenovat. Při ostatních zdrojích tento parametr může určovat, které sloupce se mají zobrazit.

 Optional TitulkyPoli As String Titulky polí oddělené středníky.
Optional SirkyPoli As String Šířky polí oddělelené středníky.
Optional VybraneZaznamy As String Seznam polí, které se mají vybrat při otevření oddělený středníky.
Optional Vyska As Integer = 7000 Výška dialogu.
Optional Sirka As Integer = 9000 Šířka dialogu.
Optional ZParametry As String Seznam hodnot parametrů zobrazení oddělený středníky.
Optional ZNabidnoutZobrazeniVKontextu As Boolean = True Pokud True, tak se zobrazí combo s výběrem ostatních zobrazení v daném kontextu.
Optional ZPouzitPosledniZobrazeniVKontextu As Boolean = False Pokud True, tak se vyhledá poslední použité zobrazení v daném kontextu daným uživatelem. Pokud nebude nalezeno, použije se zobrazení z prarametru RozsirenyZdroj.
CancelError Tlačítko Cancel vyvolá výjimku.
TypNavratoveHodnoty Určuje typ návrátové hodnoty. Vraci se vždy kolekce. Kolekce může obsahovat seznam primárních klíčů nebo seznam Dictionary s opisem záznamů.
CekatPriZadnemVyberu Určuje, zda se má code zastavit i ve chvíli, kdy se nevybírá záznam.
VlastnostiPoli Určuje vlastnosti polí formuláře viz. příklad.

 

Základní příklad

Private Sub TestMsgVyberZdrojCodeDbSQL()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
   
    SourceExtended = "SELECT Firmy.Firma, Firmy.Nazev_firmy, Firmy.Mesto, Firmy.Stat FROM Firmy;"
    Set Hodnoty = MSGVyber(CodeDb, SourceExtended, "Firma", CodeDb)
   
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
End Sub

 

Zdroje dat a příklady

Funkce přebírá tyto kombinace zdroje dat:

 

1. SQL string

Zdroj = Database As Database

RozsirenyZdroj = SQL As String

Private Sub TestMsgVyberZdrojCodeDbSQL()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
    
    SourceExtended = "SELECT Firmy.Firma, Firmy.Nazev_firmy, Firmy.Mesto, Firmy.Stat FROM Firmy;"
    Set Hodnoty = MSGVyber(CodeDb, SourceExtended, "Firma", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Firma;Nazev_firmy", "Kontakt", "2000;3000", "")
    
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
End Sub

 

2. Uložený dotaz

Zdroj = Database As Database

RozsirenyZdroj = Název dotazu As String

 Private Sub TestMsgVyberZdrojCodeDbQuery()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
   
    SourceExtended = "D_Kontakty"
    Set Hodnoty = MSGVyber(CodeDb, SourceExtended, "Firma", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Firma;Nazev_firmy", "Kontakt", "2000;3000", "")
 
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
End Sub

 

3. SQL String z cizí databáze

Zdroj = Cizí databáze As String

RozsirenyZdroj = SQL As String

 Private Sub TestMsgVyberZdrojForeignDbSQL()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
   
    SourceExtended = "SELECT Firmy.Firma, Firmy.Nazev_firmy, Firmy.Mesto, Firmy.Stat FROM Firmy"
    Set Hodnoty = MSGVyber("DATA####", SourceExtended, "Firma", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Firma;Nazev_firmy", "Kontakt", "2000;3000", "")
 
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
End Sub

 

4. Uložený dotaz z VarioLib

Zdroj = ""

RozsirenyZdroj = Název dotazu As String

 Private Sub TestMsgVyberZdrojUlozenyDotaz()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
   
    SourceExtended = "R_Agendy"
    Set Hodnoty = MSGVyber("", SourceExtended, "Firma", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Firma;Nazev_firmy", "Kontakt", "2000;3000", "")
 
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
End Sub

 

5. Collection

Zdroj = Collection As Collection

RozsirenyZdroj = ""

Private Sub TestMsgVyberZdrojCollection()
    Dim Hodnoty As Collection
    Dim V As Variant
    Dim colHodnoty As Collection
   
    Set colHodnoty = New Collection
    colHodnoty.Add "Kontakt A"
    colHodnoty.Add "Kontakt B"
    colHodnoty.Add "Kontakt C"
    colHodnoty.Add "Kontakt D"
   
    Set Hodnoty = MSGVyber(colHodnoty, "", "Kontakt", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Kontakt", "Kontakt", "2000", "")
   
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
    Set colHodnoty = Nothing
End Sub

 

6. Array

Zdroj = Array As Variant

RozsirenyZdroj = ""

Private Sub TestMsgVyberZdrojArray()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
    Dim R As Recordset
    Dim arrHodnoty() As Variant
   
    SourceExtended = "SELECT Firmy.Firma, Firmy.Nazev_firmy, Firmy.Mesto, Firmy.Stat FROM Firmy"
    Set R = CodeDb.OpenRecordset(SourceExtended, dbOpenDynaset, dbSeeChanges, dbOptimistic)
    R.MoveLast
    R.MoveFirst
    arrHodnoty = R.GetRows(R.RecordCount)
   
    Set Hodnoty = MSGVyber(arrHodnoty, "", "Firma", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Firma;Nazev_firmy;Mesto;Stat", "Kontakt", "2000;3000", "")
   
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    R.Close
    Set R = Nothing
    Set Hodnoty = Nothing
End Sub

 

7. Recordset

Zdroj = Recordset As Recordset

RozsirenyZdroj = ""

Private Sub TestMsgVyberZdrojRecordset()
    Dim Hodnoty As Collection
    Dim SourceExtended As String
    Dim V As Variant
    Dim R As Recordset
   
    SourceExtended = "SELECT Firmy.Firma, Firmy.Nazev_firmy, Firmy.Mesto, Firmy.Stat FROM Firmy"
    Set R = CodeDb.OpenRecordset(SourceExtended, dbOpenDynaset, dbSeeChanges, dbOptimistic)
   
    Set Hodnoty = MSGVyber(R, "", "Firma", CodeDb, "Titulek", "Výběr kontaktů", "Vyberte kontakty", False, "Poznámka", "Firma;Nazev_firmy", "Kontakt", "2000;3000", "")
 
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    R.Close
    Set R = Nothing
    Set Hodnoty = Nothing
End Sub

 

8. Zobrazení

Zdroj = Kontext Zobrazení as String

RozsirenyZdroj = IDZobrazeni as String

Private Sub TestMsgVyberZdrojZobrazeni()
    Dim Hodnoty As Collection
    Dim V As Variant
   
    Set Hodnoty = MsgVyber("Fakturace", "Doklady/Fakturace 01", "PK", CodeDb, "Fakturace zakázek", "Fakturace zakázek", "Vyberte podklady pro fakturaci", , , , , , , , , """;A - Storex", True, True)
   
    If Not Hodnoty Is Nothing Then
        For Each V In Hodnoty
            Debug.Print CStr(V)
        Next V
    End If
   
    Set Hodnoty = Nothing
End Sub

 

Příklad nastavení vlastností polí

Sub TestMsgVyberVlastnostiPoli()
    On Error GoTo Chyba
   
    MsgVyber "DATA####", "SELECT Polozky_dokladu.Cislo_dokladu, Polozky_dokladu.Popis, Polozky_dokladu.Mnozstvi, Polozky_dokladu.Mnozstvi AS MnozstviNew FROM Polozky_dokladu", "RowGuid", CodeDb, , "Editace množství", VlastnostiPoli:="[MnozstviNew].locked=false;[MnozstviNew].ValidationRule=""<=[Mnozstvi]"";[MnozstviNew].ValidationText=""Množství new musí být menší než množství"";[MnozstviNew].ControlType=111;[MnozstviNew].RowSourceType=""Value list"";[MnozstviNew].RowSource=""1;2;3;4;5"";[MnozstviNew].BackColor=16423586"
   
    GoTo Konec
Chyba:
    If Vario.Chyby.Chyba(Err) = vbRetry Then
        Resume
    Else
        Resume Konec
    End If
Konec:
End Sub

"[Cislo_dokladu].OnDblClick=""=RunRun('<SlozkaVaria>Doplnky\Rezervace_Stigma\Rezervace_Stigma.ZobrazitSeznamPolozek', [Cislo_dokladu])"""