sql >> Databasteknik >  >> RDS >> Access

ListView-kontroll med Ms-Access TreeView

Introduktion.

Microsoft Access ListView Control Project har designats och demonstrerats här, i det här avsnittet av TreeView Control Tutorial. Huvuduppgiften är att först fylla i TreeView-kontrollen med produktens kategoriartiklar. Vid valet av ett kategoriobjekt på TreeView-kontrollen har de relaterade produktposterna filtrerats från produkttabellen och listats i ListView-kontrollen. Varje posts fältvärden visas i olika kolumner.

Vi är bekanta med TreeView, ImageList och ImageCombo Controls och arbetade med dem i tidigare avsnitt.

ListView-kontrollen visar data från tre olika fält i tre olika kolumner. Kolumnerna kommer att ha kolumnrubriker och andra kolumnegenskaper, som ReportIcons, Tooltip Text .

Produktposten har flera fält och alla kan inte visas i ListView Control, med flera kolumner i ett litet område. När ett objekt har valts i ListView-kontrollen i stället öppnas ett annat formulär med fullständig information om den valda produktposten. Kortfattat, detta är vad vi planerar att göra här, genom att använda kontrollerna TreeView, ListView och ImageList.

ListView Control-egenskaperna har liknande egenskaper som Microsoft Access ListBox Control. Den har kolumner för att visa relaterade värden bredvid varandra, under varje kolumnrubrik. Kolumnbredden egenskapsvärdet, för varje kolumn, säkerställer att fältvärdet har tillräckligt med utrymme för att visa innehållet korrekt. ListView-objektet svarar på klick så att vi kan utföra andra åtgärder, som att öppna Formulär, Rapport, Makro eller anropa andra funktioner, om det behövs.

Länkar till tidigare självstudiesessioner.

  1. Microsoft TreeView Control Tutorial.
  2. Skapar åtkomstmeny med TreeView-kontroll.
  3. Tilldela bilder till TreeView-kontroll.
  4. Tilldela bilder till TreeView Control-2, skapa ImageList Control som kan delas med andra projekt.
  5. TreeView Control Markera Lägg till, ta bort noder.
  6. TreeView ImageCombo rullgardinsmeny.
  7. Arrangera om TreeView-noder genom att dra och släppa.

Artiklar om åtkomstlistboxkontroll.

I Microsoft Access kan vi använda ListBox-kontrollen för att visa information och använda dem på olika sätt. För att bygga skräddarsydd formulärguide och skräddarsydd rapportguide. För att skapa hyperlänkar i ListBox, skapa listobjekt från källdata från en annan listbox, föra in listan med externa filer i listrutan eller tilldela utdata för Filter()-funktion till ListBox. Det här var några av metoderna vi har provat tidigare med Access ListBox. Länkarna ges nedan som referens.

  1. Skräddarsydd Form-Wizard.

  2. Skräddarsydd rapport-guide.

  3. Öppna Formulär med hyperlänkar i Listbox.

  4. Skapa lista från en annan listbox.

  5. Dynamic ListBox ComboBox-innehåll.

  6. Filterfunktionsutgång i ListBox.

  7. Filterfunktionsutgång i ListBox-2

  8. List-Box och Datum Del ett.

  9. List-box och datum del två.

ListView med TreeView Control Demo Image.

Demobildvyn av Form, med TreeView- och ListView-kontroller:

ListView-demoformuläret i designvyn.

