PDA

View Full Version : راهکار برای گزارشگیری از چند جدول یا Datatable



soleimani.em
چهارشنبه 04 تیر 1393, 13:43 عصر
سلام
تو قسمت گزارش گیری پروژم نیاز هست که کاربر اطلاعات چندین جدول متفاوت رو انتخاب کنه (مثلاً نام بانک از جدول بانک، نام حساب از جدول حساب نام کالا از جدول کالا و .... که حدوداً به 13 جدول میرسه) حالا من باید این اطلاعات انتخاب شده رو با جدول هایی از بانک اطلاعاتیم مانند جدول فروش، خرید، هزینه و..... JOIN کنم. و گزارشی ازش بسازم.

مشکل من اینجا اینه که آیا بجای ساختن 13 جدول در بانک اطلاعاتی که هر جدول اطلاعات انتخاب شده رو تو خودش ذخیره می کنه راه دیگه ای وجود دارده؟ آیا با Data table که در محیط ویژوال درست میشه میشه اینها رو JOIN کرد؟
ممنون میشم اگه راهنماییم کنید.

nazanin366
چهارشنبه 04 تیر 1393, 14:07 عصر
تا اونجایی که امکانش هست از join استفاده کنید ولی بعضی موقع ها join کردن جواب نمیده واس همین کاری که کردم این بود که همه دیتاتیبل ها رو تو یه دیتاتیبل جدید ریختم

soleimani.em
چهارشنبه 04 تیر 1393, 14:33 عصر
تا اونجایی که امکانش هست از join استفاده کنید ولی بعضی موقع ها join کردن جواب نمیده واس همین کاری که کردم این بود که همه دیتاتیبل ها رو تو یه دیتاتیبل جدید ریختم

ممنون از راهنمایی شما، پروژه ای که من روش کار می کنم سه لایه هست. چطوری میشه یک جدول از بانک SQL رو با یک شیء دیتا تیبل JOIN کرد؟

nazanin366
چهارشنبه 04 تیر 1393, 16:57 عصر
من اومدم اطلاعات چند جدول رو تو دیتاتیبل مربوط به خودشون ریختم.اومدم یه دیتاتیبل جدید ساختم بعد با یه جلقه تکرار مقادیر هر کدوم رو تو دیتاتیبل جدید ریختم فقط تعداد سطرهای همه دیتاتیبل باید برابر باشند

For(i=0;i<dt1.rows.count;i++)
{
String item1=dt.rows[i][“item1”].ToString();
String item2=dt.rows[i][“item2”].ToString();

dt_temp.rows.add(item1,item2);
}


شرمنده بد فرم در اومد.ادیتور اینجا قاطی کرده بود.مجبور شدم تو word بنویسم

khokhan
چهارشنبه 04 تیر 1393, 20:49 عصر
سلام
تو قسمت گزارش گیری پروژم نیاز هست که کاربر اطلاعات چندین جدول متفاوت رو انتخاب کنه (مثلاً نام بانک از جدول بانک، نام حساب از جدول حساب نام کالا از جدول کالا و .... که حدوداً به 13 جدول میرسه) حالا من باید این اطلاعات انتخاب شده رو با جدول هایی از بانک اطلاعاتیم مانند جدول فروش، خرید، هزینه و..... JOIN کنم. و گزارشی ازش بسازم.

مشکل من اینجا اینه که آیا بجای ساختن 13 جدول در بانک اطلاعاتی که هر جدول اطلاعات انتخاب شده رو تو خودش ذخیره می کنه راه دیگه ای وجود دارده؟ آیا با Data table که در محیط ویژوال درست میشه میشه اینها رو JOIN کرد؟
ممنون میشم اگه راهنماییم کنید.
به تعداد لازم کوئری می زنی و نتیجه همه شون رو می ریزی داخل یه دیتاست
و پاس می دی به گزارش و داخل گزارش به شیوه کورس تب می تونی با کلیدهای خارجی که توی جداولت داری همه رو مدیریت کنی


