Access
 sql >> डेटाबेस >  >> RDS >> Access

एमएस-एक्सेस ट्री व्यू के साथ लिस्ट व्यू कंट्रोल

परिचय।

माइक्रोसॉफ्ट एक्सेस लिस्ट व्यू कंट्रोल प्रोजेक्ट को ट्री व्यू कंट्रोल ट्यूटोरियल के इस एपिसोड में डिजाइन और प्रदर्शित किया गया है। मुख्य कार्य है, पहले उत्पाद की श्रेणी वस्तुओं के साथ ट्री व्यू कंट्रोल को पॉप्युलेट करें। फिर ट्री व्यू कंट्रोल पर एक श्रेणी आइटम के चयन पर, संबंधित उत्पाद रिकॉर्ड्स को उत्पाद तालिका से फ़िल्टर किया गया है और सूची दृश्य नियंत्रण में सूचीबद्ध किया गया है। प्रत्येक रिकॉर्ड के फ़ील्ड मान अलग-अलग कॉलम में प्रदर्शित किए जा रहे हैं।

हम TreeView, ImageList, और ImageCombo नियंत्रणों से परिचित हैं और पहले के एपिसोड में उनके साथ काम किया है।

ListView Control तीन अलग-अलग फ़ील्ड से डेटा को तीन अलग-अलग कॉलम में प्रदर्शित करेगा। कॉलम में कॉलम हेडर और अन्य कॉलम गुण होंगे, जैसे रिपोर्ट आइकन, टूलटिप टेक्स्ट .

उत्पाद रिकॉर्ड में कई फ़ील्ड हैं और उन सभी को ListView नियंत्रण में प्रदर्शित नहीं किया जा सकता है, जिसमें एक छोटे से क्षेत्र में कई कॉलम हैं। इसके बजाय, जब सूची दृश्य नियंत्रण में किसी आइटम का चयन किया जाता है तो चयनित उत्पाद रिकॉर्ड के पूर्ण विवरण के साथ एक अन्य प्रपत्र खुल जाएगा। संक्षेप में, हम यहां ट्री व्यू, लिस्ट व्यू और इमेजलिस्ट कंट्रोल का उपयोग करके यही करने की योजना बना रहे हैं।

लिस्ट व्यू कंट्रोल प्रॉपर्टीज में माइक्रोसॉफ्ट एक्सेस लिस्टबॉक्स कंट्रोल के समान विशेषताएं हैं। इसमें प्रत्येक कॉलम हेडर के तहत एक दूसरे के बगल में संबंधित मान प्रदर्शित करने के लिए कॉलम होते हैं। कॉलम की चौड़ाई प्रत्येक कॉलम के लिए संपत्ति मूल्य, यह सुनिश्चित करता है कि सामग्री को ठीक से प्रदर्शित करने के लिए फ़ील्ड मान में पर्याप्त स्थान है। ListView आइटम क्लिकों के प्रति प्रतिक्रिया करता है ताकि हम अन्य क्रियाएं कर सकें, जैसे फॉर्म खोलना, रिपोर्ट करना, मैक्रो, या अन्य कार्यों को कॉल करना, यदि आवश्यक हो।

पहले के ट्यूटोरियल सत्रों के लिंक।

  1. माइक्रोसॉफ्ट ट्री व्यू कंट्रोल ट्यूटोरियल।
  2. ट्री व्यू कंट्रोल के साथ एक्सेस मेनू बनाना।
  3. ट्री व्यू कंट्रोल को इमेज असाइन करना।
  4. ट्रीव्यू कंट्रोल-2 को इमेज असाइन करना, इमेजलिस्ट कंट्रोल को अन्य प्रोजेक्ट्स के साथ शेयर करने योग्य बनाना।
  5. ट्री व्यू कंट्रोल चेक-मार्क ऐड, डिलीट नोड्स।
  6. ट्री व्यू इमेजकॉम्बो ड्रॉप-डाउन एक्सेस मेनू।
  7. ट्री व्यू नोड्स को ड्रैग एंड ड्रॉप द्वारा पुनर्व्यवस्थित करें।

एक्सेस लिस्टबॉक्स कंट्रोल पर लेख।

Microsoft Access में, हम सूचना प्रदर्शित करने और विभिन्न तरीकों से उनका उपयोग करने के लिए ListBox Control का उपयोग कर सकते हैं। कस्टम-निर्मित फॉर्म विज़ार्ड और कस्टम-निर्मित रिपोर्ट विज़ार्ड बनाने के लिए। लिस्टबॉक्स में हाइपरलिंक बनाने के लिए, किसी अन्य लिस्टबॉक्स के स्रोत डेटा से सूची आइटम बनाना, बाहरी फाइलों की सूची को सूची बॉक्स में लाना, या लिस्टबॉक्स में फ़िल्टर () फ़ंक्शन आउटपुट असाइन करना। ये कुछ तरीके थे जिन्हें हमने पहले एक्सेस लिस्टबॉक्स के साथ आजमाया था। संदर्भ के लिए लिंक नीचे दिए गए हैं।

  1. कस्टम-निर्मित फॉर्म-विज़ार्ड।

  2. कस्टम-निर्मित रिपोर्ट- विज़ार्ड।

  3. लिस्टबॉक्स में हाइपरलिंक के साथ फॉर्म खोलें।

  4. किसी अन्य लिस्टबॉक्स से सूची बनाएं।

  5. डायनामिक लिस्टबॉक्स कॉम्बोबॉक्स सामग्री।

  6. लिस्टबॉक्स में फंक्शन आउटपुट को फ़िल्टर करें।

  7. ListBox-2 में फंक्शन आउटपुट को फ़िल्टर करें

  8. सूची-बॉक्स और दिनांक भाग-एक।

  9. सूची-बॉक्स और दिनांक भाग-दो।