Designa formuläret frmListView.

  1. Skapa ett nytt formulär, med namnet frmListView, och infoga följande tre kontroller i detaljsektionen av formuläret med namnen specificerade för varje kontroll enligt nedan.

  2. Infoga en TreeView-kontroll i formuläret, från ActiveX-kontrolllistan, på vänster sida, ändra namnet till TreeView0 . Visa dess normala tillgångsegenskapsblad och ändra bredden Fastighetsvärde till6,614 cm och Höjd till9,709 cm .

  3. Infoga en ListView-kontroll från ActiveX-kontrollerna, till höger om TreeView-kontrollen, och ändra dess namn till ListView0 . ListView-kontrollen är ungefär 12,462 cm bred och 9,709 cm i höjd , tillräckligt med utrymme för att visa tre kolumner med data från produkttabellen. Placera båda kontrollerna nära varandra och de övre kanterna justerade.

  4. Infoga en ImageList-kontroll från ActiveX-kontrolllistan, placera den någonstans till höger om ListView-kontrollen och ändra dess namnegenskapsvärde till ImageList3 .

    Obs : Om du är ny i det här ämnet och inte kunde hitta ovanstående kontroller bland ActiveX-kontrollerna listan måste du bifoga MSCOMLIB.OCX ( Microsoft Windows gemensamma kontroller) i VBAs redigeringsfönster Verktyg - -> Referenser Fillista.

    Jag föreslår att du kan gå igenom den första länken, som finns överst på den här sidan, Microsoft TreeView Control Tutorial Sida för vägledning, var du kan leta efter relaterade filer och hur du lägger till Microsoft Windows MSCOMLIB.OCX fil till Access Reference Library. Efter det kommer du att kunna hitta dessa filer på ActiveX-kontroller Lista.

Om du har gått igenom de tidigare handledningssessionerna och laddat ner demodatabasen från den 4:e länken som finns överst, öppna den databasen.

Öppna formuläret med ImageList Control i Design View. Gör en kopia av ImageList Control från formuläret och placera den på Urklipp. Stäng databasen, öppna den aktuella projektdatabasen och öppna Form frmListView i Design View. Klistra in ImageList Control från Urklipp på Form frmListView. Ändra ImageList Controls namn till ImageList3 . De som har ImageList Control med förladdade bilder, hoppa över följande sex steg och fortsätt från Steg-7.

Ladda upp bilder till ImageList Control.

Alternativt, om du har infogat ImageList-kontrollen från ActiveX-kontrollerna kan du ladda upp några bilder (4 eller 5) från din dator själv. Gör följande:

  1. Högerklicka på ImageList-kontrollen, markera ImageListCtrl_Object och välj Egenskaper .

  2. Välj alternativet 16 x 16 bildstorleksalternativ på Allmänt Flik.

    Varning: När du har laddat upp bilder kan du inte ändra värdet för bildstorlek. Om du tror att du behöver bilder av en annan storlek, när de visas, måste du ta bort alla befintliga bilder och sedan välja den bildstorlek du vill ha på fliken Allmänt och sedan ladda upp alla bilder igen.,

  3. Välj sedan Bilder Tab.

  4. Klicka på Infoga bild Kommandoknapp och välj bilden från din disk (de flesta av bildtyperna:bmp, png, JPG, JPEG och tiff är giltiga). Den valda bilden kommer att visas i Bilder kontrollera. Den valda bildstorleken kommer att reduceras till 16 x 16 pixlar och kan påverka kvaliteten på bilden om du har valt en stor bild.

  5. Bildens indexvärde skrivs in av systemet. Ange ett lämpligt unikt namn i nyckeln kontrollera. Namnet är skiftlägeskänsligt om du planerar att använda nyckelnamnet för bildparametern TreeView Node eller på ListView-objekt, snarare än bildens indexnummer.

  6. Du kan ladda upp önskat antal bilder på detta sätt. Du kan kopiera och klistra in den här ImageList-kontrollen för dina andra projekt.

  7. När du är klar med att ladda upp de nödvändiga bilderna stäng dialogrutan.

  8. Infoga en kommandoknapp längst ner på kontrollerna på formuläret med namnegenskapsvärdet:cmdExit och med bildtexten Avsluta .

  9. Du kan spara formuläret frmListView nu med ändringarna.

Vi behöver två tabeller för demo-ändamål för att testa ListView-kontrollen med TreeView. Jag har skapat två tabeller från produkttabellen, hämtade från exempeldatabasen Northwind.accdb . Ett numeriskt fält BelongsTo läggs till i tabellen lvCategory.

Lade till fyra nya rekord i tabellen. De två första nya skivorna har sina BelongsTo fält med värdet 4, anger att dessa poster är undernoder för post-ID nummer 4. På samma sätt har de två sista posterna värdet 10 i BelongsTo fält.

