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

एमएस-एक्सेस रिकॉर्डसेट और क्लास मॉड्यूल

परिचय।

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

हमारे पास एक छोटी तालिका है:तालिका1 , इसमें कुछ रिकॉर्ड के साथ। यहाँ तालिका 1 की छवि है।

उपरोक्त तालिका में केवल चार फ़ील्ड हैं:Desc, मात्रा, UnitPrice, और TotalPrice। TotalPrice फ़ील्ड खाली है।

  • हमारे क्लास मॉड्यूल के कार्यों में से एक Qty * UnitPrice के उत्पाद के साथ TotalPrice फ़ील्ड को अपडेट करना है।
  • क्लास मॉड्यूल में उपयोगकर्ता द्वारा निर्दिष्ट फ़ील्ड पर डेटा को सॉर्ट करने के लिए एक सबरूटीन है, और डीबग विंडो पर एक सूची डंप करता है।
  • एक अन्य सबरूटीन एक पैरामीटर के रूप में प्रदान किए गए कॉलम नंबर के आधार पर डेटा को सॉर्ट करने के बाद, एक नए नाम के साथ तालिका की एक प्रति बनाता है।

ClsRecUpdate Class मॉड्यूल.

  1. अपना एक्सेस डेटाबेस खोलें और VBA विंडो खोलें।
  2. कक्षा मॉड्यूल सम्मिलित करें।
  3. इसका नाम संपत्ति मान ClsRecUpdate . में बदलें ।
  4. निम्न कोड को कॉपी करके क्लास मॉड्यूल में पेस्ट करें और मॉड्यूल को सेव करें:
    विकल्प डेटाबेस की तुलना करें। REC(ByRef oNewValue as DAO.Recordset)यदि oNewValue कुछ भी नहीं है तो rstB =oNewValueEnd ifEnd प्रॉपर्टी पब्लिक सब अपडेट (ByVal Source1Col as Integer, ByVal Source2Col as Integer, ByVal updtcol as Integer) सेट करें। col Integercol =rstB.Fields.Count'Validate Column ParametersIf Source1Col> col या Source2Col> col या updtcol> col फिर MsgBox "एक या एक से अधिक कॉलम नंबर सीमा से बाहर!", vbExक्लेमेशन, "अपडेट ()" सबएंड से बाहर निकलें अगर'अपडेट फील्डऑन एरर GoTo Update_ErrrstB.MoveFirstDo जबकि rstB.EOF rstB नहीं है। rstB के साथ संपादित करें। .मूवफर्स्टएक्स यह SubUpdate_Err:MsgBox Err &":" और Err.Description, vbExclaration, "Update()"Resume Update_ExitEnd SubPublic Sub DataSort(ByVal intCol As Integer)Dim cols as Long, colTypeDim colnames() StringDim k as Long, colmTypeDim colnames() स्ट्रिंग के रूप में strTable, StringDim के रूप में strSortCol, डेटाबेस के रूप में StringDim db के रूप में strSQL, DAO के रूप में rst2। rstB.Fields(intCol).TypeSelect Case colType Case 3 से 7, 10 strSQL ="SELECT" और strTable &".* From" &strTable &"ORDER BY" &strTable &".[" &strSortCol &"];" Debug.Print "" और rstB.Fields (intCol) पर सॉर्ट किया गया। नाम और "आरोही क्रम" केस अन्य strSQL ="चुनें" और strTable &".* FROM" &strTable &";" Debug.Print "// SORT:COLUMN:<<" और strSortCol और "डेटा प्रकार अमान्य>> मान्य प्रकार:स्ट्रिंग, संख्या और मुद्रा //" Debug.Print "डेटा आउटपुट अनसोल्ड ऑर्डर में" एंड सेलेक्टसेट db =CurrentDbSet rst2 =db.OpenRecordset(strSQL)ReDim colnames(0 to cols) String'Save Field Names in Array to Print HeadingFor k =0 to cols colnames(k) =rst2.Fields(k).NameNext'Print SectionDebug.Print String(52) , "-")' कॉलम नाम को हेडिंग के रूप में प्रिंट करें यदि cols> 4 फिर colmLimit =4Else colmLimit =colsEnd IfFor k =0 colmLimit Debug.Print colnames(k),Next:Debug.PrintDebug.Print String(52, "-") 'डिबग में रिकॉर्ड प्रिंट करें windowrst2.MoveFirstDo जबकि नहीं rst2.EOF k =0 के लिए colmLimit' लिस्टिंग केवल 5 कॉलम तक सीमित है डीबग। =कुछ भी नहींडेटासॉर्ट_एक्जिट:सबडाटासॉर्ट_एर्र से बाहर निकलें:संदेशबॉक्स त्रुटि और ":" और त्रुटि विवरण, वीबीएक्सक्लेमेशन, "डेटासॉर्ट ()" डेटासॉर्ट_एक्सिटएंड सबपब्लिक सब टीबीएलक्रेट (वैकल्पिक सॉर्टकॉल इंटीजर के रूप में फिर से शुरू करें) =0) DAO.Database के रूप में मंद dba, tmp() DAO के रूप में VariantDim tbldef के रूप में। TableDefDim fld के रूप में DAO.Field, idx के रूप में DAO.IndexDim rst2 DAO के रूप में। लॉन्ग, कोल्स लॉन्गऑन एरर रिज्यूमे नेक्स्टस्ट्रटेबल =rstB.Name और "_2" सेट dba =CurrentDbOn एरर रिज्यूमे NextTryAgain:सेट rst2 =dba.OpenRecordset (strTable) यदि त्रुटि> 0 फिर tbldef =dba सेट करें। CreateTableDef (strTable) फिर से शुरू करें जारी रखें 2 .Dba.TableDefs.Delete strTable dba.TableDefs.Refresh GoTo TryAgainEnd ifContinue:On Error GoTo TblCreate_Errfldcount =rstB.Fields.Count - 1ReDim tmp(0 to fldcount, 0 To 1) वैरिएंट'सेव सोर्स फॉर फाइल फील्ड नाम और डेटा टाइप के रूप में i =0 tmp(i, 0) =rstB.Fields(i) की गणना करने के लिए। नाम:tmp(i, 1) =rstB.Fields(i).TypeNext'नई तालिका के लिए फ़ील्ड और अनुक्रमणिका बनाएं i =0 tbldef की गणना करने के लिए .Fields.Append tbldef.CreateField(tmp(i, 0)), tmp(i, 1)) Next'डेटा को सॉर्ट करने के लिए इंडेक्स बनाएं idx =tbldef.CreateIndex("NewIndex") idx के साथ .Fields.Append .CreateField(tmp (SortCol, 0)) के साथ समाप्त करें'डेटाबेस में Tabledef और अनुक्रमणिका जोड़ें। पहले रिकॉर्ड पर रीसेट करें, जबकि नहीं rstB.EOF rst2.AddNew 'नई तालिका में रिकॉर्ड बनाएं i =0 के लिए fldcount rst2.Fields(i).Value =rstB.Fields(i).Value Next rst2.UpdaterstB.MoveNext 'move अगले रिकॉर्ड के लिएLooprstB.MoveFirst 'रिकॉर्ड पॉइंटर को पहले recordrst2 पर रीसेट करें। CloseSet rst2 =कुछ भी सेट tbldef =कुछ भी नहीं सेट dba =कुछ भी नहीं संदेश बॉक्स "सॉर्ट किया गया डेटा" और strTableTblCreate_Exit:Exit SubTblCreate_Err:MsgBox Err &":" और Err.Description। TblCreate()"TblCreate_ExitEnd सब फिर से शुरू करें