ट्री व्यू कंट्रोल डेमो इमेज के साथ लिस्ट व्यू।

ट्री व्यू और लिस्ट व्यू कंट्रोल के साथ फॉर्म का डेमो इमेज व्यू:

डिज़ाइन व्यू में लिस्ट व्यू डेमो फॉर्म।

फ़ॉर्म को डिज़ाइन करना frmListView.

  1. FrmListView नाम से एक नया फॉर्म बनाएं, और नीचे दिए गए प्रत्येक नियंत्रण के लिए निर्दिष्ट नामों के साथ फॉर्म के विवरण अनुभाग में निम्नलिखित तीन नियंत्रण डालें।

  2. प्रपत्र पर एक TreeView नियंत्रण डालें, ActiveX नियंत्रण सूची से, बाईं ओर, नाम को TreeView0 में बदलें . इसकी सामान्य एक्सेस प्रॉपर्टी शीट प्रदर्शित करें और चौड़ाई . बदलें संपत्ति का मूल्य 6.614 सेमी और ऊंचाई से 9.709 सेमी

  3. ट्री व्यू कंट्रोल के दाईं ओर, ActiveX नियंत्रणों से एक सूची दृश्य नियंत्रण डालें, और उसका नाम बदलकर ListView0 करें . ListView नियंत्रण लगभग 12.462 सेमी . है चौड़ा और 9.709 सेमी ऊंचाई . में , उत्पाद तालिका से डेटा के तीन कॉलम प्रदर्शित करने के लिए पर्याप्त स्थान। दोनों नियंत्रणों को एक दूसरे के पास रखें और शीर्ष किनारों को संरेखित करें।

  4. ActiveX नियंत्रण सूची से एक ImageList नियंत्रण सम्मिलित करें, इसे ListView नियंत्रण के दाईं ओर कहीं रखें, और इसके नाम संपत्ति मान को ImageList3 में बदलें .

    नोट : यदि आप इस विषय पर नए हैं और ActiveX नियंत्रणों के बीच उपरोक्त नियंत्रण नहीं ढूंढ पाए हैं सूची, तो आपको संलग्न करना होगा MSCOMLIB.OCX ( माइक्रोसॉफ्ट विंडोज कॉमन कंट्रोल्स) VBA संपादन विंडो में टूल - -> संदर्भ फाइलों की सूची।

    मेरा सुझाव है, आप इस पृष्ठ के शीर्ष पर दिए गए पहले लिंक पर जा सकते हैं, माइक्रोसॉफ्ट ट्री व्यू कंट्रोल ट्यूटोरियल मार्गदर्शन के लिए पेज, संबंधित फाइलों को कहां देखना है, और माइक्रोसॉफ्ट विंडोज को कैसे जोड़ना है MSCOMLIB.OCX एक्सेस रेफरेंस लाइब्रेरी में फाइल करें। उसके बाद, आप इन फाइलों को . पर ढूंढ पाएंगे ActiveX Control's सूची।

यदि आप पहले के Tutorial Sessions को पढ़ चुके हैं और ऊपर दिए गए 4th Link से Demo Database डाउनलोड कर चुके हैं, तो उस डेटाबेस को खोलें।

डिज़ाइन दृश्य में ImageList नियंत्रण के साथ प्रपत्र खोलें। प्रपत्र से ImageList नियंत्रण की एक प्रति बनाएं और उसे क्लिपबोर्ड पर रखें। उस डेटाबेस को बंद करें, वर्तमान प्रोजेक्ट डेटाबेस खोलें, और डिज़ाइन व्यू में फॉर्म frmListView खोलें। क्लिपबोर्ड से छविसूची नियंत्रण को प्रपत्र frmListView पर चिपकाएं। ImageList नियंत्रण के नाम को ImageList3 . में बदलें . जिनके पास पहले से लोड की गई छवियों के साथ ImageList नियंत्रण है, निम्न छह चरणों को छोड़ दें और चरण-7 से जारी रखें।

इमेजलिस्ट कंट्रोल में इमेज अपलोड करना।