Posterna med ID-nummer 4 och 10, fältet Produktnamn Beskrivning visar att de har flera grupper av artiklar. Kategorigruppnamnen delas upp i två olika kategorier för att placera dem som Child-Node-poster under huvudgruppens objekt. Kategori nya grupppost-ID-värden har uppdaterats i fältet ParentID för produktartiklarna i tabellen lvProducts, som tillhör den nya kategorin. Den första posten med två olika kategorier av föremål lämnas orörd, på grund av vissa andra preferensaspekter.

lvCategory Tabellbild ges nedan. Detta kommer att användas för TreeView-noder, som överordnade noder till ListView-kontrollobjekten också.

lvProducts Tabellen har cirka 45 poster. Tabellbilden, med några exempel på poster, ges nedan som referens:

Arbeta med två tabeller.

Innan vi går vidare måste vi titta närmare på båda tabellerna och se hur båda är relaterade till varandra i TreeView och ListView Controls. Hittills har vi bara arbetat med en enda tabell, med Nod Key, Description och ParentID Fields i samma tabell.

Jag hoppas att de av er som har följt de tidigare introduktionsavsnitten hittills har en klar förståelse för förhållandet mellan samma fältvärden i samma tabell. Nu kommer vi att se hur båda dessa tabeller (lvCategory och lvProducts) är relaterade till varandra för två olika kontroller.

Kontrollera först lvCategory Tabell. Den har en BelongsTo fält med värden i de fyra senaste posterna. Dessa fyra poster är undernoder för post-ID 4 och 10 för lvCategory-noder. Dessa fyra noder, går in i TreeView-kontrollen som barnnoder, till överordnade noder:Konserverad frukt och grönsaker och Torkad frukt och nötter i själva TreeView-kontrollen.

Ta nu lvProducts Tabell och den har förälder-ID Fältvärden. För varje kategoriobjekt i lvCategory Tabell, det finns en eller flera relaterade produktartiklar på lvProducts Tabell. Numret i förälder-ID fältet lvProducts Tabellen tillhör föräldraposten i lvCategory Tabell. För att uttrycka det annorlunda, alla produktartiklar listade i ListView Control, med samma förälder-ID värde, tillhör en viss post i tabellen lvCategory med samma CID Värde.

Obs! Att skapa båda dessa tabeller från produkttabellen kan vara lite tidskrävande. Om du har följt den här handledningen hittills kan du ladda ner demodatabasen från nedladdningslänken i slutet av denna sida. Importera lvCategory och lvProducts Tabeller från databasen till din nuvarande databas med detta projekt. När du slutför detta projekt med den aktuella databasen om du stöter på några problem med den kan du använda demodatabasen som en referenspunkt för att korrigera ditt arbete.

Formmodulens VBA-kod.

  1. Öppna frmListView formulär i Design View.

  2. Visa formulärets klassmodul.

  3. Kopiera och klistra in följande fullständiga VBA-kod i modulen och tryck på Ctrl+S för att spara koden.