rstB संपत्ति को DAO.Recordset ऑब्जेक्ट के रूप में घोषित किया गया है।

सेट प्रॉपर्टी प्रक्रिया के माध्यम से, एक रिकॉर्डसेट ऑब्जेक्ट को ClsRecUpdate क्लास में पास किया जा सकता है वस्तु।

अपडेट () सबरूटीन पहले कॉलम * दूसरे कॉलम के उत्पाद के साथ तीसरे पैरामीटर कॉलम की गणना और अद्यतन करने के लिए पैरामीटर के रूप में तीन-स्तंभ संख्याओं (0 आधारित स्तंभ संख्या) को स्वीकार करता है।

डेटासॉर्ट () सबरूटीन पैरामीटर के रूप में पारित कॉलम संख्या के आधार पर रिकॉर्ड को आरोही क्रम में क्रमबद्ध करता है।

सॉर्टिंग कॉलम डेटा प्रकार नंबर या मुद्रा या स्ट्रिंग होना चाहिए। अन्य डेटा प्रकारों को अनदेखा किया जाता है।

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

TblCreate() सबरूटीन पैरामीटर के रूप में पारित कॉलम संख्या के आधार पर डेटा को सॉर्ट करेगा, और एक नए नाम के साथ एक टेबल बनाएगा। पैरामीटर वैकल्पिक है, यदि कोई कॉलम नंबर पैरामीटर के रूप में पास नहीं किया जाता है तो तालिका को पहले कॉलम में डेटा पर सॉर्ट किया जाएगा यदि कॉलम का डेटा प्रकार मान्य प्रकार है। तालिका का मूल नाम संशोधित किया जाएगा और स्ट्रिंग के साथ जोड़ा जाएगा “_2” मूल नाम को। यदि स्रोत तालिका का नाम तालिका1 . है तो नई तालिका का नाम Table1_2 होगा ।