SqlConnection Con = new SqlConnection();
DataSet ds = new DataSet();
string ALLDT = @"
SELECT * FROM Customer
SELECT * FROM Order
SELECT * FROM OrderLine";
SqlDataAdapter da = new SqlDataAdapter(ALLDT, Con);
da.TableMappings.Add("Table", "Customer");
da.TableMappings.Add("Table1", "Order");
da.TableMappings.Add("Table2", "OrderLine");

da.Fill(ds);

soleimani.em
پنج شنبه 05 تیر 1393, 16:29 عصر
به تعداد لازم کوئری می زنی و نتیجه همه شون رو می ریزی داخل یه دیتاست
و پاس می دی به گزارش و داخل گزارش به شیوه کورس تب می تونی با کلیدهای خارجی که توی جداولت داری همه رو مدیریت کنی


SqlConnection Con = new SqlConnection();
DataSet ds = new DataSet();
string ALLDT = @"
SELECT * FROM Customer
SELECT * FROM Order
SELECT * FROM OrderLine";
SqlDataAdapter da = new SqlDataAdapter(ALLDT, Con);
da.TableMappings.Add("Table", "Customer");
da.TableMappings.Add("Table1", "Order");
da.TableMappings.Add("Table2", "OrderLine");

da.Fill(ds);
سلام
من کدهامو به این شکل نوشتم

public DataTable Report_WarehouseStore(int Year, int DSNumber)
{

ds = ExecuteDataset(System.Data.CommandType.Text, "SELECT WarehouseStore.ProductID, WarehouseStore.ProductCode, WarehouseStore.ProductName, UnitPart.UnitPart, Warehouse.WarehouseName, WarehouseStore.ProductValue FROM WarehouseStore INNER JOIN UnitPart INNER JOIN UnitPartID ON WarehouseStore.UnitPartID = UnitPart.UnitPartID ON Warehouse.WarehouseiD = WarehouseStore.WarehouseiD",null);


da.TableMappings.Add("Table", "WarehouseStore");
da.TableMappings.Add("Table1", "dtObject");
da.TableMappings.Add("Table2", "dtWarehouse");
return ds.Tables[0];

ولی توش موندم چطوری من جدول ها رو به هم ربط بدم درست تو اصل کار گیرم کویری بالا رو از بانک میگیرم ولی اون فیلدهایی که کاربر انتخابشون می کنه تو Datatable هستن حالا من مشکل دسترسی به اینارو دارم. اگه لطف کنید با این کدها اون چیزی که مد نظرتون هست رو برام بنویسین فوق العاده میشه. تشکر




}

soleimani.em
پنج شنبه 05 تیر 1393, 16:31 عصر
من اومدم اطلاعات چند جدول رو تو دیتاتیبل مربوط به خودشون ریختم.اومدم یه دیتاتیبل جدید ساختم بعد با یه جلقه تکرار مقادیر هر کدوم رو تو دیتاتیبل جدید ریختم فقط تعداد سطرهای همه دیتاتیبل باید برابر باشند

For(i=0;i<dt1.rows.count;i++)
{
String item1=dt.rows[i][“item1”].ToString();
String item2=dt.rows[i][“item2”].ToString();

dt_temp.rows.add(item1,item2);
}


شرمنده بد فرم در اومد.ادیتور اینجا قاطی کرده بود.مجبور شدم تو word بنویسم

خاهش می کنم، ممنون از لطف شما. ولی مشکلم پیچیده تر از ایناست. کدها رو گذاشتم.

soleimani.em
شنبه 07 تیر 1393, 08:33 صبح
کدهای نهایی من این شدن


DataSet ds = new DataSet("Report");
DataTable dtObject = new DataTable("dtObject");
DataTable dtWarehouse = new DataTable("dtWarehouse");




public DataSet ExecuteDataset(CommandType commandType, string commandText, SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = new _Connections().Cnn;
cmd.CommandType = commandType;
cmd.CommandText = commandText;
if (commandParameters != null)
cmd.Parameters.AddRange(commandParameters);

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}


