মাইক্রোসফ্ট অ্যাক্সেস ম্যানুয়াল ডেটা এন্ট্রি হ্রাস করে, ত্রুটিগুলি হ্রাস করে এবং আপনার ডাটাবেসকে রিয়েল টাইমে সামঞ্জস্য রেখে লিঙ্কযুক্ত টেবিল জুড়ে জটিল গণনাগুলি স্বয়ংক্রিয় করার জন্য শক্তিশালী বৈশিষ্ট্য সরবরাহ করে। গণনা করা ক্ষেত্রগুলি একটি ডাটাবেসকে আরও স্বয়ংক্রিয় করে তুলতে পারে; ব্যবহারকারীদের ম্যানুয়ালি মোট, ডিসকাউন্ট, নির্ধারিত তারিখ বা লাভের মান লিখতে বলার পরিবর্তে, অ্যাক্সেস বিদ্যমান ক্ষেত্রগুলি থেকে তাদের গণনা করতে পারে।
এই টিউটোরিয়ালে, আমরা দেখাব কিভাবে স্বয়ংক্রিয় ক্রস-লিঙ্কড কম্পিউটেশনের জন্য অ্যাক্সেস টেবিলে গণনা করা ক্ষেত্র যোগ করা যায়। আসুন গণনা করা ক্ষেত্রগুলি তৈরি করি যা স্বয়ংক্রিয়ভাবে সম্পর্কিত টেবিল জুড়ে মানগুলিকে টান এবং গণনা করে৷
মনে রাখবেন যে একটি উন্নত ডাটাবেসে, গণনা করা ক্ষেত্রগুলি এলোমেলোভাবে ব্যবহার করা উচিত নয়। সবচেয়ে গুরুত্বপূর্ণ নিয়ম হল:
- একই রেকর্ডের ক্ষেত্রের উপর নির্ভরশীল মানগুলির জন্য গণনা করা ক্ষেত্রগুলি ব্যবহার করুন
- সংযুক্ত টেবিল বা একাধিক রেকর্ডের উপর নির্ভর করে এমন গণনার জন্য প্রশ্নগুলি ব্যবহার করুন
ধাপ 1:নমুনা সম্পর্কিত টেবিল সেট আপ করুন
একটি গণনা করা ক্ষেত্র যা সারণী জুড়ে পৌঁছায় তা দৃঢ় সম্পর্কের উপর নির্ভর করে। একটি একক অভিব্যক্তি লেখার আগে এখানে শুরু করুন৷
সম্পর্ক তৈরি করুন:
- ডেটাবেস টুলস-এ যান ট্যাব>> সম্পর্ক নির্বাচন করুন
- টেবিল যোগ করুন।
- টেনে আনুন CustomerID গ্রাহকদের টেবিল থেকে CustomerID-এ অর্ডার টেবিলে
- টেনে আনুন ProductID পণ্য সারণি থেকে ProductID-এ অর্ডার ডিটেইলস টেবিলে
- টেনে আনুন OrderID অর্ডার টেবিল থেকে OrderID-এ অর্ডার ডিটেইলস টেবিলে
- সক্ষম করুন রেফারেন্সিয়াল ইন্টিগ্রিটি প্রয়োগ করুন
- ঠিক আছে ক্লিক করুন