वैकल्पिक रूप से, यदि आपने ActiveX नियंत्रणों से ImageList नियंत्रण सम्मिलित किया है, तो आप अपने कंप्यूटर से ही कुछ चित्र (4 या 5) अपलोड कर सकते हैं। निम्न कार्य करें:

  1. ImageList नियंत्रण पर राइट-क्लिक करें, ImageListCtrl_Object को हाइलाइट करें और गुण . चुनें ।

  2. विकल्प चुनें 16 x 16 सामान्य . पर छवि आकार विकल्प टैब।

    सावधानी: इमेज अपलोड करने के बाद आप इमेज साइज वैल्यू नहीं बदल सकते। अगर आपको लगता है कि प्रदर्शित होने पर आपको एक अलग आकार की छवियों की आवश्यकता है, तो आपको सभी मौजूदा छवियों को हटाने की जरूरत है और फिर सामान्य टैब पर इच्छित छवि आकार का चयन करें और फिर सभी छवियों को फिर से अपलोड करें।

  3. इसके बाद, छवियां . चुनें टैब।

  4. चित्र सम्मिलित करें . पर क्लिक करें कमांड बटन और अपनी डिस्क से छवि का चयन करें (अधिकांश छवि प्रकार:bmp, png, JPG, JPEG, और tiff मान्य हैं)। चयनित छवि छवियों . में दिखाई देगी नियंत्रण। चयनित छवि का आकार 16 x 16 पिक्सेल तक कम हो जाएगा और यदि आपने एक बड़ी छवि का चयन किया है तो छवि की गुणवत्ता प्रभावित हो सकती है।

  5. छवि का अनुक्रमणिका मान सिस्टम द्वारा दर्ज किया जाता है। कुंजी . में एक उपयुक्त अद्वितीय नाम दर्ज करें नियंत्रण। यदि आप छवि की अनुक्रमणिका संख्या के बजाय, TreeView नोड छवि-पैरामीटर या ListView आइटम के कुंजी-नाम का उपयोग करने की योजना बना रहे हैं तो नाम केस संवेदनशील है।

  6. आप इस तरह से आवश्यक संख्या में चित्र अपलोड कर सकते हैं। आप इस इमेजलिस्ट कंट्रोल को अपने अन्य प्रोजेक्ट्स के लिए कॉपी और पेस्ट कर सकते हैं।

  7. जब आप आवश्यक छवियों को अपलोड करना समाप्त कर लें तो डायलॉग बॉक्स को बंद कर दें।

  8. नाम संपत्ति मान के साथ प्रपत्र पर नियंत्रणों के निचले भाग में एक कमांड बटन डालें:cmdExit और कैप्शन के साथ बाहर निकलें

  9. आप प्रपत्र frmListView . सहेज सकते हैं अब परिवर्तनों के साथ.

ट्री व्यू के साथ लिस्ट व्यू कंट्रोल को आज़माने के लिए हमें डेमो उद्देश्यों के लिए दो तालिकाओं की आवश्यकता है। मैंने नमूना डेटाबेस Northwind.accdb से ली गई उत्पाद तालिका से दो तालिकाएं बनाई हैं . एक संख्यात्मक प्रकार फ़ील्ड संबंधित है तालिका में जोड़ा जाता है lvश्रेणी.

तालिका में चार नए रिकॉर्ड जोड़े गए। पहले दो नए रिकॉर्ड में उनके BelongsTo . हैं मान के साथ फ़ील्ड 4, यह दर्शाता है कि ये रिकॉर्ड रिकॉर्ड आईडी नंबर 4 के चाइल्ड-नोड्स हैं। इसी तरह, पिछले दो रिकॉर्ड का BelongsTo में मान 10 है। खेत।

आईडी नंबर 4 और 10 के साथ रिकॉर्ड, उत्पाद नाम फ़ील्ड विवरण से पता चलता है कि उनके पास आइटम के कई समूह हैं। मुख्य समूह आइटम के तहत चाइल्ड-नोड रिकॉर्ड के रूप में रखने के लिए श्रेणी समूह के नामों को दो अलग-अलग श्रेणियों में विभाजित किया जा रहा है। श्रेणी के नए समूह रिकॉर्ड आईडी मानों को lvProducts तालिका में उत्पाद आइटम्स के पेरेंटआईडी फ़ील्ड में अपडेट किया गया है, जो नई श्रेणी से संबंधित है। दो अलग-अलग श्रेणियों की वस्तुओं के साथ पहला रिकॉर्ड कुछ अन्य वरीयता विचारों के कारण अछूता छोड़ दिया गया है।

lvश्रेणी तालिका छवि नीचे दी गई है। इसका उपयोग ट्री व्यू नोड्स के लिए, पेरेंट नोड्स के रूप में लिस्ट व्यू कंट्रोल आइटम्स के लिए भी किया जाएगा।

lvउत्पाद तालिका में लगभग 45 रिकॉर्ड हैं। तालिका छवि, कुछ नमूना रिकॉर्ड के साथ, संदर्भ के लिए नीचे दी गई है:

दो टेबल के साथ काम करना।

आगे बढ़ने से पहले हमें दोनों तालिकाओं पर करीब से नज़र डालनी चाहिए और देखें कि ट्री व्यू और लिस्ट व्यू कंट्रोल में दोनों एक दूसरे से कैसे संबंधित हैं। अब तक हमने केवल एक ही टेबल के साथ काम किया है, एक ही टेबल में नोड की, डिस्क्रिप्शन और पेरेंटआईडी फील्ड्स के साथ।