Alternativ Jämför DatabaseOption ExplicitDim tv As MSComctlLib.TreeViewDim lvList As MSComctlLib.ListViewDim imgList As MSComctlLib.ImageListConst Prfx As String ="X"Private Sub Form_Load()Dim db As DAO.DatablbaseDim TView. Objekt tv.Nodes.Clear Set imgList =Me.ImageList3.Object With tv .Font.Size =9 .Font.Name ="Verdana" .ImageList =imgList 'tilldela förladdad bildlistkontroll Sluta med Set db =CurrentDb Set tbldef =db. TableDefs("lvProducts") Ställ in lvList =Me.ListView0.Object lvList.ColumnHeaders.Clear lvList.ListItems.Clear lvList.Icons =imgList 'Initiera ListView &Column Headers Property Values ​​With lvList .ColumnIcons. Font.Name ="Verdana" .Font.Bold =False .View =lvwReport .GridLines =True 'ColumnHeaders.Add() Syntax:'lvList.ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon 'Justering:0 - Vänster, 1 - Höger, 2 - Center .ColumnHeaders.Add 1, , tbldef.Fields(1).Name, 2600, 0, 5 .ColumnHeaders.Add 2, , tbldef.Fields(3).Name , 2600, 0, 5 .ColumnHeaders.Add 3, , tbldef.Fields(4).Name, 1440, 1, 5 End With Set db =Nothing Set tbldef =Nothing LoadTreeView 'Create TreeView NodesEnd SubPrivateView Sub Load Nored MSComctlLib.Node Dim firstCatID As Long Dim strCategory As String Dim strCatKey As String Dim strProduct As String Dim strPKey As String Dim strBelongsTo As String Dim strSQL As String Dim db As DAO.Database Dim rst As DAO.Recordset 'Initialize.No treeview nodes tv .Clear 'Initiera listvynoder medan lvList.ListItems.Count> 0 lvList.ListItems.Remove (1) Wend strSQL ="SELECT lvCategory.CID, lvCategory.Category, " strSQL =strSQL &"lvcategory.lvCategory.BelongCategory.BelongCategory.BelongCategory. CID;" Set db =CurrentDb Set rst =db.OpenRecordset(strSQL, dbOpenSnapshot) Om inte rst.BOF And Not rst.EOF Then rst.MoveFirst firstCatID =rst!CID Else Exit Sub End If ' Fyll i alla poster som rotnivånoder Do While Not .BOF And Not rst.EOF strCatKey =Prfx &CStr(rst!CID) strCategory =rst!Category Set Nod =tv.Nodes.Add(, , strCatKey, strCategory, 1, 2) Nod.Tag =första!CID först. MoveNext Loop 'I det andra passet av samma uppsättning poster 'Flytta barnnoder under sina överordnade noder rst.MoveFirst Do While Not rst.BOF And Not rst.EOF strBelongsTo =Nz(rst!BelongsTo, "") If Len( strBelongsTo)> 0 Då strCatKey =Prfx &CStr(rst!CID) strBelongsTo =Prfx &strBelongsTo strCategory =rst!Category Set tv.Nodes.Item(strCatKey).Parent =tv.Nodes.Item(strBelongsTo) End If rst.MoveN Lo op rst.Close ' Fyll ListView-kontroll med produktinformation ' för den första kategoriobjektet LoadListView firstCatID End SubPrivate Sub LoadListView(ByVal CatID) Dim strProduct As String Dim strPKey As String Dim intCount As Integer Dim tmpLItem As MSComctlLib.ListItem Dim db. Databas Dim rst As DAO.Recordset Dim strSQL As String ' Initialize ListView Control While lvList.ListItems.Count> 0 lvList.ListItems.Remove (1) Wend strSQL ="SELECT lvProducts.* FROM lvProducts " strSQL "=WHEREL &Products .ParentID =" &CatID &") " strSQL =strSQL &"ORDER BY lvProducts.[Produktnamn];" 'Öppna filtrerad produktlista för vald kategori Set db =CurrentDb Set rst =db.OpenRecordset(strSQL, dbOpenSnapshot) Do While Not rst.BOF And Not rst.EOF intCount =intCount + 1 strProduct =rst![Produktnamn] strPKey =Prfx &CStr(rst!PID) 'List Item Add() Syntax:'lvList.ListItems.Add Index,Key,Text,Icon,SmallIcon Set tmpLItem =lvList.ListItems.Add(, strPKey, strProduct, , 3) ​​'första kolumnen lvList.ForeColor =vbBlue 'Lista andra kolumns underobjekt Syntax:'tmpLItem.ListSubItems.Add Column - Index, Key, Text, ReportIcon, ToolTipText tmpLItem.ListSubItems.Add 1, strPKey &CStr(rstCount!), Nz(rstCount! Kvantitet per enhet], ""), 6 'Lista tredje kolumn underpost tmpLItem.ListSubItems.Add 2, strPKey &CStr(intCount + 1), Format(första![listpris], "0,00"), 6, " I lokal valuta." rst.MoveNext Loop Set db =Ingenting Set rst =Nothing If intCount> 0 Then lvList.ListItems(1).Selected =True End SubPrivate Sub TreeView0_NodeClick(ByVal Node As Object)Dim Cat_ID As StringCat_ID =Node.Tag SubPrivate ListView SubPrivate )Dim lvKey As String, lvLong As LongDim Criterion As StringlvKey =lvList.SelectedItem.KeylvLong =Val(Mid(lvKey, 2))DoCmd.OpenForm "ProductDetails", , , , , , lvLongEnd DoPrivate_SubCmdClickSubCmdClick. 