এই সেটআপটি ক্রস-লিঙ্কযুক্ত গণনার অনুমতি দেয় (যেমন লাইনের মোট যোগফল হিসাবে অর্ডার সাবটোটাল)। এই সংযোগই ক্রস-টেবিল লুকআপগুলিকে নির্ভরযোগ্য করে তোলে। এটি ছাড়া, একটি রেফারেন্স করা রেকর্ড মুছে ফেলা বা অমিল হলে একটি গণনা করা ক্ষেত্র নীরবে শূন্য হতে পারে৷
ধাপ 2:একটি টেবিলে একটি সাধারণ গণনা করা ক্ষেত্র যোগ করা
- অর্ডারের বিবরণ খুলুন ডিজাইন ভিউ-এ টেবিল
- প্রথম খালি সারিতে:
- ক্ষেত্রের নাম:লাইন টোটাল
- ডেটা টাইপ:গণনা করা হয়েছে
- অ্যাক্সেস এক্সপ্রেশন বিল্ডার খোলে
- আপনার সূত্র লিখুন:
- অথবা এটি দৃশ্যমানভাবে তৈরি করুন:অর্ডার বিবরণ প্রসারিত করুন টেবিল>> পরিমাণ ডাবল-ক্লিক করুন এবং ইউনিট মূল্য , তারপর * যোগ করুন অপারেটর
- ফলাফলের ধরন সেট করুন (মুদ্রা, সংখ্যা, পাঠ্য, ইত্যাদি) অভিব্যক্তিটি
- যা প্রদান করে তা মেলানোর জন্য
- প্রসারিত করুন ক্ষেত্র বৈশিষ্ট্য>> মুদ্রা নির্বাচন করুন
- সংরক্ষণ করুন৷ টেবিল

ডিসকাউন্ট সহ মোট:
[Quantity] * [UnitPrice] * (1 - [DiscountRate])

অ্যাক্সেস এখন প্রতিটি রেকর্ডের জন্য স্বয়ংক্রিয়ভাবে লাইনটোটাল গণনা করবে — কোনও VBA নেই, কোনও ম্যানুয়াল আপডেটের প্রয়োজন নেই। যতবার আপনি ডেটাশীট ভিউতে পরিমাণ বা ইউনিটমূল্য যোগ বা সম্পাদনা করেন, লাইনটোটাল স্বয়ংক্রিয়ভাবে আপডেট হয়।

পদক্ষেপ 3:ক্রস-লিঙ্কড কম্পিউটেশন পরিচালনা করা — কোয়েরিতে ডোমেন এগ্রিগেট ফাংশন ব্যবহার করুন
সারণী গণনা করা ক্ষেত্রগুলিতে সরাসরি ক্রস-টেবিল রেফারেন্স অনুমোদিত নয়। আপনাকে প্রশ্ন বা VBA ব্যবহার করতে হবে। ডোমেন এগ্রিগেট ফাংশন হল এক্সপ্রেশনে অন্য টেবিল বা কোয়েরি থেকে কম্পিউটেড মান টেনে আনার জন্য অ্যাক্সেসের অন্তর্নির্মিত মেকানিজম। সবচেয়ে দরকারী হল:
ফাংশন উদ্দেশ্য DLookup()অন্য টেবিল থেকে একটি একক মান ফেরত দেয়DSum()একটি শর্তের সাথে মেলে অন্য সারণী থেকে যোগফলের মান দেয়একটি প্রশ্ন তৈরি করুন:
- তৈরি করুন এ যান ট্যাব>> SQL কোয়েরি নির্বাচন করুন
- টেবিল যোগ করুন থেকে ফলক, অর্ডার এবং গ্রাহক টেবিল যোগ করুন
- ক্ষেত্র যোগ করুন:CustomerName, OrderID
- একটি ফাঁকা ক্ষেত্র কলামে, মোট এর জন্য একটি গণনা করা ক্ষেত্র তৈরি করুন
- নিম্নলিখিত অভিব্যক্তি ঢোকান:
Total: DSum("[LineTotal]","OrderDetails","[OrderID]=" & [OrderID])
- DSum() মিলিত OrderID-এর জন্য LineTotal যোগ করে (একটি ডোমেন এগ্রিগেট ফাংশন যা টেবিল জুড়ে কাজ করে)
- qryOrderSummary হিসেবে সংরক্ষণ করুন
- চালান এ ক্লিক করুন

ক্যোয়ারী প্রতি রানে পুনরায় গণনা করা হয়। ফর্ম, রিপোর্ট বা আরও গণনার ভিত্তি হিসাবে এই ক্যোয়ারীটিকে রেকর্ড উত্স হিসাবে ব্যবহার করুন৷
মুদ্রা সহ বিন্যাস:
Total: CCur(DSum("[LineTotal]","OrderDetails","[OrderID]=" & [Orders].[OrderID]))

