View Full Version : سوال: چگونگی ساخت یک فیلد از ترکیب چند فیلد
icmaster
دوشنبه 06 فروردین 1386, 18:24 عصر
سلام
من در دیتا بیسم سه ستون از نوع int دارم که میخوام در گزارشم این سه عدد بصورت یک فیلد رشته ای نمایش داده بشن.
این سه فیلد روز و ماه و سال هستند و میخوام در گزارش بصورت روز/ماه/سال نمایش داده بشن.
میشه این کارو کرد؟
اگه میشه ممنون میشم بگین چطوری(خیلی کارم گیره)؟
با تشکر.
reza_rad
سه شنبه 07 فروردین 1386, 07:13 صبح
با Transact SQL هم می تونید اینکار رو انجام بدید...
select Convert(varchar,year)+'/'+Convert(varchar,month)+'/'+Convert(varchar,day)
skd6960357
سه شنبه 07 فروردین 1386, 07:28 صبح
این سه فیلد رو تبدیل به یک formulaField کنید و در گزارشتان استفاده نمائید .
icmaster
سه شنبه 07 فروردین 1386, 10:26 صبح
با Transact SQL هم می تونید اینکار رو انجام بدید...
select Convert(varchar,year)+'/'+Convert(varchar,month)+'/'+Convert(varchar,day)
سلام
متشکر از جوابهاتون.
این کد رو باید کجا بنویسم؟
ممنون.
reza_rad
سه شنبه 07 فروردین 1386, 10:31 صبح
این کد رو باید کجا بنویسم؟
می تونید نتیجه کوئری تون رو توی دیتاست بریزید و بعد این دیتاست رو به گزارش بایند کنید
همچنین می تونید یک View بسازید و کوئری تون رو توی اون بنویسید و ...
مثلا در حالت دیتاست کوئری شما می تونه کد بالا رو داشته باشه و بعنوان یک فیلد نتیجه اش رو برگردونه.
icmaster
سه شنبه 07 فروردین 1386, 11:26 صبح
می تونید نتیجه کوئری تون رو توی دیتاست بریزید و بعد این دیتاست رو به گزارش بایند کنید
همچنین می تونید یک View بسازید و کوئری تون رو توی اون بنویسید و ...
مثلا در حالت دیتاست کوئری شما می تونه کد بالا رو داشته باشه و بعنوان یک فیلد نتیجه اش رو برگردونه.
با اجرای این کوئری یک فیلد جدید در نتیجه کوئری بوجود میاد که اون فیلد جزو فیلدهای اصلی دیتابیس نیست حالا وقتی دیتاست رو به گزارش بایند میکنم اون فیلد جدید (تاریخ) رو نمایش نمیده ؟
چطوری باید یه فیلد در گزارشم تعریف کنم که این فیل جدید رو نمایش بده ؟ من فقط میتونم فیلدهای اصلی دیتابیسم رو در گزارش تعریف کنم.
ممنون
reza_rad
سه شنبه 07 فروردین 1386, 11:37 صبح
شما حتی اگه با ویزارد هم دیتاست بسازی می تونی نتیجه کوئری رو بهش بدی و پرش کنی.
حالا اگه سورس رو توی ریپورت به دیتاست بایند کنی فیلدهای دیتاست نشون داده میشه و می تونی انتخابشون کنی.
icmaster
سه شنبه 07 فروردین 1386, 12:02 عصر
من دیتاست رو با استفاده از کد به ریپورت بایند میکنم:
string rstr="select serial, model, bankName, city, address, Convert(varchar,nyear)+'/'+Convert(varchar,nmonth)+'/'+Convert(varchar,nday) as tarikh from dastgah";
DataSet rds = new DataSet();
SqlDataAdapter rda = new SqlDataAdapter(rstr, sqlConnection1);
rda.Fill(rds, "dastgah");
CrystalReport1 cr = new CrystalReport1();
cr.SetDataSource(rds);
حالا با توجه به کوئری یک فیلد بنام tarikh تو دیتاست بوجود آمده . ولی در ریپورتم این فیلد tarikh رو نمایش نمیده .
من باید چه نوع فیلدی رو در گزارشم تعریف کنم که این فیلد tarikhرو نمایش بده؟
reza_rad
سه شنبه 07 فروردین 1386, 13:23 عصر
اگه با کد کار می کنی روش دیتاست یه کم اذیت می کنه...
روش دیتاست برای موارد ویزاردی خوبه.
برای شما توی این حالت همون FormulaFeild بهتر و راحتتره...
توی ریپورتتون یه FormulaField جدید ایجاد کنید و توی قسمت فرمول سه تا قیلد رو با هم concat کنید...
زیاد از کارکردن با فرمولا نترسید ظاهرا سخته اما خیلی راحتته.
icmaster
سه شنبه 07 فروردین 1386, 15:48 عصر
اگه با کد کار می کنی روش دیتاست یه کم اذیت می کنه...
روش دیتاست برای موارد ویزاردی خوبه.
برای شما توی این حالت همون FormulaFeild بهتر و راحتتره...
توی ریپورتتون یه FormulaField جدید ایجاد کنید و توی قسمت فرمول سه تا قیلد رو با هم concat کنید...
زیاد از کارکردن با فرمولا نترسید ظاهرا سخته اما خیلی راحتته.
ممنون
با همون فرمول انجامش دادم مشکل حل شد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.