मुझे आशा है कि आप में से जिन्होंने पहले ट्यूटोरियल एपिसोड का पालन किया है, उन्हें एक ही टेबल में समान फील्ड वैल्यू के बीच संबंधों की स्पष्ट समझ है। अब, हम देखेंगे कि कैसे ये दोनों टेबल (lvCategory और lvProducts) दो अलग-अलग नियंत्रणों के लिए एक-दूसरे से संबंधित हैं।

सबसे पहले, lvश्रेणी की जांच करें टेबल। इसमें एक संबंधित है पिछले चार रिकॉर्ड में मूल्यों के साथ क्षेत्र। वे चार रिकॉर्ड lvCategory Nodes के रिकॉर्ड आईडी 4 और 10 के चाइल्ड नोड हैं। ये चार नोड्स, ट्री व्यू कंट्रोल में चाइल्ड नोड्स के रूप में, पेरेंट नोड्स में जाते हैं:डिब्बाबंद फल और सब्जियां और सूखे मेवे और मेवे ट्री व्यू कंट्रोल में ही।

अब, lvProducts लें तालिका और इसमें ParentID . है फ़ील्ड मान। lvश्रेणी . में प्रत्येक श्रेणी आइटम के लिए तालिका, lvProducts . पर एक या अधिक संबंधित उत्पाद आइटम हैं टेबल। ParentID . में नंबर lvProducts . का क्षेत्र तालिका lvश्रेणी . में पैरेंट रिकॉर्ड से संबंधित है टेबल। इसे अलग तरीके से रखने के लिए, ListView नियंत्रण में सूचीबद्ध सभी उत्पाद आइटम, समान ParentID के साथ मान, समान CID . के साथ lvCategory तालिका में किसी विशेष रिकॉर्ड से संबंधित हैं मूल्य।

नोट: उत्पाद तालिका से इन दोनों तालिकाओं को बनाने में काफी समय लग सकता है। यदि आपने अभी तक इस ट्यूटोरियल का अनुसरण किया है, तो आप इस पेज के अंत में दिए गए डाउनलोड लिंक से डेमो डेटाबेस डाउनलोड कर सकते हैं। आयात lvश्रेणी और lvउत्पाद इस प्रोजेक्ट के साथ डेटाबेस से आपके वर्तमान डेटाबेस में तालिकाएँ। जब आप वर्तमान डेटाबेस के साथ इस प्रोजेक्ट को पूरा करते हैं, यदि आप इसके साथ कुछ समस्याओं का सामना करते हैं, तो आप अपने काम को सही करने के लिए डेमो डेटाबेस को संदर्भ बिंदु के रूप में उपयोग कर सकते हैं।

फॉर्म मॉड्यूल VBA कोड।

  1. frmListViewखोलें डिज़ाइन व्यू में फॉर्म।

  2. प्रपत्र का कक्षा मॉड्यूल प्रदर्शित करें।

  3. निम्नलिखित पूर्ण VBA कोड को मॉड्यूल में कॉपी और पेस्ट करें और Ctrl+S दबाएं कोड को सेव करने के लिए।

Option Compare Database
Option Explicit

Dim tv As MSComctlLib.TreeView
Dim lvList As MSComctlLib.ListView
Dim imgList As MSComctlLib.ImageList
Const Prfx As String = "X"

Private Sub Form_Load()
Dim db As DAO.Database
Dim tbldef As TableDef

    Set tv = Me.TreeView0.Object
    tv.Nodes.Clear
    
    Set imgList = Me.ImageList3.Object
    
With tv
    .Font.Size = 9
    .Font.Name = "Verdana"
    .ImageList = imgList 'assign preloaded imagelist control
 End With

    Set db = CurrentDb
    Set tbldef = db.TableDefs("lvProducts")
    
    Set lvList = Me.ListView0.Object
    lvList.ColumnHeaders.Clear
    lvList.ListItems.Clear
    lvList.Icons = imgList
    
    'Initialize ListView & Column Headers Property Values
     With lvList
        .ColumnHeaderIcons = imgList
        .Font.Size = 9
        .Font.Name = "Verdana"
        .Font.Bold = False
        .View = lvwReport
        .GridLines = True
     
        'ColumnHeaders.Add() Syntax:
        'lvList.ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon
        'Alignment: 0 - Left, 1 - Right, 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 Nodes

End Sub