পদক্ষেপ 4:একটি গণনার উত্স হিসাবে একটি মাল্টি-টেবিল কম্পিউটেড কোয়েরি তৈরি করা
আরও পরিশীলিত পরিস্থিতির জন্য — যেমন একটি ছাড়যুক্ত মোট গণনা করা যাতে একটি টেবিল থেকে গ্রাহকের স্তর এবং অন্য একটি থেকে পণ্যের মূল্য জড়িত থাকে — আপনাকে একটি বেস কোয়েরি তৈরি করা উচিত যা সমস্ত প্রাসঙ্গিক টেবিলে যোগ দেয়, তারপর আপনার গণনা করা ক্ষেত্র বা ফর্মগুলিতে সেই প্রশ্নটিকে উল্লেখ করুন৷
পদক্ষেপ:
- তৈরি করুন এ যান ট্যাব>> SQL কোয়েরি নির্বাচন করুন
- অর্ডার যোগ করুন , পণ্য , এবং অর্ডারের বিবরণ প্রশ্নে
- ক্ষেত্র যোগ করুন:OrderID, ProductName
- একটি খালি ফিল্ড কক্ষে একটি গণনা করা কলাম যোগ করুন:
Profit: [DiscountedTotal] - [CostPrice]
- ক্যোয়ারীটিকে qryOrderProfit হিসাবে সংরক্ষণ করুন
- চালান এ ক্লিক করুন

আপনার কাছে এখন তাদের পণ্যের নাম সহ সমস্ত অর্ডারের জন্য একটি লাভ রিপোর্ট রয়েছে৷
৷

এখন যেকোন ফর্ম, রিপোর্ট বা ডাউনস্ট্রিম ক্যালকুলেটেড ফিল্ড সম্পূর্ণরূপে গণনা করা মান পেতে DLookup() বা qryOrderProfit-এর বিরুদ্ধে একটি সাবকোয়েরি ব্যবহার করতে পারে — সমস্ত ক্রস-লিঙ্কড এবং স্বয়ংক্রিয়৷
ধাপ 5:ডেটা ম্যাক্রো সহ স্বয়ংক্রিয় আপডেটগুলি
যখন আপনার একটি গণনাকৃত ফলাফল সংরক্ষণ করার প্রয়োজন হয় (শুধু প্রদর্শন করা হয় না) - উদাহরণস্বরূপ, প্রতিবার অর্ডারের বিবরণ রেকর্ড পরিবর্তন করার সময় গণনা করা মোট সংখ্যাটি অর্ডার টেবিলে লিখুন - চাইল্ড টেবিলের সাথে সংযুক্ত একটি ডেটা ম্যাক্রো ব্যবহার করুন৷
অর্ডার টেবিলে একটি মোট ক্ষেত্র যোগ করুন:
- প্রথমে, অর্ডার খুলুন ডিজাইন ভিউ-এ টেবিল
- ক্ষেত্রের নাম:মোট
- ডেটা টাইপ:কারেন্সি
এটি অবশ্যই একটি সাধারণ মুদ্রা ক্ষেত্র হতে হবে, একটি গণনাকৃত ক্ষেত্র নয়৷
৷সেটআপ:৷
- অর্ডারের বিবরণ খুলুন ডিজাইন ভিউ-এ
- টেবিল টুলস-এ যান ট্যাব>> টেবিল নির্বাচন করুন ট্যাব>> সন্নিবেশ করার পরে / আপডেটের পরে নির্বাচন করুন৷

- ম্যাক্রো এডিটরে, সেটফিল্ড ব্যবহার করুন এবং LookupRecord কর্ম:
- LookupRecord নির্বাচন করুন
Lookup Up A Record In: Orders Where Condition: [Orders].[OrderID] = [OrderDetails].[OrderID]
- EditRecord নির্বাচন করুন>> সেটফিল্ড নির্বাচন করুন
Name: [Orders].[Total]
Value: DSum("[LineTotal]","OrderDetails","[OrderID]=" & [OrderID])
- সংরক্ষণ করুন এ ক্লিক করুন