ClsUpdate के लिए परीक्षण कार्यक्रम।

आइए हम ClsRecUpdate का परीक्षण करें छोटे प्रोग्राम के साथ क्लास ऑब्जेक्ट।

परीक्षण कार्यक्रम कोड नीचे दिया गया है:

सार्वजनिक उप डेटाप्रोसेस()DAO के रूप में मंद डीबी। DAO के रूप में डेटाबेसDim rstA। ClsRecUpdateSet R_Set के रूप में RecordsetDim R_Set =नया ClsRecUpdateSet db =CurrentDbSet rstA =db.OpenRecordset("Table1", dbOpenTable) का ऑब्जेक्टसेट R_Set ऑब्जेक्ट भेजें। REC =rstA'अपडेट कुल मूल्य फ़ील्डकॉल R_Set.Update(1, 2, 3) 'col3=col1 * col2' UnitPrice कॉलम पर आरोही क्रम को क्रमबद्ध करें और डिबग WindowCall में प्रिंट करें R_Set.DataSort(2)'UnitPrice पर क्रमबद्ध नई तालिका बनाएं आरोही ऑर्डरकॉल R_Set.TblCreate(2) सेट करें 

आप क्लास ऑब्जेक्ट का परीक्षण करने के लिए कोई भी रिकॉर्डसेट पास कर सकते हैं।

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

सॉर्ट कॉलम डेटा प्रकार का चयन केवल स्ट्रिंग, न्यूमेरिक या मुद्रा प्रकार होना चाहिए। अन्य प्रकारों की उपेक्षा की जाती है। रिकॉर्डसेट कॉलम नंबर 0 आधारित होते हैं, जिसका मतलब है कि पहला कॉलम नंबर 0 है, दूसरा कॉलम 1 है, और इसी तरह आगे भी।

इस विषय पर सभी लिंक की सूची।

  1. एमएस-एक्सेस क्लास मॉड्यूल और वीबीए
  2. एमएस-एक्सेस वीबीए क्लास ऑब्जेक्ट एरेज़
  3. एमएस-एक्सेस बेस क्लास और व्युत्पन्न ऑब्जेक्ट
  4. VBA बेस क्लास और व्युत्पन्न ऑब्जेक्ट-2
  5. आधार वर्ग और व्युत्पन्न वस्तु प्रकार
  6. एमएस-एक्सेस रिकॉर्डसेट और क्लास मॉड्यूल
  7. एक्सेस क्लास मॉड्यूल और रैपर क्लासेस
  8. आवरण वर्ग कार्यक्षमता परिवर्तन
  9. सुश्री-पहुंच और संग्रह वस्तु मूल बातें
  10. एमएस-एक्सेस क्लास मॉड्यूल और कलेक्शन ऑब्जेक्ट
  11. संग्रह वस्तु और प्रपत्र में तालिका रिकॉर्ड
  12. डिक्शनरी ऑब्जेक्ट बेसिक्स
  13. डिक्शनरी ऑब्जेक्ट बेसिक्स-2
  14. शब्दकोश ऑब्जेक्ट की और आइटम को सॉर्ट करना
  15. डिक्शनरी से फ़ॉर्म में रिकॉर्ड प्रदर्शित करें
  16. कक्षा वस्तुओं को शब्दकोश आइटम के रूप में जोड़ें
  17. फॉर्म पर क्लास ऑब्जेक्ट डिक्शनरी आइटम अपडेट करें

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कैसे बता सकता हूं कि डेटाबेस उच्च गुणवत्ता वाला है या नहीं?

  2. लगातार माइक्रोसॉफ्ट एक्सेस एमवीपी अवार्ड कैसे अर्जित करें

  3. 10 माइक्रोसॉफ्ट एक्सेस नेविगेशन फलक कीबोर्ड शॉर्टकट

  4. माइक्रोसॉफ्ट ट्री व्यू कंट्रोल ट्यूटोरियल

  5. Salesforce से लिंक करना या डेटा आयात करना