در کدهای شما، با فرض اینکه شئ connect را قبلا ایجاد کردهاید...
خوب، اشکال کار اینجاست که شما در کد خودتون از متد Add بدون پارامتر استفاده کردهاید. باید به آن یک پارامتر ارسال کنید تا با توجه به آن پارامتر، یک Row یا رکورد در dt ایجاد گردد.
پارامتر ارسالی میتواند از نوع Object یا ... باشد، میتوانید یک آرایهای از Object به طول تعداد فیلدهای جدولتون، ایجاد کنید و سپس آنرا مقدار دهی کرده و با متد Add در شئ dt قرار دهید. در ضمن، باید قبل از اینکار، تعداد فیلدهای جدول را برای شئ dt مشخص کرده باشید که مثلا جدول شما چند فیلد دارد؟ برای این منظور (برای اینکه بصورت دستی فیلدها رو اضافه نکنی و فیلدها بطور اتوماتیک ایجاد بشه) میشه از متد Fill در شئ da استفاده کرد. پس شما در کدهای خودتون در قبل از خط پنجم (خط پنجمی که در کدهای خودتان در پست قبلی نوشته اید)، باید تعداد و نوع فیلدهای جدولتون رو برای شئ dt مشخص کنید که میتونید از کد ;(da.Fill(dt استفاده کنید که به صورت اتوماتیک متناظر با فیلدهای جدول توی database، فیلدهای جدول شئ dt را ایجاد میکند. (در ارتباط با متد Fill باید بگویم که این متد برای پر کردن dt از دستور sql ائی استفاده میکند که در کدهای شما در رشته Command ذخیره شده است و این رشته باید مثلا دستور SELECT باشد). بعدش از دستور ;(dt.Rows.Add(obj استفاده کنید تا یک رکورد به جدولتون توی dt اضافه کنید. البته obj هنوز توسط ما تعریف نشده است و آن پارامتری است که باید به متد add بفرستیم. به این منظور یک شئ obj از کلاس Object با طولی به تعداد فیلدهای توی جدول اصلیمون، ایجاد میکنیم.
مثلا بصورت ;[Object[] obj = new Object[3 آنرا تعریف میکنیم و مقادیر تک تک اعضای آرایه obj را با توجه به رکوردی که میخواهیم ایجاد کنیم، مقداردهی میکنیم. (البته لازم نیست که حتما مقداردهی شود ولی بهتر است که مقداردهی شود تا با جدول اصلی مطابقت داشته باشد). پس از این مراحل، دیگر با متد update میتوان رکورد مورد نظر را به بانک اصلی اضافه کرد با این توجه که این متد از خاصیت InsertCommand استفاده میکند. در ضمن در خاصیت InsertCommand از شئ da نباید دستورات SELECT نوشته شوند (تا اونجائی که من اطلاع دارم!) و فقط باید دستور INSERT توی این خاصیت وجود داشته باشه.
در کد شما، InsertCommand به درستی مقدار دهی نشده است، و فاقد ConnectionString است. و فکر کنم دستور INSERT نیز اشتباه باشد. درکل کد شما باید چیزی شبیه به زیر باشد:
private DataTable setdata(string command)
{
OleDbDataAdapter da = new OleDbDataAdapter(command, connect);
DataTable dt = new DataTable();
object[] obj = new object[2];
obj[0] = int.Parse(textBox1.Text);
obj[1] = "bojnord";
da.Fill(dt);
dt.Rows.Add(obj);
da.InsertCommand = new OleDbCommand("insert into Recycle_bin (Code, City) VALUES(" + textBox1.Text + ", 'bojnord')", connect);
da.Update(dt);
return dt;
}
درکدهائی که بالا نوشتم، فرض براین گرفته ام که جدول شما دو تا فیلد Code و City دارد که اولی یک کد عددی است و دومی نام شهر است.
در خط سوم، با فرض اینکه پارامترهای connect و command به درستی نوشته و به متد سازنده آن، ارسال شوند، یک شئ از DataAdapter ایجاد شده است.
obj[0]
برای فیلد Code و obj[1]
برای فیلد City بخاطر اضافه کردن رکورد به dt مورد استفاده قرار گرفتهاند. البته قبل از اضافه کردن رکورد به dt باید فیلدهای جدول آن مشخص شوند که ما اینکار را به عهده متد Fill گذاشتهایم که فیلدهای متناظر با جدول اصلی را در dt بوجود میآید و جدول موجود در dt را پر میکند (با توجه به اینکه برای پر کردن جدول از دستور sql ذخیره شده در متغیر command استفاده میکند). حال که تعداد و نوع فیلدهای dt بوجود آمد، میتوان با متد Add و شئ obj یک رکورد به آن افزود.
خاصیت InsertCommand که مشخص شد، با استفاده از Update، جدول بروز رسانی میشود (به طرزی که متوجه شدید، متد Update میفهمد که ما یک رکورد به dt اضافه کردهایم پس متد Update هم سعی میکند با استفاده از خاصیت InsertCommand یک رکورد به بانک اصلی اضافه نماید.)