PDA

View Full Version : datatable



pooyansystem
شنبه 15 دی 1386, 10:22 صبح
سلام
من یه datatable دارم که می خوام سطرهایی از اون که ستون code اون طول 2 دارد و با 0 شروع شده رو انتخاب کنم من کد زیر رو نوشتم ولی جواب نداد ممنون میشم بگید ایراد اون چیه


string format = "0_";
DataRow[] findrow;
string select = "code like '" + format + "'";
findrow = table.Select(select);

hassan razavi
شنبه 15 دی 1386, 10:24 صبح
علتش اینه که فیلد شما از نوع char یا nvarchar نیست.
باید با STR و LTRIM و RTRIM ، فیلدتون رو تبدیل کنید و بعد اینکار رو بکنید.

pooyansystem
شنبه 15 دی 1386, 11:15 صبح
مشکل این نیست چون من با کد زیر ستون code رو ایجاد کردم


DataTable table = newDataTable("menus");
DataColumn column = newDataColumn("code", typeof(System.String));
table.Columns.Add(column);

همونطور که می بینید code یک string است

hassan razavi
شنبه 15 دی 1386, 11:21 صبح
پس LSTR و RSTR رو چک کنید ، شاید داده هاتون Trim نشده باشند.

pooyansystem
شنبه 15 دی 1386, 12:25 عصر
مشکل اینم نیست چون من این رو هم چک کردم

pooyansystem
یک شنبه 16 دی 1386, 09:37 صبح
کسی نظری نداه کار من تو این قسمت اساسی گیره ممنون میشم اگه راهنمایی کنید

hassan razavi
یک شنبه 16 دی 1386, 10:03 صبح
لطفا یک Database که فقط شامل جدول مورد نظرتون هست رو بفرستید.

pooyansystem
یک شنبه 16 دی 1386, 10:51 صبح
من از db استفاده نمی کنم بلکه از طزیق یک فایل xml میام و datatable رو پر میکنم
فایلxml من هم به صورت زیر تعریف شده



<?xmlversion="1.0"standalone="yes"?>
<DocumentElement>
<menus>
<code>01</code>
<name>name0</name>
<text>text0</text>
</menus>
<menus>
<code>02</code>
<name>name02</name>
<text>text02</text>
</menus
<menus>
<code>011</code>
<name>name01</name>
<text>text01</text>
</menus>
</DocumentElement>

reza_rad
یک شنبه 16 دی 1386, 11:14 صبح
ولی جواب نداد ممنون میشم بگید ایراد اون چیه
اررور میده یا نه؟

بجای _0 یکبار %0 رو چک کنید ببینید اصلا جواب میده یا نه؟

pooyansystem
یک شنبه 16 دی 1386, 11:33 صبح
خطا نمیده
وقتی هم که قرار دادم %0 جواب داد

reza_rad
یک شنبه 16 دی 1386, 11:37 صبح
احتمالا مشکل همون trim هست. اینو چک کنید:


string format = "0_";
DataRow[] findrow;
string select = "ltrim(rtrim(code)) like '" + format + "'";
findrow = table.Select(select);

pooyansystem
یک شنبه 16 دی 1386, 11:54 صبح
کد شما رو تست کردم خطای زیر رو میده


The expression contains undefined function call ltrim().


وقتی هم که trim را به جای ((rtrim(ltrim نوشتم بازم جواب نداد

hassan razavi
یک شنبه 16 دی 1386, 12:09 عصر
همونطور که در پست شماره 2 گفتم ، از حروف بزرگ استفاده کنید ببینید بازهم خطا میده ؟
LTRIM و RTRIM

reza_rad
یک شنبه 16 دی 1386, 12:09 عصر
فقط با rtrim یا ltrim تست کنید. دو تاش رو باهم امتحان نکنید.

pooyansystem
یک شنبه 16 دی 1386, 12:14 عصر
همونطور که در پست شماره 2 گفتم ، از حروف بزرگ استفاده کنید ببینید بازهم خطا میده ؟
LTRIM و RTRIM
فرقی نمیکنه بازم همون خطا رو میده



فقط با rtrim یا ltrim تست کنید. دو تاش رو باهم امتحان نکنید.

این کارم کردم فایده ای نداشت بازم همون خطا رو میده

hassan razavi
یک شنبه 16 دی 1386, 12:16 عصر
یه پروژه کوچولو بسازید و بفرستید تا بتونیم سریعتر کمکتون کنیم.

pooyansystem
یک شنبه 16 دی 1386, 12:49 عصر
اینم پروژه

hassan razavi
یک شنبه 16 دی 1386, 13:56 عصر
متد Select مشکلی با * و % نداره ولی چرا با '_' و '?' کار نمیکنه.
کد زیر جواب میده در برنامه


string select = "code like '0*'";

هنوز هم به دنبال مشکل هستم.

hassan razavi
یک شنبه 16 دی 1386, 14:11 عصر
با تشکر فراوان از دوست عزیزم dr_csharp

آقا ما خیلی گشتیم ولی معادل _ یا ؟ رو برای like جهت استفاده در متد Select رو پیدا نکردیم.
به نتیجه ای بهتر از این نرسیدیم.



string select = "code like ('0*') and len(code)=2";

pooyansystem
دوشنبه 17 دی 1386, 08:45 صبح
متشکرم از اینکه وقت گذاشتید من خودم هم از همین روشی که شما گفتید استفاده کردم تا مشکلم حل بشه بازم از اینکه وقت گذاشتید ممنونم