Prikaz zapisa kot seznama lastnosti
Trenutni zapis obrazca ali zapis, izbran na seznamu, prikažite kot vrstice „napis | vrednost“, razvrščene v kategorije – na primer kot kartico „Lastnosti“ v stranski vrstici.
Zahteva WKL Forms Object Library 1.38 ali novejšo različico.
Pregled rešitve
WklPropertyGrid ima dva načina. Brez RecordSource prikazuje in zapisuje trenutni zapis lastnega
obrazca. Z RecordSource, KeyField in LinkMasterFields prikazuje podrobnosti kontrolnika
WklGrid ali WklTreeList na istem obrazcu. Njegove vrstice so objekti WklColumn (Rows);
Band vrstice je njena kategorija.
Izvedba
Trenutni zapis obrazca – obrazec, vezan na tblStranka, mreža lastnosti brez vira zapisov:
Private Sub Form_Load()
With Me!Props1.Object
.Rows.Clear
.Rows.Add "Ime", "Ime"
.Rows.Add "Kraj", "Kraj", "Naslov"
.Rows.Add "Aktivna", "Aktivna", "Status"
.CategoryCollapsed("Naslov") = False
End With
End Sub
Podrobnosti seznama, katerega vir je prepustna poizvedba: mreža lastnosti bere in zapisuje svoj lastni zapisljivi vir, seznam priskrbi le ključ.
Private Sub Form_Load()
With Me!Props1.Object
.RecordSource = "tblStranka"
.KeyField = "ID"
.LinkMasterFields = "Grid1"
.LinkChildFields = "ID"
End With
End Sub
Private Sub cmdNastaviKraj_Click()
With Me!Props1.Object
If .FieldEditable("Kraj") Then .Value("Kraj") = "Koper"
End With
End Sub
Opombe
- V načinu obrazca spremenjena vrednost označi zapis obrazca kot spremenjen; Access ga shrani, ko uporabnik zapusti zapis ali ko pokličete
Me.Dirty = False, in pri tem izvede preverjanje veljavnosti obrazca in BeforeUpdate. Mreža sledi zapisom obrazca brez kode v modulu obrazca. - Če vrstic ne določite, postane vsako polje vira svoja vrstica z urejevalnikom za njegov podatkovni tip.
- Z naborom zapisov, ki ga preda koda (
Set .Recordset = rs), mreža o viru ne sprašuje ničesar: vsako polje šteje kot urejljivo, spremenjena vrednost pa gre v ta nabor zapisov – ali doseže podatkovno zbirko, je stvar nabora zapisov. Statični ali samo za branje odprti nabor zapisov ADO spremembo brez napake obdrži v pomnilniku: vsako polje je prikazano kot urejljivo, vnesena vrednost je v naboru zapisov, podatkovna zbirka pa ostane nespremenjena. V tem načinu sami nastaviteReadOnlyza vrstice. - Vrstice se na polja sklicujejo z imeni. Preden mreža dobi vir brez teh polj, vrstice izpraznite z
Rows.Clear; vrstica, katere polja novi vir nima, povzroči, da mreža vir zavrne zwkeSourceError(„the recordset has no field …“). - Samo za branje brez nastavitev so: prepustna poizvedba ali poizvedba UNION, izračunano polje, polje s samoštevilom, stolpec, ki ga povezana tabela ODBC sporoča kot neposodobljiv; v načinu obrazca tudi obrazec z
AllowEdits= Ne. Zapisovanje v tako polje s kodo sprožiwkeInvalidValue. - Kako se preveri povezana tabela ODBC: Access sam za skoraj vsak stolpec povezane tabele ODBC sporoča
DataUpdatable = True, zato se mreža na to ne zanaša. Z nizom povezave tabele odpre lastno povezavo in gonilnik za vsak stolpec vpraša (SQLColAttribute: posodobljivost in samodejna vrednost); stolpec, ki ga gonilnik sporoča kot samo za branje ali s samodejno vrednostjo, postane samo za branje. Pravilo, s katerim lahko avtor gonilnika gonilnik preveri brez preizkušanja: stolpec je samo za branje, koSQL_DESC_UPDATABLE(polje 10, v ODBC 2 z imenomSQL_COLUMN_UPDATABLE) vrneSQL_ATTR_READONLY(0) ali koSQL_DESC_AUTO_UNIQUE_VALUE(polje 11) vrne vrednost, različno od 0.SQL_ATTR_WRITE(1) inSQL_ATTR_READWRITE_UNKNOWN(2) brez samodejne vrednosti pustita stolpec, kar zadeva mrežo, zapisljiv; gonilnik, ki za stolpec odgovori „neznano“, mreži ne da ničesar, na podlagi česar bi se odločila, in shranjevanje tedaj odpove na strežniku. Z ODBC Driver 18 for SQL Server so stolpec IDENTITY, izračunani stolpec in stolpecrowversionsamo za branje. Stolpci povezanega pogleda SQL Server, ki izhajajo iz izraza ali skalarne podpoizvedbe, za urejanje niso podprti – ali so prepoznani, je odvisno od tega, kaj gonilnik zanje sporoča. Dokler takega pogleda ne preverite, za te vrstice sami nastaviteReadOnly; shranjevanje, ki vključuje stolpec, ki ga strežnik ne more posodobiti, odpove v celoti in izgubi tudi uporabnikovo drugo spremembo. - Polje, zaklenjeno le za en zapis (ne za vse zapise, kot ga zaklene
ReadOnlyvrstice): vBeforeFieldEditza ta ključ in polje nastaviteCancel = True; urejevalnik se ne odpre. - Kontrolnik števila vrstic ne omejuje; seznami s 100 in več vrsticami niso podprti.
WklGridob odprtju obrazca ne izbere nobenega zapisa: podrobnosti ostanejo prazne, dokler uporabnik prvič ne izbere zapisa.- Strnjene kategorije, nastavljene v pogledu načrta (
CategoryCollapsed), se shranijo z obrazcem; kar strne uporabnik, velja do zaprtja obrazca.
Sorodne teme
- Referenčni priročnik API (v angleščini): WklPropertyGrid (
Rows,Value,FieldEditable,CategoryCollapsed) - Izdelava stranske vrstice s karticami: mreža lastnosti kot ena kartica skupine zavihkov