Private Sub LoadTreeView()
    Dim Nod As 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 treeview nodes
     tv.Nodes.Clear
     
    'Initialize Listview nodes
    While lvList.ListItems.Count > 0
          lvList.ListItems.Remove (1)
    Wend
    
    strSQL = "SELECT lvCategory.CID, lvCategory.Category, "
    strSQL = strSQL & "lvcategory.BelongsTo FROM lvCategory ORDER BY lvCategory.CID;"
    
    Set db = CurrentDb
    Set rst = db.OpenRecordset(strSQL, dbOpenSnapshot)
    
    If Not rst.BOF And Not rst.EOF Then
        rst.MoveFirst
        firstCatID = rst!CID
    Else
        Exit Sub
    End If
    ' Populate all Records as Rootlevel Nodes
    Do While Not rst.BOF And Not rst.EOF
            strCatKey = Prfx & CStr(rst!CID)
            strCategory = rst!Category
            
            Set Nod = tv.Nodes.Add(, , strCatKey, strCategory, 1, 2)
            Nod.Tag = rst!CID
        rst.MoveNext
    Loop
    
    'In the second pass of the the same set of records
    'Move Child Nodes under their Parent Nodes
    rst.MoveFirst
    Do While Not rst.BOF And Not rst.EOF
        strBelongsTo = Nz(rst!BelongsTo, "")
        If Len(strBelongsTo) > 0 Then
            strCatKey = Prfx & CStr(rst!CID)
            strBelongsTo = Prfx & strBelongsTo
            strCategory = rst!Category
            
            Set tv.Nodes.Item(strCatKey).Parent = tv.Nodes.Item(strBelongsTo)
        End If
        rst.MoveNext
   Loop
    rst.Close
    
    ' Populate ListView Control with Product details
    ' of the first Category Item
    LoadListView firstCatID
    
End Sub


Private Sub LoadListView(ByVal CatID)
    Dim strProduct As String
    Dim strPKey As String
    Dim intCount As Integer
    Dim tmpLItem As MSComctlLib.ListItem
    Dim db As DAO.Database
    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 = strSQL & "WHERE (lvProducts.ParentID = " & CatID & ") "
     strSQL = strSQL & "ORDER BY lvProducts.[Product Name];"
    
    'Open filtered Products List for selected category
    Set db = CurrentDb
    Set rst = db.OpenRecordset(strSQL, dbOpenSnapshot)
    
    Do While Not rst.BOF And Not rst.EOF
        intCount = intCount + 1
        strProduct = rst![Product Name]
        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) 'first column
            lvList.ForeColor = vbBlue
            
            'List second column sub-item Syntax:
            'tmpLItem.ListSubItems.Add Column - Index, Key, Text, ReportIcon, ToolTipText
            tmpLItem.ListSubItems.Add 1, strPKey & CStr(intCount), Nz(rst![Quantity Per Unit], ""), 6
            
            'List third column sub-item
            tmpLItem.ListSubItems.Add 2, strPKey & CStr(intCount + 1), Format(rst![list Price], "0.00"), 6, "In Local Currency."
        rst.MoveNext
    Loop
    
    Set db = Nothing
    Set rst = Nothing
    
    If intCount > 0 Then lvList.ListItems(1).Selected = True
    
End Sub

Private Sub TreeView0_NodeClick(ByVal Node As Object)
Dim Cat_ID As String
Cat_ID = Node.Tag

LoadListView Cat_ID

End Sub

Private Sub ListView0_Click()
Dim lvKey As String, lvLong As Long
Dim Criterion As String

lvKey = lvList.SelectedItem.Key
lvLong = Val(Mid(lvKey, 2))

DoCmd.OpenForm "ProductDetails", , , , , , lvLong

End Sub
Private Sub cmdExit_Click()
    DoCmd.Close
End Sub

आइए हम संहिता की समीक्षा करें और यह समझने की कोशिश करें कि वे क्या करते हैं।

वैश्विक घोषणा क्षेत्र में, TreeView ऑब्जेक्ट (tv .) ), लिस्ट व्यू (lvList .) ) और इमेजलिस्ट (imgList ) वस्तु चर घोषित किए जाते हैं। लगातार Prfx वैरिएबल को "X . मान के साथ घोषित किया गया है ” और नोड कुंजी उपसर्ग मान के रूप में उपयोग किया जाता है।

जब frmListView खुला है, Form_Load() घटना प्रक्रिया चलती है। डेटाबेस ऑब्जेक्ट db और TableDef ऑब्जेक्ट वेरिएबल tbldef घोषित कर दिया गया है।

ट्री व्यू0 प्रपत्र पर नियंत्रण वस्तु चर tv. . को सौंपा गया है कथन tv.Nodes.Clear मेमोरी में ट्री व्यू कंट्रोल ऑब्जेक्ट इंस्टेंस को इनिशियलाइज़ करता है।

इसके बाद, imgList ऑब्जेक्ट वैरिएबल को ImageList3 . के साथ इनिशियलाइज़ किया गया है प्रपत्र पर नियंत्रण।

ट्री व्यू कंट्रोल डिस्प्ले फॉन्ट और इमेजलिस्ट प्रॉपर्टीज।

निम्नलिखित कथन ट्री व्यू कंट्रोल का फ़ॉन्ट नाम, फ़ॉन्ट-आकार और इसकी छविसूची सेट करते हैं संपत्ति को imgList . के साथ लोड कर दिया गया है ऑब्जेक्ट, ताकि हम ट्री व्यू नोड इमेज के लिए इमेज की नेम्स या इमेज इंडेक्स नंबर का उपयोग कर सकें।

With tv
    .Font.Size = 9
    .Font.Name = "Verdana"
    .ImageList = imgList 'assign preloaded imagelist control
 End With

The ListView कंट्रोल प्रॉपर्टी सेटिंग्स और कॉलम हेडर्स।