public void Crate_DataTable()
{
DataColumn[] columns = new DataColumn[0];
dtObject.Columns.Add("identity", typeof(int));
dtObject.Columns.Add("iD", typeof(int));
dtObject.Columns.Add("Title", typeof(string));
dtObject.PrimaryKey = columns;

ds.Tables.Add(dtObject);
DataColumn[] columns = new DataColumn[0];
dtWarehouse.Columns.Add("identity", typeof(int));
dtWarehouse.Columns.Add("iD", typeof(int));
dtWarehouse.Columns.Add("Title", typeof(string));
dtWarehouse.PrimaryKey = columns;
ds.Tables.Add(dtWarehouse);
}



public void AddNew_Value(int identity,int iD, string Title)
{
dtObject.Rows.Add(new object[] { identity,iD, Title });
dtWarehouse.Rows.Add(new object[] { identity, iD, Title });
}


public DataTable Report_WarehouseStore()
{
DataRelation drel = new DataRelation("EquiJoin", dtObject.Columns["iD"], dtWarehouse.Columns["iD"]);
ds.Relations.Add(drel);
ds = ExecuteDataset(System.Data.CommandType.Text,"SELECT WarehouseStore.ProductID, WarehouseStore.ProductCode, WarehouseStore.ProductName, UnitPart.UnitPart, Warehouse.WarehouseName, WarehouseStore.ProductValue FROM WarehouseStore INNER JOIN UnitPart ON WarehouseStore.UnitPartID = UnitPart.UnitPartid INNER JOIN Warehouse ON Warehouse.WarehouseiD = WarehouseStore.WarehouseiD INNER JOIN dtObject ON dtObject.iD = WarehouseStore.ProductCode INNER JOIN dtWarehouse ON dtWarehouse.iD = WarehouseStore.WarehouseiD", null);
return ds.Tables[0];

}


ارورش اینه "object reference not set to an instance of an object"
بنظر میاد دیتا تیبل ها توی دیتا ست با هم Join نمیشن مشکل از dtObject و dtWarehouse باشه

بنظر شما مشکل از چیه؟

aslan
شنبه 07 تیر 1393, 10:40 صبح
سلام
تو قسمت گزارش گیری پروژم نیاز هست که کاربر اطلاعات چندین جدول متفاوت رو انتخاب کنه (مثلاً نام بانک از جدول بانک، نام حساب از جدول حساب نام کالا از جدول کالا و .... که حدوداً به 13 جدول میرسه) حالا من باید این اطلاعات انتخاب شده رو با جدول هایی از بانک اطلاعاتیم مانند جدول فروش، خرید، هزینه و..... JOIN کنم. و گزارشی ازش بسازم.

مشکل من اینجا اینه که آیا بجای ساختن 13 جدول در بانک اطلاعاتی که هر جدول اطلاعات انتخاب شده رو تو خودش ذخیره می کنه راه دیگه ای وجود دارده؟ آیا با Data table که در محیط ویژوال درست میشه میشه اینها رو JOIN کرد؟
ممنون میشم اگه راهنماییم کنید.

سلام
1 - شما میتونید اطلاعات مورد نیاز برای گزارشتون را از چند جدول سلکت کنید و در داخل یک دیتاتیبل بریزید به فایل گزارشتون ارسال کنید .... بجای اینکه دیتاتیبل حاوی اطلاعات یک جدول باشه میتونه حاوی اطلاعات جوین شده چندین جدول باشه و ......................
2 - اطلاعات هر جدول را جداگانه داخل دیتاتیبل بریزید ( و بعد آنها را داخل یک دیتاست و .... ) و دیتا ست را به فایل گزارش ارسال کنید ( ارتباطات دیتاتیبل ها را با ریلیشن در سمت گزارش برقرار کنید ........ )
3 - اطلاعات هر جدول را جداگانه داخل دیتاتیبل بریزید و دیتا تیبل ها را به فایل گزارش ارسال کنید ( ارتباطات دیتاتیبل ها را با ریلیشن در سمت گزارش برقرار کنید ........ )
.............
بنظرم روش اول سریعترین روش برای شما باشد .
موفق باشید

