Farbschema: Hell
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Polnjenje vrstice za krmarjenje iz tabele

Polnjenje vrstice za krmarjenje iz tabele

Skupine, vnose in strani kontrolnika WklNavBar hranite v tabeli sprednjega dela, tako da je nova stran nova vrstica in ne sprememba obrazca in njegove kode.

Zahteva WKL Forms Object Library 1.26 ali novejšo različico.

Pregled rešitve

Vezana vrstica svoje skupine in vnose prebere iz RecordSource (tabela, poizvedba ali stavek SQL) in cilj vnosa prikaže sama, brez kode v Navigate:

  • Polja. KeyField je obvezen; TextField, GlyphField, ParentField, SortField, VisibleField, EnabledField in PlaceField so izbirni. Vrstica, ki jo druga vrstica navaja v ParentField, je skupina.
  • Cilji. TargetKindField in TargetField vsakemu vnosu določita cilj: cilj vrste podobrazec postane SourceObject kontrolnika podobrazca, navedenega v TargetControl; cilj vrste obrazec ali poročilo se odpre v lastnem oknu.
  • Začetna stran. NavigateOnOpen (privzeto True) ob odpiranju obrazca enkrat prikaže cilj vnosa, izbranega v načrtu, brez dogodkov.
  • Neshranjene spremembe. ConfirmUnsavedChanges (privzeto True) vpraša, preden cilj vrste podobrazec zamenja stran z neshranjenim zapisom.
  • Težave. Napačna vrstica nikoli ne ustavi obrazca; LoadProblems navede vsako vrstico, ki je bila preskočena ali prikazana brez napačne vrednosti.

Vse to oblikovalnik nastavi brez kode: vrstica Po meri [...], stran Vir podatkov. Njegov gumb Ustvari tabelo predloge ustvari tabelo z oblikovanimi vnosi in nanjo veže vrstico.

Izvedba

  1. Obrazec z vrstico odprite v pogledu načrta in odprite oblikovalnik (vrstica lastnosti Po meri [...]).
  2. Na strani Vir podatkov izberite Ustvari tabelo predloge (ime tabele tblNavigation, če ga ne spremenite). Vrstica dobi tabelo s polji Key, Caption, Glyph, ParentKey, SortOrder, Visible, Enabled, Place, TargetKind in Target, napolnjeno z oblikovanimi vnosi; Visible in Enabled dobita privzeto vrednost Da. Oblikovana skupina brez vnosov je izpuščena, ker je nobena vrstica ne navaja; stran pove, katera.
  3. V razdelku Cilji v polju Podobrazec za strani (TargetControl) izberite kontrolnik podobrazca in oblikovalnik zaprite z V redu.
  4. V tabeli izpolnite cilje. Primer s skupino „Podatki“, stranjo v podobrazcu, obrazcem v lastnem oknu in vnosom ob spodnjem robu:

    KeyCaptionGlyphParentKeySortOrderVisibleEnabledPlaceTargetKindTarget
    startZačetekE80F1YesYesSubformfrmStart
    dataPodatki10YesYes
    ordersNaročilaE8A5data1YesYesSubformfrmNarocila
    customersStrankeE716data2YesYesFormfrmStranke
    optionsMožnostiE7131YesYesbottomFormfrmMoznosti
  5. Odprite obrazec. Vrstica prikaže vrstice tabele, sfPage pa prikaže frmStart, če je start vnos, izbran v načrtu.

Ustvarjanje tabele iz besedila

Aplikacija, zgrajena iz besedila (na primer z orodjem za gradnjo), tabelo namesto z oblikovalnikom ustvari s stavkom. Ta stavek ustvari iste stolpce kot Ustvari tabelo predloge:

CREATE TABLE tblNavigation (
    [KEY] TEXT(50) CONSTRAINT pkNavigation PRIMARY KEY,
    [Caption] TEXT(100), [Glyph] TEXT(10), [ParentKey] TEXT(50), [SortOrder] LONG,
    [Visible] YESNO, [Enabled] YESNO, [Place] TEXT(10), [TargetKind] TEXT(20), [Target] TEXT(64))