उसके बाद, कोड का निम्न खंड ListView नियंत्रण को प्रारंभ करता है और इसके गुण मान निर्दिष्ट करता है।

    Set db = CurrentDb
    Set tbldef = db.TableDefs("lvProducts")
    
    Set lvList = Me.ListView0.Object
    lvList.ColumnHeaders.Clear
    lvList.ListItems.Clear
    lvList.Icons = imgList
    
    'Initialize ListView & Column Headers Property Values
     With lvList
        .ColumnHeaderIcons = imgList
        .Font.Size = 9
        .Font.Name = "Verdana"
        .Font.Bold = False
        .View = lvwReport
        .GridLines = True
        
        'ColumnHeaders.Add() Syntax:
        'lvList.ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon
        'Alignment: 0 - Left, 1 - Right, 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 = Nothing
    Set tbldef = Nothing

डेटाबेस ऑब्जेक्ट tbldef वेरिएबल lvProducts . के साथ असाइन करता है तालिका परिभाषा। ListView कॉलम हेडर . के रूप में उपयोग करने के लिए हमें डेटा फ़ील्ड नामों की आवश्यकता है , उनके संबंधित डेटा मानों के लिए, शीर्ष पर। हैडर टेक्स्ट पैरामीटर मान तालिका फ़ील्ड नाम से लिया जा सकता है।

कॉलम हेडर में एक छवि भी प्रदर्शित की जा सकती है। इसलिए, हमने imgList . असाइन किया है lvList पर आपत्ति करें.ColumnHeaderIcons संपत्ति।

इसके बाद, आवश्यक फ़ॉन्ट, फ़ॉन्ट-आकार, और शैली मान सूची दृश्य नियंत्रण के उनके संबंधित गुणों को असाइन किए गए हैं, यदि डिफ़ॉल्ट मान उपयुक्त नहीं पाए जाते हैं।

दृश्य . को बदलकर ListView को अलग तरह से देखा जा सकता है संपत्ति मूल्य। हमने lvwReport . चुना है (अधिकतम सुविधाओं के साथ मान 3)। आप 0,1 या 2 अन्य मानों को बदल सकते हैं और प्रयोग कर सकते हैं। संपत्ति देखें मान 3 (lvwReport ) कॉलम हेडर के साथ कॉलम में मान प्रदर्शित करता है, छवि चिह्न, और ग्रिड लाइनें।

हमने डेटा के तीन क्षेत्र लिए हैं (उत्पाद का नाम , प्रति इकाई मात्रा, और सूची मूल्य) ListView नियंत्रण में तीन अलग-अलग स्तंभों में प्रदर्शित करने के लिए lvProducts तालिका से।

कॉलम चौड़ाई मान पिक्सेल में है। संरेखण संपत्ति मूल्य श्रेणियां 0 से 2 तक हैं और प्रत्येक मान का अर्थ नीचे दिया गया है:

0 - बाएं संरेखित करें

1 - दायां संरेखित करें

2 - केंद्र संरेखित करें।

कॉलम हैडर जानकारी बनाने के लिए lvList .ColumnHeaders.Add() विधि को पैरामीटर के साथ बुलाया गया है।

जोड़ें () विधि सिंटैक्स:

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

कोड खंड में उपरोक्त तीन कथनों के साथ, हमने सभी तीन स्तंभ शीर्षों को फ़ील्ड नामों के साथ जोड़ दिया है:उत्पाद का नाम , प्रति इकाई मात्रा, और सूची मूल्य कॉलम.

हमने किसी भी आइटम को ListView कंट्रोल में जोड़ने से पहले यह कदम उठाया है और वह भी Form_Load() इवेंट प्रक्रिया में, बजाय ListView आइटम्स को पॉप्युलेट करने के।

इसके बाद, LoadTreeView() को कॉल करें ट्री व्यू कंट्रोल नोड्स बनाने के लिए सब-रूटीन। जैसा कि हमने पहले के एपिसोड में चर्चा की है, हमने इस कार्य को दो चरणों वाली प्रक्रिया में विभाजित किया है।

परिवर्तनीय घोषणाओं के बाद, TreeView और ListView नियंत्रण प्रारंभ किए गए हैं।

lvश्रेणी . खोलने के तुरंत बाद रिकॉर्ड सेट, पहले रिकॉर्ड की कुंजी फ़ील्ड (श्रेणी आईडी:CID) मान firstCatID में सहेजा गया है बाद में उपयोग के लिए परिवर्तनीय।

इसके बाद, lvCategory टेबल से सभी रिकॉर्ड्स को शुरू में ट्री व्यू कंट्रोल में रूट-लेवल नोड्स के रूप में जोड़ा जाता है।

रिकॉर्ड के उसी सेट के दूसरे पास में, यह BelongsTo . की जांच करता है फ़ील्ड मान, यदि यह खाली है तो उन नोड्स को रूट-लेवल नोड के रूप में बनाए रखा जाता है, अन्यथा, पेरेंटआईडी फ़ील्ड मान रूट-लेवल नोड की आईडी है। पेरेंटआईडी मान का उपयोग करते हुए वर्तमान नोड को पेरेंट नोड के तहत उसके चाइल्ड नोड के रूप में स्थानांतरित कर दिया गया है।

