PDA

View Full Version : جستجو درون data set ؟؟؟؟



migrant
سه شنبه 26 شهریور 1387, 20:45 عصر
چطور میشه وقتی یه select انجام میشه و اطلاعات رو درون یه دیتا ست fill می کنیم در select های بعدی از اطلاعات همون دیتا ست استفاده کرد و روی دیتا ست عمل select انجام شود . . . .
فکر کنم این کار سرعت جستجو را خیلی افزایش می دهد !!!

علیرضا مداح
سه شنبه 26 شهریور 1387, 21:03 عصر
سلام دوست عزیز،
جهت جستجو بر روی شیء DataSet چند روش وجود دارد:
1)استفاده از متد Select مربوط به شیء DataTable :
مثالی از MSDN :


private void GetRowsByFilter()
{
DataTable table = DataSet1.Tables["Orders"];
// Presuming the DataTable has a column named Date.
string expression;
expression = "Date > #1/1/00#";
DataRow[] foundRows;
// Use the Select method to find all rows matching the filter.
foundRows = table.Select(expression);
// Print column 0 of each returned row.
for(int i = 0; i < foundRows.Length; i ++)
{
Console.WriteLine(foundRows[i][0]);
}
}

2)بهره گیری از پروپرتی RowFilter مربوط به شیء DataView :
مثالی از MSDN :


private void BindDataGrid()
{
DataTable table = new DataTable();
// Insert code to populate a DataTable with data.
// Bind grid to DataTable.
dataGrid1.DataSource = table;
}
private void ChangeRowFilter()
{
DataTable gridTable = (DataTable) dataGrid1.DataSource;
// Set the RowFilter to display a company names that
// begin with A through I..
gridTable.DefaultView.RowFilter = "CompanyName < 'I'";
}

3)به کارگیری متد Find موجود در پروپرتی Rows مربوط به شیء DataTable :
مثالی از MSDN :


private void FindInPrimaryKeyColumn(DataTable table,
long pkValue)
{
// Find the number pkValue in the primary key
// column of the table.
DataRow foundRow = table.Rows.Find(pkValue);
// Print the value of column 1 of the found row.
if(foundRow != null)
Console.WriteLine(foundRow[1]);
}

4)به کارگیری LINQ
LINQ To DataSet Examples (http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx)

چند نکته:
1)استفاده از Typed Datasets را به شما توصیه میکنم،
2)سعی کنید با بهره گیری از LINQ و ابزارهای آن نظیر LINQ To SQL آشنا شوید،
3)این شیوه در هنگام کار در یک برنامه تحت شبکه توصیه نمیگردد ، زیرا دیتابیس به طور مدام در حال تغییر بوده و ممکن است دیتای موجود در شیء DataSet نامعتبر بوده و به روز نباشد و در نتیجه نتایج اشتباه به کاربر ارائه داده خواهد شد،

Behrouz_Rad
سه شنبه 26 شهریور 1387, 21:45 عصر
این شیوه در هنگام کار در یک برنامه تحت شبکه توصیه نمیگردد ، زیرا دیتابیس به طور مدام در حال تغییر بوده و ممکن است دیتای موجود در شیء DataSet نامعتبر بوده و به روز نباشد و در نتیجه نتایج اشتباه به کاربر ارائه داده خواهد شد،

این مشکل با Query Notification قابل حله.

علیرضا مداح
سه شنبه 26 شهریور 1387, 23:18 عصر
این مشکل با Query Notification قابل حله.

بله صحیح است ، ویژگی Query Notification در SQL Server Service Broker ارائه شده است ، حال آنکه ممکن است از Data Source ی به غیر از SQL Server که مشابه این قابلیت را به هر نحوی پشتیبانی نمیکند استفاده گردد و حتی ممکن است به سبب محدودیت هایی امکان بهره گیری از Service Broker وجود نداشته باشد ،
برای مطالعه بیشتر و کار بر روی Query Notification همراه با یک مثال به لینک زیر مراجعه نمایید :

(http://msdn.microsoft.com/en-us/library/3ht3391b.aspx)MSDN - SqlNotificationRequest and Detecting Notifications (ADO.NET) (http://msdn.microsoft.com/en-us/library/3ht3391b.aspx)
(http://msdn.microsoft.com/en-us/library/3ht3391b.aspx)

migrant
شنبه 30 شهریور 1387, 14:34 عصر
سلام دوباره به همه دوستان
ممنون از کمک هاتون ولی اصلا واضح نیست جواباتون و چیزی نفهمیدم . . . .
اگه میشه بیشتر توضیح بدید ؟؟؟؟؟
ممنون
حالا میشه بگید چطزور میشه یه دیتا گرید به یک دیتا ست وصل باشه و اطلاعات دیتا ست در دیتا گرید نمایش داده بشه . . . .
آیا دیتا ست حتما باید استاتیک باشه و از wizard باید استفاده کنیم یا با کد نویسی و دیتا ست تعریف شده هم میشه همچین کاری کرد ؟؟؟؟؟؟
من در دلفی روی یک دیتا ست خیلی راحت عمل select انجام می دادم نمی دونم چطور است که کسی نمی دونه چطور میشه این کار رو کرد . . . .

esmartiz_red
شنبه 30 شهریور 1387, 14:45 عصر
datagridview1.databinding.add(new binding("datasource",dataset,"tablename"));

migrant
جمعه 12 مهر 1387, 19:09 عصر
سلام و ممنون از همه دوستان که پاسخ داده اند
نتیجه تاپیک :
با ساخت یه data table و ریخت تمام داده های جدول درون آن و ارتباط data Grid View به این Data Table می توان با متد هایی که داره در آن جستجو کرد و کار های زیادی انجام داد .. . .
من در دلفی همچین خاصیتی رو دیده بودم و خوشبختانه در سی شارپ هم همچین خاصیتی رو پیدا کردم چون به نظر خودم اصلا صحیح نبود برای هر جستجو و اطلاعات کوچک نیاز به اتصال به بانک باشه . غیلی غیر منطقی و غیر بهینه بود اینجوری . . . . .
ممنون

saber4166
جمعه 12 مهر 1387, 19:34 عصر
د.ست عزیز میتونی روشی که خودت رفتی رو هم اینجا قرار بدی تا دوستان استفاده کنند

majid325
شنبه 20 مهر 1387, 20:32 عصر
3)این شیوه در هنگام کار در یک برنامه تحت شبکه توصیه نمیگردد ، زیرا دیتابیس به طور مدام در حال تغییر بوده و ممکن است دیتای موجود در شیء DataSet نامعتبر بوده و به روز نباشد و در نتیجه نتایج اشتباه به کاربر ارائه داده خواهد شد،



دركل linq براي شبكه بهتره يا ado يا استفاده همزمان؟