Låt oss granska koden och försöka förstå vad de gör.

I det globala deklarationsområdet visas TreeView-objektet (tv ), ListView (lvList ) och ImageList (imgList ) Objektvariabler deklareras. Den konstanta Prfx variabel har deklarerats med värdet "X ” och används som nodnyckelprefixvärde.

När frmListView är öppen, Form_Load() Händelseproceduren körs. Databasobjektet db och TableDef Object Variable tbldef har deklarerats.

TreeView0 Kontroll på formuläret tilldelas objektet Variabel tv. Uttalandettv.Nodes.Clear initierar TreeView Control Object-instansen i minnet.

Därefter imgList objektvariabeln har initierats med ImageList3 Kontroll på formuläret.

TreeView Control Display Font and ImageList Properties.

Följande satser anger TreeView-kontrollens teckensnittsnamn, teckensnittsstorlek och dess bildlista Egendomen har laddats med imgList objekt, så att vi kan använda bildnyckelnamnen eller bildindexnumren för TreeView-nodbilder.

Med tv .Font.Size =9 .Font.Name ="Verdana" .ImageList =imgList 'tilldela förladdad bildlistkontroll Sluta med

Inställningar för ListView-kontrollegenskaper och kolumnrubriker.

Därefter initierar följande segment av koden ListView-kontrollen och tilldelar dess egenskapsvärden.

 Set db =CurrentDb Set tbldef =db.TableDefs("lvProducts") Set lvList =Me.ListView0.Object lvList.ColumnHeaders.Clear lvList.ListItems.Clear lvList.Icons =imgList 'Initialisera med Headers Views lvList .ColumnHeaderIcons =imgList .Font.Size =9 .Font.Name ="Verdana" .Font.Bold =False .View =lvwReport .GridLines =True 'ColumnHeaders.Add() Syntax:'lvList.Columd IndexHeaders , Text, Bredd, Justering, Ikon 'Justering:0 - Vänster, 1 - Höger, 2 - Center .ColumnHeaders.Add , , tbldef.Fields(1).Name, 2600, 0, 5 .ColumnHeaders.Add , , tbldef. Fields(3).Name, 2600, 0, 5 .ColumnHeaders.Add , , tbldef.Fields(4).Name, 1440, 1, 5 End With Set db =Ingenting Set tbldef =Ingenting

Databasobjektet tbldef variabel tilldelas med lvProducts Tabelldefinition. Vi behöver datafältnamn att använda som ListView kolumnrubriker , för deras relaterade datavärden, överst. Parametervärdet för Header Text kan hämtas från tabellfältets namn.

En bild kan också visas i kolumnrubriken. Därför har vi tilldelat imgList Invända mot lvList.ColumnHeaderIcons Fast egendom.

Därefter har de erforderliga teckensnitts-, teckenstorleks- och stilvärdena tilldelats sina respektive egenskaper för ListView-kontrollen, om standardvärdena inte anses lämpliga.

Listvyn kan ses på olika sätt genom att ändra vyn Fastighetsvärde. Vi har valt lvwReport (värde 3 med maximala funktioner). Du kan ändra och experimentera med andra värden 0,1 eller 2. View Property Value 3 (lvwReport ) visar värden i kolumner med kolumnrubriker, Bildikoner och rutnätslinjer.

Vi har tagit tre datafält (Produktnamn , Mängd per enhet, och Listpris) från tabellen lvProducts för att visas i tre olika kolumner i ListView Control.

Kolumnen Width-värdet är i pixlar. Värdeintervallen för justeringsegenskapen är från 0 till 2 och innebörden av varje värde anges nedan:

0 – Vänsterjustera

1 – Högerjustera

2 – Centrera.