এটি প্রতিটি সন্নিবেশে বা অর্ডারের বিবরণে আপডেট করার সময় স্বয়ংক্রিয়ভাবে ফায়ার করে, পুনরায় গণনা করা মোটকে প্যারেন্ট অর্ডার টেবিলে ফিরিয়ে দেয় — সম্পূর্ণ স্বয়ংক্রিয়, কোন VBA প্রয়োজন নেই।
আপডেট করার পরে পুনরাবৃত্তি করুন:
সন্নিবেশ করার পরে৷ একটি নতুন বিস্তারিত সারি যোগ করা হলেই ম্যাক্রো মোট আপডেট করে। ব্যবহারকারী যদি পরিমাণ, ইউনিটমূল্য বা ডিসকাউন্ট রেট পরিবর্তন করে, তাহলে মোটকেও আপডেট করতে হবে।
একই ম্যাক্রো যোগ করুন:
Look Up A Record In Orders
Where Condition: [Orders].[OrderID]=[OrderDetails].[OrderID]
EditRecord
SetField
Name: [Orders].[Total]
Value: DSum("[LineTotal]","OrderDetails","[OrderID]=" & [OrderDetails].[OrderID])
- সংরক্ষণ করুন৷ এটা
এখন, যখনই অর্ডারের বিবরণে একটি রেকর্ড ঢোকানো বা আপডেট করা হয়, তখন অ্যাক্সেস স্বয়ংক্রিয়ভাবে অর্ডারের মোট পুনঃগণনা করে এবং অর্ডার টেবিলের সাথে মিলে যাওয়া রেকর্ডে সংরক্ষণ করে।

