আমরা এটি আগেও বলেছি, তবে এটি পুনরাবৃত্তিযোগ্য - সংযুক্ত সারণীগুলি বেশ কয়েকটি কারণে আপনার ডাটাবেসে সত্যই কার্যকর হতে পারে। তবে লিঙ্কযুক্ত টেবিলগুলির একটি বড় অসুবিধা হল পারফরম্যান্স - তাদের বিরুদ্ধে অনুসন্ধান চালানো, বিশেষত যদি তারা মাইক্রোসফ্ট অ্যাক্সেস টেবিল না হয় (যেমন যদি তারা এক্সেল, সিএসভি, বা DBF নথি পত্র). এগুলি নিয়ে কাজ করার জন্য তারা বেদনাদায়কভাবে ধীর হতে পারে। আপনি যে কয়েকটি উপায়ে কাজ করতে পারেন তার কয়েকটি উপায় রয়েছে - আমরা এখানে একটি উপায় নিয়ে কাজ করব এবং এটি কোনও লিঙ্কযুক্ত টেবিলকে স্থানীয় সারণিতে রূপান্তর করতে হবে। অবশ্যই - আপনি টেবিলগুলি অনুলিপি / আটকানোর মাধ্যমে ম্যানুয়ালি এটি করতে পারতেন, তবে আপনার যদি হ্যান্ডেল করার মতো অনেক কিছু থাকে তবে কোডে এটি করা অনেক বেশি সহজ, তাই আসুন দেখুন কীভাবে…
কেন আপনার প্রয়োজনের রূপরেখা গুরুত্বপূর্ণ
প্রথমত, আসুন কোডটি আমরা কী করতে চাই তা রূপরেখা করি - এটি করার ফলে কোডটি প্রথম স্থানে তৈরি করা এত সহজ হয়ে যায় তাই আমি প্রতিবারই আপনি কিছু ভিবিএ কোড তৈরি করার কথা ভাবছি এমন করার পরামর্শ দিয়েছি you , এটি আপনার লক্ষ্য স্পষ্ট করতে সহায়তা করে:
"একটি লিঙ্কযুক্ত টেবিলের নাম দেওয়া, কর্মক্ষমতা উন্নত করতে স্থানীয় টেবিল হিসাবে সেই টেবিলটি ডাটাবেসে আমদানি করুন - allyচ্ছিকভাবে একই সময়ে ডাটাবেস থেকে লিঙ্কটি মুছুন"
সাধারণত, আপনি যখন কোনও লিঙ্কযুক্ত টেবিলটিকে স্থানীয় সারণীতে রূপান্তর করেন, আপনি লিঙ্কটি মুছতে চাইবেন, তবে নীচের কোড নমুনায় আমরা আপনাকে মূল লিঙ্কযুক্ত ফাইলটি রাখার বিকল্পটি দিয়েছি তবে এটি করে আপনার নতুন আমদানি করা টেবিল আপনার জিজ্ঞাসাগুলি ইত্যাদিতে আপনার লিঙ্কযুক্ত টেবিলটিকে প্রতিস্থাপন করবে না, যাতে আপনি কোনও স্থানীয় টেবিল আপনাকে দেবে এমন পারফরম্যান্স লাভটি দেখতে পাবেন না। আপনি যখন আরামদায়ক হন যে কোডটি আপনার প্রয়োজন অনুসারে কাজ করছে, আমরা সর্বদা আসল মুছতে সুপারিশ করব - সর্বোপরি, আপনি আসলে আসল টেবিলটি মুছছেন না, কেবল এটির লিঙ্ক।
সাবধানতা একটি শব্দ
আমরা কোডে পৌঁছানোর আগে - কেবলমাত্র সতর্কতার এক দ্রুত শব্দ, আপনি যদি একটি লিঙ্কে লিখিত হন তবে আপনি অনেক কিছু করতে পারবেন না ক্ষতিগ্রস্থ অ্যাক্সেস ডাটাবেস - যদি অ্যাক্সেস ফাইলটি পড়তে না পারে তবে এটি এখান থেকে আমদানি করতে সক্ষম হবেন এমন সম্ভাবনা খুব বেশি।
সুতরাং - কোড থেকে…
Sub MakeTableLocal(tableName As String, optional deleteOriginal As Boolean = True)
Dim DbPath As Variant, TblName As Variant
'get path of linked table
DbPath = DLookup("Database", "MSysObjects", "Name='" & tableName & "' And Type=6")
'Get the real name of the linked table (in case it has been given an alias in the link)
TblName = DLookup("ForeignName", "MSysObjects", "Name='" & tableName & "' And Type=6")
If IsNull(DbPath) Then
'Either a local table, or the wrong table name has been supplied, exit the sub
Exit Sub
End If
'delete linked table
If deleteOriginal Then
DoCmd.DeleteObject acTable, tableName
Else
'If we're not deleting the existing table we'll have to rename the imported table to avoid
'overwriting it etc
tableName = tableName & " - local"
End If
'import the table as a local, unlinked table
DoCmd.TransferDatabase acImport, "Microsoft Access", DbPath, acTable, TblName, tableName
End Sub
কোডটি কী করছে

এখন আমাদের কাছে এই বিবরণ রয়েছে, যতক্ষণ না সেগুলি বৈধ হয় (যেমন আপনি রুটিনে কোনও ভুল সারণীর নাম সরবরাহ করেন নি), তবে আমরা যেতে প্রস্তুত হয়েছি সুতরাং এটি কেবল একটি বিষয়) লিঙ্কটি মুছে ফেলা (যদি মুছে ফেলা অরিজিনাল সত্যতে সেট করা আছে), এবং সারণীটি আমদানি করে।
এটি করার ফলে প্রায়শই আপনি পারফরম্যান্সে বেশ নাটকীয় উন্নতি করতে পারেন তাই আপনি যদি লিঙ্কযুক্ত টেবিলগুলি ব্যবহার করেন, তবে আমি আপনাকে সুপারিশ করব যে এই টেবিলগুলিকে স্থানীয় সংস্করণে নিয়ে যাওয়া কী লাভ আপনাকে পরীক্ষা করবে - আপনি অবাক হতে পারেন!
লেখকের ভূমিকা:
মিচেল পন্ড একটি তথ্য পুনরুদ্ধার বিশেষজ্ঞ is DataNumen, ইনক। যা তথ্য পুনরুদ্ধারের প্রযুক্তিগুলির সহ বিশ্বের শীর্ষস্থানীয় মেরামত SQL Server ফাইল এবং এক্সেল পুনরুদ্ধার সফ্টওয়্যার পণ্য। আরো তথ্যের জন্য, যান WWW.datanumen.com