मैंने पहले के एपिसोड में ट्री व्यू कंट्रोल में नोड्स को पॉप्युलेट करने की दो-चरणीय प्रक्रिया के इस पहलू को समझाया है और पिछले ट्यूटोरियल सत्र में विस्तार से प्रयोगों द्वारा सिद्ध किया गया है।

रिकॉर्डसेट-ऑब्जेक्ट को बंद करने के बाद LoadListView(ByVal CatID) सबरूटीन को बुलाया गया है। प्रथम श्रेणी रिकॉर्ड का CID फ़ील्ड मान firstcatID . में सहेजा गया है चर को फ़ंक्शन के पैरामीटर के रूप में पारित किया गया है।

श्रेणी अद्वितीय CID फ़ील्ड मान चर firstCatID . में पारित हुआ पैरामीटर के रूप में संबंधित उत्पाद रिकॉर्ड्स को फ़िल्टर करने के लिए strSQL स्ट्रिंग में मानदंड के रूप में उपयोग किया गया है।

हमने लिस्ट व्यू कंट्रोल पर प्रदर्शित करने के लिए फ़िल्टर किए गए रिकॉर्ड से केवल चार फ़ील्ड डेटा लिया है। की-फ़ील्ड:PID , उत्पाद का नाम , मात्रा प्रति यूनिट, और सूची मूल्य . PID फ़ील्ड मान का उपयोग कुंजी के रूप में किया गया है और यह प्रदर्शन में दिखाई नहीं देगा।

ColumnHeaders.Add() सभी तीन कॉलम हेडर जोड़ने के लिए विधि को तीन बार बुलाया गया है।

नोट: कथन की जांच करें कि हमने कोई कुंजी पैरामीटर मान प्रदान नहीं किया है, लेकिन सिस्टम द्वारा अनुक्रमणिका मान डाला जाएगा। एक बार लोड हो जाने के बाद हमने कॉलम हेडर के साथ काम करने की योजना नहीं बनाई है। अगर हम करते भी हैं, तो हम कॉलम को इंडेक्स वैल्यू के साथ संबोधित कर सकते हैं। लेकिन, हमें उत्पाद रिकॉर्ड फ़ील्ड मानों को उसी क्रम में लोड करना होगा जिस क्रम में कॉलम हेडर अनुक्रम हैं।

कॉलम में उत्पाद मानों के साथ सूची दृश्य नियंत्रण को पॉप्युलेट करना।

ListView नियंत्रण पर डेटा सूची प्रदर्शित करने के लिए, हमें ListView नियंत्रण में मानों के सभी तीन कॉलम जोड़ने के लिए, तीन अलग-अलग कुंजी मानों के साथ Add() विधियों के दो सेट की आवश्यकता होती है।

पहला कॉलम मान lvList . के साथ जोड़ा जाएगा .सूची आइटम जोड़ें () तरीका। अन्य सभी कॉलम मान lvList . के साथ जोड़े जा सकते हैं .ListSubItems जोड़ें () विधि।

हमने एक काउंटर वेरिएबल बनाया है:intCount, और प्रत्येक Do जबकि पर अपना मान बढ़ाता है। . . lvList में कुंजी-मान को अद्वितीय बनाने के लिए लूप चक्र और उसके वर्तमान मान को कुंजी (PID) मान में जोड़ा जाएगा। ListSubItems.Add() विधि।

पहले कॉलम की ListItems.Add() विधि सिंटैक्स नीचे दिया गया है:

‘lvList.ListItems.Add Index,Key,Text,Icon,SmallIcon

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

उपरोक्त कथन ट्री व्यू नोड की ऐड विधि के समान है। tmpLItem ListItem ऑब्जेक्ट . के रूप में घोषित किया गया है और जोड़ा ListItem का संदर्भ रखता है ताकि इसका उपयोग ListSubItems को जोड़ने के लिए किया जा सके।

lvList.ListSubItems.Add() विधि सिंटैक्स थोड़ा अलग है जैसा कि नीचे दिया गया है। दिखाया गया सिंटैक्स दूसरे पैरामीटर मान strPKey और Cstr(intCount + 1) के साथ दूसरी .ListSubItems.Add() विधि के लिए है। . पहली ListSubItems.Add() विधि में कुंजी मान strPKey &Cstr(intCount) के रूप में होगा ।

‘tmpLItem.ListSubItems.Add Index, Key, Text, ReportIcon, ToolTipText

tmpLItem.ListSubItems.Add 2, strPKey & CStr(intCount + 1), Format(rst![List Price], "0.00"), 6, "In Local Currency."

ListSubItem की जोड़ें विधि में ReportIcon है और टूलटिप टेक्स्ट अंतिम दो मापदंडों के रूप में। हमने टूलटिप-टेक्स्ट पैरामीटर मान का उपयोग केवल अंतिम कॉलम के लिए किया है।

एनबी: कॉलम में लोड किए गए मान और उससे संबंधित अन्य सभी सेटिंग्स तभी काम करेंगी जब आप पहले कॉलम को छोड़कर व्यू ऑप्शन -3 (lvwReport) का चयन करेंगे। अन्यथा, उन सभी को अनदेखा कर दिया जाता है।