För att skapa kolumnrubrikinformationen lvList .ColumnHeaders.Add() metod har anropats med parametrar.

Add() metod Syntax:

Objekt .ColumnHeaders.Add Index, Key, Text, Column Width, Alignment, Icon

Med ovanstående tre uttalanden i kodsegmentet har vi lagt till alla tre kolumnrubriker med fältnamnen:Produktnamn , Mängd per enhet, och Listpris Kolumner.

Vi har tagit det här steget innan vi lade till något objekt i ListView-kontrollen och det även i Form_Load()-händelseproceduren, snarare än när vi fyllde i ListView-objekt.

Anropar sedan LoadTreeView() Underrutin för att skapa TreeView-kontrollnoder. Som vi har diskuterat i tidigare avsnitt har vi delat upp denna uppgift i en tvåstegsprocess.

Efter variabeldeklarationerna har TreeView- och ListView-kontrollerna initierats.

Omedelbart efter att du öppnat lvCategory postuppsättning har den första postens nyckelfältsvärde (kategori-ID:CID) sparats i firstCatID Variabel för senare användning.

Därefter läggs alla poster från lvCategory-tabellen initialt till i TreeView-kontrollen som rotnivånoder.

I det andra passet av samma uppsättning poster kontrollerar den BelongsTo fältvärde, om det är tomt behålls dessa noder som rotnivånod, annars är ParentID-fältvärdet rotnivånodens ID. Med hjälp av ParentID-värdet har den aktuella noden flyttats under den överordnade noden, som dess underordnade nod.

Jag har förklarat den här aspekten av tvåstegsproceduren för att fylla noder i TreeView-kontrollen i ett tidigare avsnitt och bevisats av experiment i detalj i den senaste handledningssessionen.

Efter att ha stängt recordset-objektet LoadListView(ByVal CatID) Subrutinen har anropats. Den första kategoripostens CID-fältvärde sparas i firstcatID variabel har skickats som en parameter till funktionen.

Det unika CID-fältvärdet för kategori skickas i variabeln firstCatID som en parameter har använts som kriterier i strSQL-strängen för att filtrera de relaterade produktposterna.

Vi har bara tagit fyra fältdata från de filtrerade posterna för att visa på ListView Control. Nyckelfält:PID , Produktnamn , Mängd per enhet, och Listpris . PID-fältvärdet har använts som nyckel och kommer inte att visas i displayen.

ColumnHeaders.Add() metod har anropats tre gånger för att lägga till alla tre kolumnrubriker.

Obs! Kontrollera påståendet att vi inte har angett något nyckelparametervärde, men indexvärdet kommer att infogas av systemet. Vi har inte planerat att arbeta med kolumnrubrikerna när de väl har laddats. Även om vi gör det kan vi adressera kolumnen med indexvärdet. Men vi måste ladda produktpostfältets värden i samma ordning som kolumnrubrikerna.

Fylla ListView Control med produktvärden i kolumner.

För att visa datalistan på ListView-kontrollen behöver vi två uppsättningar Add()-metoder, med tre olika nyckelvärden, för att lägga till alla tre kolumnerna med värden till ListView-kontrollen.

Det första kolumnvärdet läggs till med lvList .Listobjekt Add() metod. Alla andra kolumnvärden kan läggas till med lvList .ListSubItems Add() metod.

Vi har skapat en motvariabel:intCount, och ökar dess värde vid varje Do While . . . Slingcykeln och dess nuvarande värde läggs till nyckelvärdet (PID) för att göra nyckelvärdet unikt i lvlistan. ListSubItems.Add() metod.

Den första kolumnens ListItems.Add() Metod Syntaxen är enligt nedan:

 

‘lvList.ListItems .Lägg till Index, Nyckel, Text, Ikon, Liten ikon

Ange tmpLItem =lvList.ListItems.Add(, strPKey, strProduct, , 3) ​​

Ovanstående uttalande liknar TreeView Nodes Add-metod. tmpLItem deklareras som ett ListItem Object och håller den tillagda ListItems referens så att den kan användas för att lägga till dess ListSubItems.

