लिस्टबॉक्स हेडर - एमएस-एक्सेस, एक्सेस-वीबीए, एमएस-एक्सेस-2010, लिस्टबॉक्स-कंट्रोल नहीं दिखा रहा है

मेरे पास एक सूची बॉक्स है (आंकड़ा जाओ), और यह सूची बॉक्स हैएक रिकॉर्डसोर्स से बंधे नहीं है और अंत उपयोगकर्ता द्वारा अन्य नियंत्रण विकल्पों के आधार पर गतिशील रूप से बनाया गया है। अतीत में मैंने इस बारे में बहुत सी समस्या नहीं थी, लेकिन इस वर्तमान गतिशील क्वेरी स्थिति के साथ, कॉलम निश्चित रूप से स्थिर नहीं हैं। जैसा कि रिकॉर्डसेट का उपयोग किया जा रहा है, एक क्रॉसटैब क्वेरी है, एक चौथाई क्रॉसटैब क्वेरी में 5 कॉलम हो सकते हैं, अगले 8 कॉलम, और अगले 3 कॉलम।

मैंने जिन अधिकांश सूची बॉक्स को लागू किया है, उनमें से एक स्थिर मात्रा में कॉलम हैं जिनकी मैं भविष्यवाणी कर सकता हूं, लेकिन इस स्थिति में मैं लगातार स्तंभों की संख्या की भविष्यवाणी करने में असमर्थ हूं।

मैंने सेट किया है ColumnHeads संपत्ति के लिए Yes, इसलिए यह कोई मुद्दा नहीं है और मैं भी रीसेट करता हूं ColumnHeads इससे पहले वीबीए में संपत्ति AddItem ऑपरेशन मैंने सेटअप किया है।

तर्क मैं प्रश्न में सूची बॉक्स में / आसपास काम करने के लिए उपयोग कर रहा हूं (lstCategoryPG):

If lstCatType.ListIndex >= 0 Then
"Application.Echo False    "Turn off Screen Updating

Dim crt As String: crt = "crt_CategoryPG"   "Cross-Tab Query
Dim cttbl As String: cttbl = CreateCTTable(crt) "Create Table to store the Cross-Tab information
Dim sql As String: sql = SQLSelect(cttbl)
Dim flds As DAO.Recordset: Set flds = CurrentDb.OpenRecordset(sql)
Dim fldwd As String     "Store the Field Width pattern
fldwd = "0"";0"";2"""   "Handles `tid` and `cid` columns in the ListBox
"Assign the number of columns based on the number of fields in CTtable
lstCategoryPG.ColumnCount = flds.Fields.Count

Dim fld As Long
For fld = 3 To (flds.Fields.Count - 1)
fldwd = fldwd & ";.75"""
Next
flds.Close: Set flds = Nothing

lstCategoryPG.ColumnWidths = fldwd

sql = SQLSelect(cttbl, , ("tid = " & lstCatType.Value))

lstCategoryPG.Enabled = True
lstCategoryPG.ColumnHeads = True
RefreshControl CurrentDb, lstCategoryPG, sql, , False
"Application.Echo True     "Turn Screen Updating back on
End If

उत्तर:

जवाब के लिए 0 № 1

टेंटेटिव ब्रेक-फिक्स समाधान जो मेरे लिए काम करता है जब तक कि मैं हिम्मत में नहीं आ सकता और देखता हूं कि कॉलम हेडर को क्वेरी फ़ील्ड से क्यों नहीं खींचा जा रहा है।

If lstCatType.ListIndex >= 0 Then
"Application.Echo False    "Turn off Screen Updating

Dim crt As String: crt = "crt_CategoryPG"   "Cross-Tab Query
Dim cttbl As String: cttbl = CreateCTTable(crt) "Create Table to store the Cross-Tab information
Dim sql As String: sql = SQLSelect(cttbl)
Dim flds As DAO.Recordset: Set flds = CurrentDb.OpenRecordset(sql)
Dim fldwd As String, fldhd As String      "Store the Field Width pattern and Field Header Row
--> fldhd = "-1;-1;Category"
fldwd = "0"";0"";2.5"""   "Handles `tid` and `cid` columns in the ListBox
"Assign the number of columns based on the number of fields in CTtable
lstCategoryPG.ColumnCount = flds.Fields.Count

Dim fld As Long
For fld = 3 To (flds.Fields.Count - 1)
fldwd = fldwd & ";.75"""
-->     fldhd = fldhd & ";" & flds.Fields(fld).Name
Next
flds.Close: Set flds = Nothing

lstCategoryPG.ColumnHeads = True
lstCategoryPG.ColumnWidths = fldwd

sql = SQLSelect(cttbl, , ("tid = " & lstCatType.Value))

lstCategoryPG.Enabled = True
RefreshControl CurrentDb, lstCategoryPG, sql, , False
--> lstCategoryPG.AddItem fldhd, 0
"Application.Echo True     "Turn Screen Updating back on
End If

संबंधित सवाल
सबसे लोकप्रिय