পদক্ষেপ 6:গণনাগুলি প্রদর্শন এবং ব্যবহার করা
- ডেটাশীট ভিউতে: গণনা করা ক্ষেত্রগুলি উপস্থিত হয় এবং লাইভ আপডেট করে৷
- ফর্ম/প্রতিবেদনে: সম্পূর্ণ ক্রস-লিঙ্কড ফলাফলের জন্য ক্যোয়ারীতে (qryOrderSummary) ফর্ম বা রিপোর্টের ভিত্তি করুন। এক্সপ্রেশন সহ আনবাউন্ড টেক্সট বক্স যোগ করুন।
- ফিল্টারিং/বাছাই: আপনি ক্যোয়ারী মানদণ্ড বা সাজানোর ক্ষেত্রে গণনা করা ক্ষেত্র ব্যবহার করতে পারেন।
টিপ: পরে একটি টেবিল গণনা করা ক্ষেত্র সম্পাদনা করতে:
- ডেটাশীট ভিউতে:কলাম নির্বাচন করুন>> ক্ষেত্র নির্বাচন করুন ট্যাব>> এক্সপ্রেশন পরিবর্তন করুন
- অথবা ডিজাইন ভিউ-এ ফিরে যান>> বৈশিষ্ট্য নির্বাচন করুন>> এক্সপ্রেশন নির্বাচন করুন .
সর্বোত্তম অনুশীলন এবং কর্মক্ষমতা বিবেচনা
- সারণী গণনা করা ক্ষেত্রগুলিতে প্রশ্নগুলি পছন্দ করুন একাধিক টেবিল, সমষ্টি, বা ভবিষ্যতের পরিবর্তন জড়িত যেকোনো কিছুর জন্য। প্রশ্নগুলি আরও বহনযোগ্য (যেমন SQL সার্ভারে) এবং নমনীয়৷ ৷
- গণনা সংরক্ষণ করা এড়িয়ে চলুন পারফরম্যান্সের চাহিদা না থাকলে (যেমন খুব বড় ডেটাসেট যেখানে উড়তে থাকা যোগফল ধীর হয়)। পরিবর্তে প্রশ্নে পুনরায় গণনা করুন।
- সাধারণকরণ: শুধুমাত্র কাঁচা ইনপুট সংরক্ষণ করুন. গতিশীলভাবে আউটপুট গণনা করুন।
- পরীক্ষা: পরিবর্তনের পরে, সর্বদা নমুনা ডেটা দিয়ে যাচাই করুন, বিশেষ করে সম্পর্ক যোগ করার পরে।
- পারফরম্যান্স: অনেক বেশি গণনা করা ক্ষেত্র বা বড় টেবিলে জটিল DSum() কলগুলি জিনিসগুলিকে ধীর করে দিতে পারে। সূচী বিদেশী কী।
- সীমাবদ্ধতা সংকলন:
- সারণীর গণনা করা এক্সপ্রেশনে সরাসরি অন্য টেবিল থেকে কোনো ক্ষেত্র নেই।
- সারণী গণনা করা ক্ষেত্রগুলিতে সীমাবদ্ধ ফাংশন (সম্পূর্ণ VBA অ্যাক্সেসের জন্য প্রশ্নগুলি ব্যবহার করুন)।
- ফলাফল শুধুমাত্র পঠনযোগ্য।
- স্কেলিং টিপ: খুব উন্নত প্রয়োজনের জন্য, SQL ভিউ বা SQL সার্ভারের মতো ব্যাকএন্ডে যুক্তি স্থানান্তর করার কথা বিবেচনা করুন, যেখানে গণনা করা কলামগুলি আরও শক্তি দেয়।
সাধারণ সমস্যা এবং সমস্যা সমাধান
- #ত্রুটি বা #নাম?: ফিল্ডের নামগুলি বন্ধনীতে আছে কিনা তা পরীক্ষা করুন [], ডেটার ধরন মেলে, এবং সম্পর্কগুলি সক্রিয়৷ ৷
- সার্কুলার রেফারেন্স: একটি গণনা করা ক্ষেত্রকে তার নিজস্ব অভিব্যক্তিতে উল্লেখ করবেন না বা লুপ তৈরি করবেন না।
- ডেটা প্রকার অমিল: ফলাফলের ধরন স্পষ্টভাবে সেট করুন (যেমন অর্থ ক্ষেত্রের জন্য মুদ্রা)।
- ক্রস-টেবিল ব্যর্থতা: যোগদানের সাথে একটি প্রশ্নে যুক্তিটিকে সরান বা DSum(). ব্যবহার করুন
- যদি লিঙ্ক করা টেবিল ব্যবহার করা হয় (যেমন SharePoint বা অন্য ডাটাবেসে), গণনা করা ক্ষেত্রগুলিতে সারি সীমা বা রিফ্রেশ সমস্যা থাকতে পারে।
উপসংহার
উপরের ধাপগুলি অনুসরণ করে, আপনি স্বয়ংক্রিয় ক্রস-লিঙ্কড গণনার জন্য অ্যাক্সেস টেবিলে গণনা করা ক্ষেত্র যোগ করতে পারেন। গণনা করা ক্ষেত্রগুলি মাইক্রোসফ্ট অ্যাক্সেসে সারি-স্তরের গণনাগুলি স্বয়ংক্রিয় করার জন্য দরকারী — তারা লাইনের মোট, ছাড়, নির্ধারিত তারিখ এবং প্রতি অর্ডার লাইনের লাভের মতো মানগুলির জন্য ভাল কাজ করে। উন্নত ক্রস-লিঙ্কড কম্পিউটেশনের জন্য, ক্যোয়ারী হল সঠিক টুল:এগুলি টেবিলের মধ্যে সম্পর্ক অনুসরণ করে এবং অর্ডারের মোট হিসাব, গ্রাহকের বিক্রির মোট, ইনভেনটরি ব্যালেন্স এবং লাভের সারাংশ নির্ণয় করে। অ্যাক্সেসে গণনাকৃত ক্ষেত্র এবং ক্রস-লিঙ্কড গণনা আয়ত্ত করা একটি স্ট্যাটিক ডেটা স্টোরকে একটি জীবন্ত, স্ব-রক্ষণাবেক্ষণ ব্যবস্থায় রূপান্তরিত করে৷
সমাধান সহ বিনামূল্যে উন্নত এক্সেল ব্যায়াম পান!