soleimani.em
شنبه 07 تیر 1393, 11:08 صبح
سلام
1 - شما میتونید اطلاعات مورد نیاز برای گزارشتون را از چند جدول سلکت کنید و در داخل یک دیتاتیبل بریزید به فایل گزارشتون ارسال کنید .... بجای اینکه دیتاتیبل حاوی اطلاعات یک جدول باشه میتونه حاوی اطلاعات جوین شده چندین جدول باشه و ......................
2 - اطلاعات هر جدول را جداگانه داخل دیتاتیبل بریزید ( و بعد آنها را داخل یک دیتاست و .... ) و دیتا ست را به فایل گزارش ارسال کنید ( ارتباطات دیتاتیبل ها را با ریلیشن در سمت گزارش برقرار کنید ........ )
3 - اطلاعات هر جدول را جداگانه داخل دیتاتیبل بریزید و دیتا تیبل ها را به فایل گزارش ارسال کنید ( ارتباطات دیتاتیبل ها را با ریلیشن در سمت گزارش برقرار کنید ........ )
.............
بنظرم روش اول سریعترین روش برای شما باشد .
موفق باشید

ASLAN جان به کدی که برای KHOKHAN گذاشتم توجیه کنید

من اول کلاس dataset , datatable ها رو تعریف کردم
بعد اومدم کارهای مربوط به کانکشن و اجرای کوئری رو انجام دادم
بعد اومدم دیتا تیبل ها رو ایجاد کردم به وارد دیتاست کردم
بعد اومدم دیتا تیبل ها رو مقدار دهی کردم
بعد کوئری مربوط به بانک اطلاعاتی که شامل جدول های موجود بانک هست رو نوشتم که سه جدول WarehoseStore و Warehouse و UnitPart هست که داخل همون کوئری دیتا تیبل ها رو با نام های dtObject و dtWarehouse رو جوین کردم.

الان اومدم با این کد


DataRelation drel = new DataRelation("EquiJoin", dtObject.Columns["iD"], dtWarehouse.Columns["iD"]);
ds.Relations.Add(drel);

ریلیشن رو بین Datatable های برقرار کردم
مشکل اینجاست داخل کوئری که نوشتم دیتا تیبل هارو تشخیص نمیده. من مشکلم اینجاست چطوری اینارو تشخیص نمیده چون من Datatable هارو به دیتاست با این کد معرفی کردم

ds.Tables.Add(dtObject);
ds.Tables.Add(dtWarehouse);


حالا اشکال از کجاست؟

khokhan
شنبه 07 تیر 1393, 13:11 عصر
ASLAN جان به کدی که برای KHOKHAN گذاشتم توجیه کنید

من اول کلاس dataset , datatable ها رو تعریف کردم
بعد اومدم کارهای مربوط به کانکشن و اجرای کوئری رو انجام دادم
بعد اومدم دیتا تیبل ها رو ایجاد کردم به وارد دیتاست کردم
بعد اومدم دیتا تیبل ها رو مقدار دهی کردم
بعد کوئری مربوط به بانک اطلاعاتی که شامل جدول های موجود بانک هست رو نوشتم که سه جدول WarehoseStore و Warehouse و UnitPart هست که داخل همون کوئری دیتا تیبل ها رو با نام های dtObject و dtWarehouse رو جوین کردم.

الان اومدم با این کد


DataRelation drel = new DataRelation("EquiJoin", dtObject.Columns["iD"], dtWarehouse.Columns["iD"]);
ds.Relations.Add(drel);

ریلیشن رو بین Datatable های برقرار کردم
مشکل اینجاست داخل کوئری که نوشتم دیتا تیبل هارو تشخیص نمیده. من مشکلم اینجاست چطوری اینارو تشخیص نمیده چون من Datatable هارو به دیتاست با این کد معرفی کردم

ds.Tables.Add(dtObject);
ds.Tables.Add(dtWarehouse);


حالا اشکال از کجاست؟
اگه می خوای از شر کدنویسی درد سر ساز خلاص بشی بهتره بعد از اینکه دیتاست رو از دیتا تیبل ها پر کردی ، با استفاده از "linq" ارتباط بین دیتاتیبلها رو برقرار کنی :لبخند:
مطمئن باش به یه نتیجه جالب دست پیدا می کنی :چشمک: شک نکن