Kaj je obvezno in kaj prosto:

  • Imena so obvezna le toliko, kolikor jih navajajo lastnosti polj (KeyField, TextField …). Pri drugih imenih stolpcev nastavite lastnosti nanje.
  • Tipi so prosti. Vrstica vsako vrednost prebere prek vira zapisov in jo razloži: Visible in Enabled sprejmeta Da/Ne, števila (0 je Ne) ali besede Yes/No, True/False, Ja/Nein, Wahr/Falsch, prazna vrednost pa šteje kot Da. SortOrder števila razvrsti po vrednosti, besedilo po abecedi, prazne vrednosti na konec. Place sprejme Top/Bottom, 0/1 ali oben/unten, prazno pomeni zgoraj. TargetKind sprejme števila od 0 do 3 ali besede, naštete v razdelku Opombe. Glyph sprejme kodo v obsegu od E000 do F8FF, kot štiri šestnajstiške števke, s predpono 0x, &H ali U+ ali kot sam znak; prazno pomeni brez simbola. Presledki na začetku in koncu so povsod prezrti.
  • Dolžine določite sami, upoštevajte tri pravila. Key mora biti enoličen; vrstica ključe primerja ne glede na velike in male črke. ParentKey vsebuje ključe, zato mora biti vsaj tako dolg kot Key, sicer skupine z dolgim ključem ni mogoče navesti. Target navaja obrazec ali poročilo, zato 64 znakov, kolikor je omejitev za imena Accessovih objektov, vedno zadošča.

Enaka vezava s kodo, na primer v obrazcu, ki se zgradi med izvajanjem:

Private Sub Form_Load()
    With Me!navMain.Object
        .RecordSource = "tblNavigation"
        .KeyField = "Key": .TextField = "Caption": .GlyphField = "Glyph"
        .ParentField = "ParentKey": .SortField = "SortOrder"
        .VisibleField = "Visible": .EnabledField = "Enabled": .PlaceField = "Place"
        .TargetKindField = "TargetKind": .TargetField = "Target"
        .TargetControl = "sfPage"
        If Len(.LoadProblems) > 0 Then Debug.Print .LoadProblems
    End With
End Sub

Po spremembi tabele, medtem ko je obrazec odprt, pokličite Requery:

Public Sub RefreshNavigation()
    Forms!frmShell!navMain.Object.Requery
End Sub

Opombe

  • Mesto velja za vnose. Skupina je vedno zgoraj; njeno mesto med vrsticami na vrhu določa SortOrder. Bottom v Place vrstice skupine je prezrt, LoadProblems pa vrstico navede.
  • Vrste ciljev so števila naštevanja WklNavTargetKind ali besede Subform, Form, Report (tudi Unterformular, Formular, Bericht). Vrstica ime cilja vrste podobrazec nespremenjeno nastavi kot SourceObject kontrolnika podobrazca, zato delujeta tako ime obrazca kot tabela v obliki Table.tblOrders.
  • Dogodki se še vedno sprožijo. Uporabnikova izbira sproži BeforeNavigate (ki jo lahko prekliče), preden vrstica prikaže cilj, in Navigate po tem. Vnosi brez cilja vse prepustijo dogodku Navigate, kot pri nevezani vrstici.
  • Vrstica sledi svojim ciljem vrste obrazec. Ko obrazec, odprt kot cilj, postane aktivno okno (okno, zavihek dokumenta, Ctrl+F6, DoCmd.SelectObject), vrstica brez dogodkov izbere njegov vnos. To nadomesti kodo v Form_Activate, ki jo stran Odpiranje obrazcev iz vrstice za krmarjenje potrebuje za nevezano vrstico.
  • Stolpci Da/Ne v Accessu nikoli niso Null. Vrstica, dodana brez vrednosti v Visible, ima vrednost Ne in je zato skrita; tabela predloge obema stolpcema da privzeto vrednost Da.
  • Kaj tabela nadomesti. Vrstice tabele v vrstici za krmarjenje nadomestijo oblikovane vnose; Items obdrži oblikovane vnose, ki se shranijo z obrazcem in prikažejo, kadar vira ni mogoče prebrati. Koda lahko vnose vezane vrstice dodaja, spreminja in odstranjuje do naslednjega Requery.
  • Stanje med izvajanjem se ohrani prek Requery. Izbira, značke in zložene skupine ostanejo za ključe, ki še obstajajo; dogodek se ne sproži.
  • Shranjena poizvedba lahko kot parametre navaja kontrolnike obrazca; vrstica jih izpolni tako kot Access, ko obrazec odpre poizvedbo. Tako lahko na primer prikažete vnose glede na vlogo uporabnika.
  • Samo Accessovi obrazci. Vrstica tabelo bere prek primerka Accessa, v katerem je njen obrazec. Na uporabniškem obrazcu (UserForm) v Excelu ali Wordu tega ni: vrstica prikaže oblikovane vnose, Requery pa sproži wkeSourceError („Vrstica ni v Accessovem obrazcu.“).

Sorodne teme

sl/wiki/msaccess/comctl/how-to/fill-the-navigation-bar-from-a-table.txt · Zuletzt geändert: von Wolfgang van der Stille