टूलटिप टेक्स्ट तब प्रदर्शित होता है जब माउस पॉइंटर अंतिम कॉलम पर होवर करता है।

सभी तीन स्तंभों (ListItems &ListSubItems) में जोड़ें () विधि समान रिकॉर्ड PID का उपयोग करती है कुंजी के रूप में मान। चूंकि, एक ही रिकॉर्ड के विभिन्न स्तंभों के लिए अद्वितीय आईडी मान की आवश्यकता होती है क्योंकि ListSubItems के लिए intCount चर मान को एक से बढ़ा दिया गया है और एक स्ट्रिंग में परिवर्तित किया गया है और फिर PID फ़ील्ड मान के साथ जोड़ा गया है।

इस प्रकार चयनित श्रेणी आइटम-संबंधित उत्पाद रिकॉर्ड सभी ListView नियंत्रण में सूचीबद्ध हैं।

पूरा उत्पाद रिकॉर्ड विवरण प्रदर्शित करने के लिए अलग फॉर्म।

चूंकि lvProducts तालिका में अधिक फ़ील्ड और मान हैं, जो हम ListView नियंत्रण पर प्रदर्शित कर सकते हैं, ListView आइटम क्लिक इवेंट एक अलग फॉर्म ProductDetails खोलेगा और पूरा रिकॉर्ड विवरण प्रदर्शित करता है।

चयनित उत्पाद रिकॉर्ड के सभी विवरणों के साथ प्रपत्र की छवि नीचे दी गई है:

The ListView0_Click() इवेंट प्रक्रिया।

Private Sub ListView0_Click()
Dim lvKey As String, lvLong As Long
Dim Criterion As String

lvKey = lvList.SelectedItem.Key
lvLong = Val(Mid(lvKey, 2))

DoCmd.OpenForm "ProductDetails", , , , , , lvLong

End Sub

ListView0_Click() ईवेंट उत्पाद की कुंजी- . को निकालता है मान लें और इसे ओपन आर्ग्युमेंट (OpenArgs) के रूप में फॉर्म में पास करें।

उत्पाद विवरण प्रपत्र।

Form_Open() ईवेंट प्रक्रिया में, OpenArgs स्रोत रिकॉर्ड को फ़िल्टर करने और उन्हें प्रपत्र पर प्रदर्शित करने के लिए फ़िल्टर मानदंड बनाने के लिए मान का उपयोग किया गया है।

ProductDetails फॉर्म मॉड्यूल कोड लिस्टिंग:

Option Compare Database
Option Explicit

Private Sub cmdClose_Click()
DoCmd.Close
End Sub

Private Sub Form_Open(Cancel As Integer)
Dim lngID As Long
lngID = Nz(Me.OpenArgs, 0)
If lngID > 0 Then
    Me.Filter = "id = " & lngID
    Me.FilterOn = True
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
With Me
    .Filter = ""
    .FilterOn = False
End With
End Sub

उत्पाद विवरण प्रपत्र का स्रोत डेटा फ़िल्टर किए गए रिकॉर्ड से आता है, जो OpenArgs के माध्यम से प्रपत्र को दिए गए PID (उत्पाद आईडी) कोड के आधार पर होता है। मूल उत्पाद तालिका को NorthWind.accdb डेटाबेस से डाउनलोड किया गया और उसका नाम बदलकर ProductNew कर दिया गया।

आशा है कि आपको ListView Control Project करने में मज़ा आया होगा। ListView नियंत्रण के साथ आने के लिए और अधिक।

नीचे दिए गए लिंक से डेमो डेटाबेस डाउनलोड करें, और हैप्पी लिस्ट व्यूइंग।

क्रिसमस की शुभकामनाएं और नया साल मुबारक।

<बी>

डेमो डेटाबेस डाउनलोड करें।


  1. एक्सेल का राउंडडाउन फ़ंक्शन
  2. माउसमूव इवेंट से कॉल फंक्शन
  3. दिनांक2पाठ्य और पाठ2दिनांक समारोह
  4. विथइवेंट्स एमएस-एक्सेस क्लास मॉड्यूल ट्यूटोरियल
  5. इवेंट के साथ और अपने खुद के इवेंट को परिभाषित करना
  6. घटनाओं के साथ बटन कॉम्बो सूची टेक्स्टबॉक्स टैब

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. माइक्रोसॉफ्ट एक्सेस पॉडकास्ट एपिसोड 1 सुनें

  2. एमएस-एक्सेस क्लास मॉड्यूल और वीबीए

  3. SQL में किसी भी अनुपलब्ध डेटा तालिका में CreatedBy और CreatedOn सम्मिलित करें

  4. माइक्रोसॉफ्ट एक्सेस का उपयोग करते समय आर्किटेक्चर मिसमैच त्रुटियों के आसपास काम करना

  5. अटैचमेंट फ़ील्ड वाली टेबल के लिए बल्क इंसर्ट या अपडेट

© कॉपीराइट http://hi.sqldat.com सर्वाधिकार सुरक्षित