ভিবিএর মাধ্যমে বর্তমানে ডাটাবেস ব্যবহার করা ব্যক্তির ব্যবহারকারীর নাম কীভাবে পাবেন

এখন শেয়ার:

আপনার প্রতিষ্ঠানে কোনো নির্দিষ্ট রেকর্ড কে যোগ করেছেন তা জানতে চান? অথবা কে এটি শেষবার আপডেট করেছেন? এটি একটি বেশ সাধারণ প্রয়োজন, কিন্তু দুর্ভাগ্যবশত মাইক্রোসফট অ্যাক্সেসে এর জন্য কোনো বিল্ট-ইন কার্যকারিতা নেই। আপনার টেবিলে কেবল একটি “শেষ আপডেটকারী” ফিল্ড যোগ করাই (অনেক ক্ষেত্রে) অধিকাংশ প্রয়োজন মেটানোর জন্য যথেষ্ট হতে পারে, কিন্তু অ্যাক্সেস যদি আপনাকে বলতে না পারে, তাহলে আপনি কীভাবে জানবেন কে রেকর্ডটি আপডেট করেছে? এর জন্য আপনার শুধু সামান্য VBA কোড প্রয়োজন, যেমনটি এই নিবন্ধটি আপনাকে দেখাবে।

ব্যবহারকারীর নাম ক্যাপচার করার জন্য আপনার নিজস্ব "লগইন" ফর্ম তৈরি করার দরকার নেই

Ms অ্যাক্সেস ডেটাবেসআপনার ডাটাবেসের নিজস্ব লগইন ফর্ম বা প্রক্রিয়া না থাকলে আপনি বর্তমানে ডাটাবেসে কে ব্যবহার করছেন / লগইন করছেন তা জানার একমাত্র উপায় হ'ল উইন্ডোজ অপারেটিং সিস্টেম ফাইলগুলির একটি বিশেষত "এমপিআরডিএল" ফাইল। আপনি যদি আগে আপনার কোডটিতে বাহ্যিক dll গুলি ব্যবহার না করে থাকেন তবে এটি কিছুটা ভয়ঙ্কর মনে হতে পারে তবে নীচের কোডটিতে আপনি যেমন দেখতে পাবেন এটি আসলে বেশ সোজা।

সুতরাং - আসুন আমরা আমাদের কোডটি কী করতে চাই তা নির্ধারণ করি ...

"আমাকে বর্তমানে লগ ইন করা ব্যবহারকারীটির নাম দিন"

প্রথমত, কোড:

Declare Function GetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal Name As String, ByVal UserName As String, Length As Long) As Long

Public Function GetUserName() As String
    Dim returnStatus As Integer
    Dim Name, UserName As String
    'Allocate space for user name to be stored in
    UserName = Space(255)

    ' Call the aliased function in the mpr.dll file.
    returnStatus = GetUser(Name, UserName, 255)
    
    If returnStatus = 0 Then
        'Strip the username from the returned string
        UserName = Left(UserName, InStr(UserName, Chr(0)) - 1)
    Else
        ' An error occurred.
        GetUserName = "Error retrieving the user name."
        End
    End If

    GetUserName = UserName

End Function

কোড, ব্যাখ্যা

ব্যবহারকারী বর্তমানে লগ ইন

আপনি যে প্রথম জিনিসটি দেখতে পাবেন তা হ'ল আমরা mpr.dll ফাইলের মধ্যে থাকা একটি বাহ্যিক ফাংশনটির জন্য একটি রেফারেন্স তৈরি করছি। আমরা dll- এ থাকা এই পাবলিক ফাংশনের জন্য স্থানীয় নাম (গেট ইউজার) ঘোষণা করে এটি করি (উদাহরণস্বরূপ, WNetGetUserA)। - আমরা ফাংশন কলের জন্য কী কী পরামিতিগুলি প্রয়োজনীয় তা নির্ধারণ করি - এই ক্ষেত্রে "নাম", "ব্যবহারকারীর নাম", এবং "দৈর্ঘ্য" পরামিতি। এখানে কেবলমাত্র আমরা আগ্রহী যেটি হ'ল "ব্যবহারকারীর নাম" তবে বাকী অংশটি সরবরাহ করতে হবে কারণ ডিলের মধ্যে কীভাবে এই ফাংশনটি সেট আপ করা হয়।

এখন এটি হয়ে গেছে, আমরা আমাদের নিজস্ব ফাংশন তৈরি করি, যা থেকে আমরা এই বাহ্যিক ফাংশনে একটি কল করব। আমাদের ফাংশনের কোডটি বেশ ন্যূনতম তবে আসুন মূল উপাদানগুলির মাধ্যমে চলুন:

  1.  “UserName = Space(255)” – আপনি যদি ডিবাগারে কোডটি ধাপে ধাপে চালান, তাহলে দেখতে পাবেন যে যখন “GetUser()” ফাংশনটি কল করা হয়, তখন আমরা যে “UserName” ভেরিয়েবলটি পাস করি, সেটি আসলে ওভাররাইট হয়ে যায়। এটি ঘটার জন্য, ভেরিয়েবলটিতে ডেটা সংরক্ষণের জন্য পর্যাপ্ত মেমরি বরাদ্দ করা প্রয়োজন, তাই আমরা ভেরিয়েবলটিতে ২৫৫টি স্পেস ক্যারেক্টার বরাদ্দ করি, কারণ এটি বেশিরভাগ (যদি সব না হয়) ব্যবহারকারীর নাম ধারণ করার জন্য যথেষ্টরও বেশি হওয়া উচিত।
  2. আমরা ফাংশন কল থেকে "রিটার্নস্ট্যাটাস" ভেরিয়েবল থেকে রিটার্ন মানটি ক্যাপচার করি। এখানে একটি শূন্য (0) এর অর্থ কলটি সফল হয়েছিল, অন্য কোনও কিছুর অর্থ একটি ত্রুটি ঘটেছে।
  3.  অবশেষে, "ব্যবহারকারীর নাম" ভেরিয়েবলটি পরিশ্রুত হওয়া দরকার কারণ এটি নাল অক্ষরগুলি সহ প্রয়োজনীয়ভাবে প্যাড করবে তাই আমরা ক্র (0) সন্ধানের আগে চলকগুলিতে থাকা অক্ষরগুলি বের করি।

দেখুন - এখন যে খারাপ ছিল না এটি কি! এবং এখন, যদি আপনার মোকাবেলা করতে হয় তবে কমপক্ষে এমডিবি ডাটাবেস দুর্নীতি, আপনি জানতে পারবেন কে শেষ পর্যন্ত ডাটাবেসটি ব্যবহার করছিল যাতে আপনি কে দোষ দিতে পারেন! (আমি এখানে অবশ্যই রসিকতা করছি!)

লেখকের ভূমিকা:

মিচেল পন্ড একটি তথ্য পুনরুদ্ধার বিশেষজ্ঞ is DataNumen, ইনক। যা তথ্য পুনরুদ্ধারের প্রযুক্তিগুলির সহ বিশ্বের শীর্ষস্থানীয় মেরামত SQL Server সমস্যা এবং এক্সেল পুনরুদ্ধার সফ্টওয়্যার পণ্য। আরো তথ্যের জন্য, যান WWW.datanumen.com

এখন শেয়ার:

মন্তব্যসমূহ বন্ধ করা হয়.