প্রথমত আমার ওডিবিসি থেকে সমস্ত ডেটা নেওয়া দরকার (এটি ইতিমধ্যে কাজ করছে)।
তারপরে সবচেয়ে জটিল অংশটি আসে যা আমি এখনও নিশ্চিত না যে এটি কীভাবে করা যায়। ওডিবিসিতে ডাটা দুটি সারণী রয়েছে। আমি তাদের আমার বর্তমান কোডের সাথে মার্জ করছি এবং নির্দিষ্ট পরামিতিগুলি দিয়ে ফিল্টার করছি।
ডাটাবেসে সারণী 1:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
ডাটাবেসে সারণী 2:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
463 BMW E64 SE0 JR KE OT PG OL J8 9 1
মার্জ হওয়া ডেটা টেবিলটি এর মতো দেখতে:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
463 BMW E64 SE0 JR KE OT PG OL J8 9 1
123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
তবে মার্জ হওয়া আউটপুট ডেটা টেবিলটি দেখতে দেখতে (এটির সাথে আরও কাজ করার সম্ভাবনা রয়েছে):
NRO NRO1 NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
123 423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 463 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
সদৃশ সন্ধান করুন NAME
। তাদের মধ্যে কেবল একটি রেখে দিন, সারণি 1 NRO
থেকে টেবিল 2 থেকে একটি নম্বর নির্ধারণ করুন NRO1
। সারণী 1 নম্বর থাকা উচিত NRO
, টেবিল 2 নম্বর থাকা উচিত NRO1
।
ওডিবিসিতে সংযুক্ত হওয়ার পরে আমি টেবিল 1 থেকে ডেটা দিয়ে একটি টেবিল পূরণ করছি
DataTable dataTable = new DataTable("COMPANY");
using (OdbcConnection dbConnectionSE = new OdbcConnection(connectionStringSE))
{
dbConnectionSE.Open();
OdbcDataAdapter dadapterSE = new OdbcDataAdapter();
dadapterSE.SelectCommand = new OdbcCommand(queryStringSE, dbConnectionSE);
dadapterSE.Fill(dataTable);
}
তারপরে আমি অন্য সারণী 2 থেকে ডেটা পাচ্ছি এবং এগুলি সংযুক্ত করে:
using (OdbcConnection dbConnectionFI = new OdbcConnection(connectionStringFI))
{
dbConnectionFI.Open();
OdbcDataAdapter dadapterFI = new OdbcDataAdapter();
dadapterFI.SelectCommand = new OdbcCommand(queryStringFI, dbConnectionFI);
var newTable = new DataTable("COMPANY");
dadapterFI.Fill(newTable);
dataTable.Merge(newTable);
}
এর পরে আমি ফিল্টারিং করছি (আমার কেবল সারি 4 এবং 1 দিয়ে শুরু হওয়া দরকার NRO
, অন্যান্য শুরুর সংখ্যার সাথে সারিও রয়েছে):
DataTable results = dataTable.Select("ACTIVE = '1' AND (NRO Like '1%' OR NRO Like '4%')").CopyToDataTable();
তারপরে আমি এর জন্য আরও একটি কলাম যুক্ত করছি NRO1
(এটি শূন্যগুলিও যুক্ত করছে (0) আমার কলামে এগুলির দরকার নেই NRO1
):
results.Columns.Add("NRO1", typeof(int)).SetOrdinal(1);
foreach (DataRow row in results.Rows)
{
//need to set value to NewColumn column
row["NRO1"] = 0; // or set it to some other value
}
আমি এই কোড সহ নকল পেতে পারি
var duplicates = results.AsEnumerable().GroupBy(r => r[2]).Where(gr => gr.Count() > 1);
তবে কীভাবে বাকি কাজ সম্পাদন করবেন? এটি একটি নতুন টেবিল তৈরি করে একটি লুপ দ্বারা সঞ্চালিত করা উচিত? আমি কীভাবে এতে যোগদান এবং ডুপ্লিকেট অপসারণ করতে dataTable
পারি?
NAME
। দু'জনের বেশি হলে - ত্রুটি (ত্রুটি হ্যান্ডলার)। ২. আমার উদাহরণে একটি ত্রুটি ছিল, আমি এখনই এটি সংশোধন করেছি। এটি উল্লেখ করার জন্য আপনাকে ধন্যবাদ, এটি গুরুত্বপূর্ণ।
dataTable
কিছু নামের জন্য আরো দুই অনুরূপ? উদাহরণস্বরূপ, বিএমডাব্লুয়ের জন্য তিনটি নকলের উপস্থিতি কি সম্ভব? ২. কোনটি দ্বৈত রেকর্ড রাখতে হবে এবং কোনটি মুছতে হবে তা আমরা কীভাবে সংজ্ঞায়িত করতে পারি? উদাহরণস্বরূপ, আমরা ন্যূনতম সহ রেকর্ড রাখতে পারিNRO
এবং অন্যান্য রেকর্ড মুছতে পারি।