lvList.ListSubItems.Add() Metod Syntax är något annorlunda enligt nedan. Syntaxen som visas är för den andra metoden .ListSubItems.Add() med det andra parametervärdet strPKey &Cstr(intCount + 1) . Den första ListSubItems.Add()-metoden kommer att ha nyckelvärdet som strPKey &Cstr(intCount) .

 

‘tmpLItem.ListSubItems .Lägg till Index, Nyckel, Text, ReportIcon, ToolTipText

tmpLItem.ListSubItems.Add 2, strPKey &CStr(intCount + 1) , Format(första![Listpris], "0,00"), 6, "I lokal valuta."

ListSubItems Add-metod har ReportIcon och VerktygstipsText som de två sista parametrarna. Vi har endast använt parametervärdet Tooltip-Text för den sista kolumnen.

OBS: Värdena som laddas in i kolumner och alla andra inställningar som är relaterade till det fungerar bara när du väljer View Option – 3 (lvwReport) förutom den första kolumnen. Annars ignoreras de alla.

Verktygstipstexten visas när muspekaren svävar över den sista kolumnen.

I alla tre kolumner (ListItems &ListSubItems) använder Add()-metoden samma post PID Värde som nyckel. Eftersom olika kolumner i samma post kräver unikt ID-värde som nyckel har intCount Variable-värdet ökats med ett, för ListSubItems och konverterats till en sträng och sedan lagts till med PID-fältvärdet.

På så sätt listas alla produktposter som är relaterade till kategoriartiklar i ListView-kontrollen.

Separat formulär för att visa fullständig produktinformation.

Sedan lvProducts Tabellen har fler fält och värden, än vad vi skulle kunna visa på ListView-kontrollen, ListView-objektet Click Event öppnar ett separat formulär ProductDetails och visar hela postinformationen.

Bilden av formuläret med alla detaljer om den valda produktposten visas nedan:

ListView0_Click()-händelseproceduren.

Private Sub ListView0_Click()Dim lvKey As String, lvLong As LongDim Criterion As StringlvKey =lvList.SelectedItem.KeylvLong =Val(Mid(lvKey, 2))DoCmd.OpenForm "ProductDetails", , ,  

ListView0_Click()-händelsen extraherar produktens nyckel- Värde och skickar det till formuläret som öppet argument (OpenArgs).

formuläret för produktinformation.

I händelseproceduren Form_Open() visas OpenArgs värde har använts för att skapa ett filterkriterier för att filtrera källposterna och visa dem på formuläret.

Produktdetaljer Form Module Kodlista:

Alternativ Jämför DatabasOption ExplicitPrivate Sub cmdClose_Click()DoCmd.CloseEnd SubPrivate Sub Form_Open(Cancel As Integer)Dim lngID As LonglngID =Nz(Me.OpenArgs, 0)If lngID> 0 Then Me.Filter ="id =" &lngID Me.FilterOn =TrueEnd IfEnd SubPrivate Sub Form_Unload(Avbryt som heltal) With Me .Filter ="" .FilterOn =FalseEnd WithEnd Sub

Produktdetaljer Formulärets källdata kommer från de filtrerade posterna, baserat på PID-koden (produkt-ID) som skickas till formuläret via OpenArgs. Originalprodukttabellen laddades ner från databasen NorthWind.accdb och bytte namn till ProductsNew.

Hoppas du tyckte om att göra ListView Control Project. Mer kommer med ListView Control.

Ladda ner demodatabasen från länken nedan, och glad listvisning.

God jul och gott nytt år.

Hämta demodatabas.


  1. ROUNDDOWN-funktion i Excel
  2. Anropsfunktion från MouseMove Event
  3. Date2Text och Text2Date Function
  4. WithEvents Ms-Access Class Module Handledning
  5. WithEvents och definiera dina egna evenemang
  6. withevents Button Combo List TextBox Tab

  1. Hur man skapar och underhåller MySQL-databaser i cPanel

  2. Använda DATEADD, DATEDIFF och DATEPART T-SQL-funktioner i enkla termer

  3. Hur använder man MySQLdb med Python och Django i OSX 10.6?

  4. MariaDB JSON_ARRAY_APPEND() Förklarad