اینطوری
یه دیتاست حاوی سه تا جدول وسه عدد دیتا تیبل البته من کار فراخوانی رو داخل کلاس انجام دادم و توی فرم دیتاست ایجاد شده در کلاس رو فراخوانی کردم :


DataSet ds = hlp._return(@"
SELECT * FROM Costemr
SELECT * FROM Factor
SELECT * FROM Kala");

بعد اومدم و همانطور که گفتم از طریق کوئری linq بین دیتاتیبل های داخل دیتاست ارتباط برقرار کردم :


var tablesJoinend = from t1 in ds.Tables[0].Rows.Cast<DataRow>()
join t2 in ds.Tables[1].Rows.Cast<DataRow>() on t1["c_id"] equals t2["c_id"]
select new
{
Id= t1["c_id"],
c_name=t1["c_name"],
c_adress=t1["c_adress"],
f_quantity = t2["quantity"]
};
البته در اینجا جوین بین دوتا تیبل هست ، اما محدودیتی نداره و هرچندتا باشه مشکلی نداره
و بعد نتیجه :

dataGridView1.DataSource = tablesJoinend.ToList();

soleimani.em
شنبه 07 تیر 1393, 13:17 عصر
سلام
من با Linq کار نکردم راهکارت برای شرایط فعلی چیه؟

khokhan
شنبه 07 تیر 1393, 13:27 عصر
سلام
من با Linq کار نکردم راهکارت برای شرایط فعلی چیه؟
نمی خواد با linq کار کنی همون یه تیکه کوئری در کل پروژه هست:لبخند:
واما راهکار همانطور که قبلا هم به شما گفتم یه دیتاست حاوی هر چند تا دیتاتیبل رو به گزارش ارسال کنین .... و همونجا همه چیز برای ایجاد ارتباط و گروهبندی و مستر دیتل و غیره هست .....

soleimani.em
شنبه 07 تیر 1393, 14:03 عصر
نمی خواد با linq کار کنی همون یه تیکه کوئری در کل پروژه هست:لبخند:
واما راهکار همانطور که قبلا هم به شما گفتم یه دیتاست حاوی هر چند تا دیتاتیبل رو به گزارش ارسال کنین .... و همونجا همه چیز برای ایجاد ارتباط و گروهبندی و مستر دیتل و غیره هست .....

من کدهامو بالا نوشتم مشکل اصلی همین Join شدن هست شما اشکالی در کدها میبینید؟

soleimani.em
شنبه 07 تیر 1393, 14:04 عصر
اگه بخام از کدهای Linq استفاده کنم نیاز هست کلیه دیتا تیبل ها و دیتا ست ها رو از روش Ling دوباره ایجاد کنم؟

khokhan
شنبه 07 تیر 1393, 14:44 عصر
اگه بخام از کدهای Linq استفاده کنم نیاز هست کلیه دیتا تیبل ها و دیتا ست ها رو از روش Ling دوباره ایجاد کنم؟

نه نیازی نیست
همون یه دونه کوئری :لبخند: ولا هیچ ، ...... کدهای منو ، می بینی چه!!!!!!

soleimani.em
شنبه 07 تیر 1393, 15:02 عصر
نه نیازی نیست
همون یه دونه کوئری :لبخند: ولا هیچ ، ...... کدهای منو ، می بینی چه!!!!!!

خب حالا امتحان کنم ببینم چطوریه!! این hlp چی هست؟

soleimani.em
شنبه 07 تیر 1393, 15:05 عصر
یه خورده گیج شدم من لطف می کنی این کوئری رو در قالب ling پیاده کنی
دو تا دیتا ست به اسم dtObject و dtWarehous
بقیه هم



ds = ExecuteDataset(System.Data.CommandType.Text, "SELECT WarehouseStore.ProductID, WarehouseStore.ProductCode, WarehouseStore.ProductName, UnitPart.UnitPart, Warehouse.WarehouseName, WarehouseStore.ProductValue FROM WarehouseStore INNER JOIN UnitPart ON WarehouseStore.UnitPartID = UnitPart.UnitPartid INNER JOIN Warehouse ON Warehouse.WarehouseiD = WarehouseStore.WarehouseiD INNER JOIN dtObject ON dtObject.iD = WarehouseStore.ProductCode INNER JOIN dtWarehouse ON dtWarehouse.iD = WarehouseStore.WarehouseiD", null);

khokhan
شنبه 07 تیر 1393, 17:41 عصر
یه خورده گیج شدم :گیج:من لطف می کنی این کوئری رو در قالب ling پیاده کنی
دو تا دیتا ست به اسم dtObject و dtWarehous
بقیه هم



ds = ExecuteDataset(System.Data.CommandType.Text, "SELECT WarehouseStore.ProductID, WarehouseStore.ProductCode, WarehouseStore.ProductName, UnitPart.UnitPart, Warehouse.WarehouseName, WarehouseStore.ProductValue FROM WarehouseStore INNER JOIN UnitPart ON WarehouseStore.UnitPartID = UnitPart.UnitPartid INNER JOIN Warehouse ON Warehouse.WarehouseiD = WarehouseStore.WarehouseiD INNER JOIN dtObject ON dtObject.iD = WarehouseStore.ProductCode INNER JOIN dtWarehouse ON dtWarehouse.iD = WarehouseStore.WarehouseiD", null);

.......
.................................
.............................................


DataSet ds = hlp._return(@"
SELECT * FROM WarehouseStore
SELECT * FROM Warehouse
SELECT * FROM UnitPart");

var tablesJoinend = from t1 in ds.Tables[0].Rows.Cast<DataRow>()
join t2 in ds.Tables[1].Rows.Cast<DataRow>() on t1["WarehouseiD"] equals t2["WarehouseiD"]
join t3 in ds.Tables[2].Rows.Cast<DataRow>() on t1["UnitPartID"] equals t3["UnitPartID"]
select new
{
ProductName = t1["ProductName"],
ProductValue = t1["ProductValue"],
ProductCode = t1["ProductCode"],
WarehouseName = t2["WarehouseName"],
UnitPart = t3["UnitPart"]

};

soleimani.em
یک شنبه 08 تیر 1393, 11:03 صبح
سلام
ممنون از بابت زحمتی که کشیدی، ولی مشکل من حل نشد همون ارور رو میده میگه dtObject نمیشناسه. البته چون معماری نرم افزار سه لایه هست استفاده از کدهای بانک اطلاعاتی در لایه های دیگه بجز DAL معقولانه نیست. با این حال باز نشد.

khokhan
یک شنبه 08 تیر 1393, 11:54 صبح
سلام
ممنون از بابت زحمتی که کشیدی، ولی مشکل من حل نشد همون ارور رو میده میگه dtObject نمیشناسه. البته چون معماری نرم افزار سه لایه هست استفاده از کدهای بانک اطلاعاتی در لایه های دیگه بجز DAL معقولانه نیست. با این حال باز نشد.
می شه
کار نشد نداره
اتفاقا اگه نمونه ای رو که براتون دادم دقت کنین دیتاتیبل یه جایی غیر از فرم اصلی ایجاد می شه
اگه امکانش هست یه کپی ا پروژه تون بدین تا درستش کنم
بدرود

soleimani.em
یک شنبه 08 تیر 1393, 12:31 عصر
می شه
کار نشد نداره
اتفاقا اگه نمونه ای رو که براتون دادم دقت کنین دیتاتیبل یه جایی غیر از فرم اصلی ایجاد می شه
اگه امکانش هست یه کپی ا پروژه تون بدین تا درستش کنم
بدرود

بجز دیتا آداپتر راه دیگه ای واسه گرفتن اطلاعات نیست از بانک اطلاعاتی؟

soleimani.em
یک شنبه 08 تیر 1393, 19:54 عصر
می شه
کار نشد نداره
اتفاقا اگه نمونه ای رو که براتون دادم دقت کنین دیتاتیبل یه جایی غیر از فرم اصلی ایجاد می شه
اگه امکانش هست یه کپی ا پروژه تون بدین تا درستش کنم
بدرود

سلام اگه فقط کلاس هارو برات بذارم میتونی زحمتشو بکشی؟

soleimani.em
دوشنبه 09 تیر 1393, 09:37 صبح
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DAL
{

public class _Report:SQLActivity
{
public int identity = 0;
public string Table = "";
public int DatasetLink = 0;
DataSet ds = new DataSet("Report");
DataTable dtObject = new DataTable("dtObject");
DataTable dtWarehouse = new DataTable("dtWarehouse");

public void Crate_DataTable()
{

//point 1
switch (DatasetLink)
{
case 0:
{//Coding
DataColumn[] columns = new DataColumn[0];
dtObject.Columns.Add("identity", typeof(int));
dtObject.Columns.Add("iD", typeof(int));
dtObject.Columns.Add("Title", typeof(string));
dtObject.PrimaryKey = columns;

ds.Tables.Add(dtObject);
}
break;

case 9:
{//Warehouse
DataColumn[] columns = new DataColumn[0];
dtWarehouse.Columns.Add("identity", typeof(int));
dtWarehouse.Columns.Add("iD", typeof(int));
dtWarehouse.Columns.Add("Title", typeof(string));
dtWarehouse.PrimaryKey = columns;
ds.Tables.Add(dtWarehouse);
}
break;

}

}
public void AddNew_SelectDatatable_Row(int identity, int iD, string Title)
{
switch (DatasetLink)
{
case 0:
{//Coding
dtObject.Rows.Add(new object[] { identity,iD, Title });

}
break;
case 9:
{//Warehouse
dtWarehouse.Rows.Add(new object[] { identity, iD, Title });
}
break;

}


}

public int Delete_SelectDatatable_Row(int iD)
{
//point 2

switch (DatasetLink)
{
case 0:
{//Coding
DataRow[] drr = dtObject.Select("iD=' " + iD + " ' ");
foreach (var row in drr)
row.Delete();
}
break;

case 9:
{//Warehouse
DataRow[] drr = dtWarehouse.Select("iD=' " + iD + " ' ");
foreach (var row in drr)
row.Delete();
}
return 1;
}

public DataTable Get_Update_SelectDatatable()
{


switch (DatasetLink)
{
case 0:
{//Coding
Table = "dtObject";
}
break;
case 9:
{//Warehouse
Table = "dtWarehouse";
}
break;


return ds.Tables[Table];
}

public int GetFind_SelectDatatable_iD(int iD)
{
int retval = 0;
switch (DatasetLink)
{
case 0:
{//Coding
foreach (DataRow row in dtObject.Rows)
{
if (row["iD"].ToString() == iD + "")
{
retval = 1;
}
}
}
break;
case 9:
{//Warehouse
foreach (DataRow row in dtWarehouse.Rows)
{
if (row["iD"].ToString() == iD+"")
{
retval = 1 ;
}
}
}
break;


return retval;

}



public DataTable Report_WarehouseStore()
{
// INNER JOIN dtObject ON dtObject.iD = WarehouseStore.ProductCode INNER JOIN dtWarehouse ON dtWarehouse.iD = WarehouseStore.WarehouseiD
SqlDataAdapter da =new SqlDataAdapter (@"SELECT WarehouseStore.ProductID, WarehouseStore.ProductCode, WarehouseStore.ProductName, UnitPart.UnitPart, Warehouse.WarehouseName,
WarehouseStore.ProductValue FROM WarehouseStore INNER JOIN UnitPart ON WarehouseStore.UnitPartID = UnitPart.UnitPartid INNER JOIN Warehouse
ON Warehouse.WarehouseiD = WarehouseStore.WarehouseiD ",new _Connections().Cnn);
DataTable dt=new DataTable();
da.Fill(dt);
ds.Tables.Add(dt);
ds.Tables.Add(dtObject);
ds.Tables.Add(dtWarehouse);



return dt;

}

}
}