PDA

View Full Version : سوال: انتقال مقادیر انتخاب شده توسط checkbox به stimulsoft reports



zzhkfa
سه شنبه 30 آبان 1396, 16:16 عصر
سلام من میخوام مقادیری که توسط چک باکس در گریدویو انتخاب میشه رو برای چاپ به استیمول بفرستم، لطفا راهنمایی کنن که چگونه باید کد خودم رو ویرایش کنم:


DataTable dt = (DataTable)DGV_Vorod.DataSource;
for (int i = 0; i < DGV_Vorod.Rows.Count; i++)
{
if (!DGV_Vorod.Rows[i].Cells[2].Selected)
continue;
}
stiReport1.Load(Environment.CurrentDirectory + @"\Report\reportvorod.mrt");
stiReport1.Compile();
stiReport1.RegData("ds.DT6", dt);
stiReport1.Show();



http://www.w3-farsi.com/forum/?qa=blob&qa_blobid=4114014773774321286

رامین مرادی
چهارشنبه 01 آذر 1396, 08:58 صبح
برای این کار بهتره شما ابتدا بیای سطرهای دیتا گرید رو پیمایش کنی و سطرهای انتخاب شده رو در یک دیتا تیبل ذخیره و دیتا تیبل رو برا چاپ بفرستید.



DataTable dt = new DataTable();
DataRow row;
dt.clear();
dt.Columns.Add("Name");
dt.Columns.Add("Family");
for(int i;i<dataGrid.Rows.Count;i++)
{
if(bool.parse(dataGrid.Rows[i]["Checked"].ToString())
{
row = dt.NewRow();
row["Name"] = dataGrid.Rows[i]["Name"].ToString();
row["Family"] = dataGrid.Rows[i]["Family"].ToString();
dt.Rows.Add(row);
}
}



الان شما میتونید dt رو به گزارشتون بفرستید(فیلدها رو خودتون تغییر بدید)
در ضمن در دیتا گرید یک ستون از نوع چک باکس ایجاد کنید که کاربر بتونه تیک بزنه

zzhkfa
چهارشنبه 01 آذر 1396, 16:52 عصر
من کد رو منتقل کردم ظاهرا داره گیر میده، تصویر ضمیمه شد:
147120

رامین مرادی
پنج شنبه 02 آذر 1396, 09:08 صبح
clear رو به صورت Clear بنویسید اشتباه از سوی من بود. (تو notepad نوشتم)
در خط 6 مقدار i رو 0 قرار بدید اشتباه از سوی من بود. int i=0
parse رو به صورت Parse بنویسید اشتباه از سوی من بود.
دیتا گرید شما از چه نوعی هست؟ کامپوننت دیگه ای جز دیتا گرید خود ویژوال استودیو هست؟
بهتره برنامتونو اینجا آپلود کنید.

zzhkfa
جمعه 03 آذر 1396, 08:53 صبح
من کد رو به شکل زیر اصلاح کردم اما فقط یک رکورد از انتخاب شده ها ارسال میشه.


DataTable dt = new DataTable();
DataRow row;
dt.Clear();
dt.Columns.Add("PersonID");
dt.Columns.Add("Fname");
for (int i=0; i < DGV_Vorod.Rows.Count; i++)
{
if (bool.Parse(DGV_Vorod.Rows[i].Cells[2].Selected.ToString()))
{
row = dt.NewRow();
row["PersonID"] = DGV_Vorod.Rows[i].Cells[4].Value.ToString();
row["Fname"] = DGV_Vorod.Rows[i].Cells[5].Value.ToString();
dt.Rows.Add(row);
}
}
stiReport1.Load(Environment.CurrentDirectory + @"\Report\reportvorod.mrt");
stiReport1.Compile();
stiReport1.RegData("ds.DT6", dt);
stiReport1.Show();

اینم لینک دانلود سورس:

http://s8.picofile.com/file/8312570592/LeaveManagement.zip.html

shahryari
جمعه 03 آذر 1396, 11:38 صبح
سلام
استیمول خودش کنترل checkbox داره، بنداز تو data مقدارشو ازدیتا سورس بگیر

رامین مرادی
شنبه 04 آذر 1396, 08:25 صبح
DGV_Vorod.Rows[i].Cells[2].Selected.ToString()
این خط بجای سلکت بنویسید ولیو
به این شکل
DGV_Vorod.Rows[i].Cells[2].Value.ToString()

zzhkfa
شنبه 04 آذر 1396, 15:46 عصر
من مشکل رو با کد زیر و راهنمایی بسیار عالی شما حل کردم، فقط یه مشکل دیگه مونده اینکه من سه رکورد را انتخاب می کنم، ولی تعداد ارسال ها به ریپورت دو عدد هست، یعنی هرتعداد که انتخاب انجام میشه یک رکورد کمتر ارسال میشه لطفا راهنمایی کنید.


DataTable dt = new DataTable();
DataRow row;
dt.Clear();
dt.Columns.Add("PersonID");
dt.Columns.Add("Fname");
dt.Columns.Add("Lname");
dt.Columns.Add("Sazman");
dt.Columns.Add("dastgah");
dt.Columns.Add("VNDate");
dt.Columns.Add("StartTimeAM");
dt.Columns.Add("EndTimeAM");
dt.Columns.Add("StartTimePM");
dt.Columns.Add("EndTimePM");
dt.Columns.Add("ellat");
for (int i = 0; i < DGV_Vorod.Rows.Count; i++)
{
if (Convert.ToBoolean(DGV_Vorod.Rows[i].Cells[2].Value))
{
row = dt.NewRow();
row["PersonID"] = DGV_Vorod.Rows[i].Cells[4].Value.ToString();
row["Fname"] = DGV_Vorod.Rows[i].Cells[5].Value.ToString();
row["Lname"] = DGV_Vorod.Rows[i].Cells[6].Value.ToString();
row["Sazman"] = DGV_Vorod.Rows[i].Cells[7].Value.ToString();
row["dastgah"] = DGV_Vorod.Rows[i].Cells[8].Value.ToString();
row["VNDate"] = DGV_Vorod.Rows[i].Cells[9].Value.ToString();
row["StartTimeAM"] = DGV_Vorod.Rows[i].Cells[10].Value.ToString();
row["EndTimeAM"] = DGV_Vorod.Rows[i].Cells[11].Value.ToString();
row["StartTimePM"] = DGV_Vorod.Rows[i].Cells[12].Value.ToString();
row["EndTimePM"] = DGV_Vorod.Rows[i].Cells[13].Value.ToString();
row["ellat"] = DGV_Vorod.Rows[i].Cells[14].Value.ToString();
dt.Rows.Add(row);
}
}
stiReport1.Load(Environment.CurrentDirectory + @"\Report\Vorod.mrt");
stiReport1.Compile();
stiReport1.RegData("ds.DT5", dt);
stiReport1.Show();

رامین مرادی
یک شنبه 05 آذر 1396, 10:24 صبح
ابتدا کد زیر رو بعد از لود داده ها بنویس

for (int i = 0; i < DGV_Vorod.Rows.Count; i++)
{
DGV_Vorod.Rows[i].Cells[2].Value=false;
}


سپس کد بالا رو به صورت زیر اصلاح کن

DataTable dt = new DataTable();
DataRow row;
dt.Clear();
dt.Columns.Add("PersonID");
dt.Columns.Add("Fname");
dt.Columns.Add("Lname");
dt.Columns.Add("Sazman");
dt.Columns.Add("dastgah");
dt.Columns.Add("VNDate");
dt.Columns.Add("StartTimeAM");
dt.Columns.Add("EndTimeAM");
dt.Columns.Add("StartTimePM");
dt.Columns.Add("EndTimePM");
dt.Columns.Add("ellat");






for (int i = 0; i < DGV_Vorod.Rows.Count; i++)
{
if(DGV_Vorod.Rows[i].Cells[2].Value!=DBNull.Value)
{
if (Convert.ToBoolean(DGV_Vorod.Rows[i].Cells[2].Value))
{
row = dt.NewRow();
row["PersonID"] = DGV_Vorod.Rows[i].Cells[4].Value.ToString();
row["Fname"] = DGV_Vorod.Rows[i].Cells[5].Value.ToString();
row["Lname"] = DGV_Vorod.Rows[i].Cells[6].Value.ToString();
row["Sazman"] = DGV_Vorod.Rows[i].Cells[7].Value.ToString();
row["dastgah"] = DGV_Vorod.Rows[i].Cells[8].Value.ToString();
row["VNDate"] = DGV_Vorod.Rows[i].Cells[9].Value.ToString();
row["StartTimeAM"] = DGV_Vorod.Rows[i].Cells[10].Value.ToString();
row["EndTimeAM"] = DGV_Vorod.Rows[i].Cells[11].Value.ToString();
row["StartTimePM"] = DGV_Vorod.Rows[i].Cells[12].Value.ToString();
row["EndTimePM"] = DGV_Vorod.Rows[i].Cells[13].Value.ToString();
row["ellat"] = DGV_Vorod.Rows[i].Cells[14].Value.ToString();
dt.Rows.Add(row);
}
}
}
stiReport1.Load(Environment.CurrentDirectory + @"\Report\Vorod.mrt");
stiReport1.Compile();
stiReport1.RegData("ds.DT5", dt);

zzhkfa
یک شنبه 05 آذر 1396, 18:03 عصر
کد جدید رو هم جایگزین کردم، متاسفانه مشکل حل نشد. اگر زحمتی نیست یه نگاه به سورسی که لینکش رو گذاشتم بیندازید. ممنون میشم
http://s8.picofile.com/file/83125705...ement.zip.html (http://s8.picofile.com/file/8312570592/LeaveManagement.zip.html)

رامین مرادی
سه شنبه 07 آذر 1396, 10:48 صبح
این کدهارو کلا به جای کد های فرمتون بزارید



using Stimulsoft.Report;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;




namespace LeaveManagement
{
public partial class Frm_ViewVorod : Form
{
public Frm_ViewVorod()
{
InitializeComponent();
}


static OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Bank.mdb;Persist Security Info=True");
OleDbDataAdapter da = new OleDbDataAdapter("", con);
DataSet ds = new DataSet();
private void Frm_ViewVorod_Load(object sender, EventArgs e)
{
BindData();
}
private void BindData(string str = "")
{
DataTable dt = new DataTable();
DataBase db = new DataBase();


string where = " where 1=1 ";


if (!string.IsNullOrEmpty(str))
where += string.Format(" and (VNDate like '%{0}%')", str);
dt = db.MySelect("select * from Tbl_VorodExit " + where);


DGV_Vorod.DataSource = dt;
//DGV_Vorod.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
DGV_Vorod.Columns[0].Width = 30;
DGV_Vorod.Columns[1].Width = 30;
DGV_Vorod.Columns[2].Width = 30;
DGV_Vorod.Columns[9].HeaderText = "تاریخ ";
DGV_Vorod.Columns[10].HeaderText = "ق.ظ / ورود";
DGV_Vorod.Columns[11].HeaderText = "ق.ظ / خروج";
DGV_Vorod.Columns[12].HeaderText = "ب.ظ / ورود";
DGV_Vorod.Columns[13].HeaderText = "ب.ظ / خروج";
DGV_Vorod.Columns[3].Visible = false;
DGV_Vorod.Columns[4].Visible = false;
DGV_Vorod.Columns[5].Visible = false;
DGV_Vorod.Columns[6].Visible = false;
DGV_Vorod.Columns[7].Visible = false;
DGV_Vorod.Columns[8].Visible = false;
DGV_Vorod.Columns[14].Visible = false;
countVorod();


}


private void countVorod()
{
// نمایش تعداد رکوردهای ثبت شده
int count;
count = System.Convert.ToInt32(DGV_Vorod.Rows.Count);
//count--;
label_count.Text = count.ToString();

for (int i = 0; i < DGV_Vorod.Rows.Count; i++)
{
DGV_Vorod.Rows[i].Cells["colprint"].Value = false;
}
}
private void چاپToolStripMenuItem_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataRow row;
dt.Clear();
dt.Columns.Add("PersonID");
dt.Columns.Add("Fname");
dt.Columns.Add("StartTimeAM");
dt.Columns.Add("EndTimeAM");
for (int i = 0; i < DGV_Vorod.RowCount; i++)
{
if (bool.Parse(DGV_Vorod.Rows[i].Cells["colprint"].Value.ToString()))
{
row = dt.NewRow();
row["PersonID"] = DGV_Vorod.Rows[i].Cells[4].Value.ToString();
row["Fname"] = DGV_Vorod.Rows[i].Cells[5].Value.ToString();
row["StartTimeAM"] = DGV_Vorod.Rows[i].Cells[10].Value.ToString();
row["EndTimeAM"] = DGV_Vorod.Rows[i].Cells[11].Value.ToString();
dt.Rows.Add(row);
}


}


StiReport s = new StiReport();


s.Load(Environment.CurrentDirectory + @"\Report\reportvorod.mrt");
s.Compile();
s.RegData("ds.DT6", dt);
s.Show();
}


private void DGV_Vorod_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//try
//{
// var a = DGV_Vorod.Rows[e.RowIndex].Cells[3].Value;


// if (e.ColumnIndex == 0) //delete
// {
// DialogResult result = FarsiMessage.Show("آیا مطمئنید که می خواهید این رکورد را حذف کنید؟", "اخطار", FarsiMessageBoxButtons.YesNo, FarsiMessageBoxIcons.Question);
// if (result == DialogResult.Yes)
// {
// DataBase db = new DataBase();
// db.DoCommand("delete from Tbl_Vorod where VorodID=" + a.ToString());
// FarsiMessage.Show("رکورد مورد نظر از بانک حذف گردید", "حذف اطلاعات", FarsiMessageBoxButtons.OK, FarsiMessageBoxIcons.Information);
// BindData();


// }
// }
// if (e.ColumnIndex == 1) //edite
// {
// Frm_NewVorod f = new Frm_NewVorod();
// f.idVorod = Convert.ToInt32(a);
// f.ShowDialog();
// BindData();
// }
//}
//catch
//{


//}


}


private void Frm_ViewSaati_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
this.Close();
}
}
}

zzhkfa
چهارشنبه 08 آذر 1396, 16:04 عصر
متاسفانه مشکلی حل نگردید، همچنان یک رکورد کمتر ارسال میشه

zzhkfa
یک شنبه 12 آذر 1396, 16:17 عصر
متاسفانه مشکل حل نشد، لطفا اگر امکان داره راهنمایی کنید

رامین مرادی
دوشنبه 13 آذر 1396, 08:14 صبح
متاسفانه مشکل حل نشد، لطفا اگر امکان داره راهنمایی کنید
من خودمم موندم چرا سطر اول چاپ نمیشه :لبخند: منطقا باید چاپ بشه. ولی اولین سطر تیک خورده توی دیتا تیبل ذخیره نمیشه:متفکر:
بقیه دوستان اگه میدونن کجای کارم اشتباه بوده بگن.

zzhkfa
یک شنبه 19 آذر 1396, 17:10 عصر
دوستان کسی نبود ما را یاری برساند؟

Mahmoud.Afrad
یک شنبه 19 آذر 1396, 23:47 عصر
قبل از حلقه باید کاری کنید آخرین تغییر در دیتاگرید اعمال بشه که با متد EndEdit قابل انجام هست. پس قبل از حلقه خط زیر رو اضافه کنید
DGV_Vorod.EndEdit();
لود و نمایش گزارش هم باید بعد از حلقه باشه.

zzhkfa
دوشنبه 20 آذر 1396, 16:02 عصر
خیلی ممنون از راهنمایی کاربردی که کردید. واقعا جای تشکر دارد.
اگر زحمتی نیست لطفا بفرمائید که چگونه می تونم وقتیکه گزینه ای تیک زده نشده است یه پیغام به کاربر نشون بدم که گزینه ای انتخاب نشده است؟

رامین مرادی
سه شنبه 21 آذر 1396, 08:09 صبح
خیلی ممنون از راهنمایی کاربردی که کردید. واقعا جای تشکر دارد.
اگر زحمتی نیست لطفا بفرمائید که چگونه می تونم وقتیکه گزینه ای تیک زده نشده است یه پیغام به کاربر نشون بدم که گزینه ای انتخاب نشده است؟
همون قسمت که شرط گذاشتی تیک خورده ها رو بریزه تو دیتاتیبل برای اون شرط یک else بزار و ستونهای انتخاب نشده رو بریز تو رشته ای تا بتونی با مسیج باکس نشون بدی

zzhkfa
شنبه 25 آذر 1396, 17:23 عصر
من می خوام یه if بنویسم که اگر طرف مقدارها رو انتخاب کرد فقط مقادیر انتخابی برای پرینت ارسال شود و اگر هیچ مقداری انتهاب نشد همه رکوردهای گرید برای پرینت فرستاده شود.
لطفا با کد راهنمایی کنید.
بازم ممنون از صبر و حوصله تون در پاسخگویی

Mahmoud.Afrad
شنبه 25 آذر 1396, 20:18 عصر
بعد از حلقه تعداد سطر دیتاتیبل را چک کنید اگر صفر بود کل دیتاسورس گرید را به گزارش یفرستید.

رامین مرادی
یک شنبه 26 آذر 1396, 08:12 صبح
من می خوام یه if بنویسم که اگر طرف مقدارها رو انتخاب کرد فقط مقادیر انتخابی برای پرینت ارسال شود و اگر هیچ مقداری انتهاب نشد همه رکوردهای گرید برای پرینت فرستاده شود.
لطفا با کد راهنمایی کنید.
بازم ممنون از صبر و حوصله تون در پاسخگویی
عزیز این کدی که نوشیم هم همین کار میکنه دیگه:متفکر: فقط داده هایی که تیک خورده میرن برا چاپ .قبل از اجرای گزارش یه شرط بزار if(dt.Rows.Count==0){dt=DGV_Vorod.DataSource;

zzhkfa
دوشنبه 27 آذر 1396, 16:50 عصر
من کاری که گفتید انجام دادم اما پیغام من چندین بار به علت اینکه در حلقه هست تکرا میشه ، اشتباهم کجاست؟

private void چاپToolStripMenuItem_Click(object sender, EventArgs e)
{

foreach (DataGridViewRow rows in DGV_Vorod.Rows)
{
DataTable dt = new DataTable();
DataRow row;
dt.Clear();
dt.Columns.Add("PersonID");
dt.Columns.Add("Fname");
dt.Columns.Add("Lname");
dt.Columns.Add("sazman");
dt.Columns.Add("dastgah");
dt.Columns.Add("VNDate");
dt.Columns.Add("ellat");
dt.Columns.Add("StartTimeAM");
dt.Columns.Add("EndTimeAM");
dt.Columns.Add("StartTimePM");
dt.Columns.Add("EndTimePM");
DGV_Vorod.EndEdit();
for (int i = 0; i < DGV_Vorod.RowCount; i++)
{
if (Convert.ToBoolean(DGV_Vorod.Rows[i].Cells[2].Value))
{
row = dt.NewRow();
row["PersonID"] = DGV_Vorod.Rows[i].Cells[4].Value.ToString();
row["Fname"] = DGV_Vorod.Rows[i].Cells[5].Value.ToString();
row["Lname"] = DGV_Vorod.Rows[i].Cells[6].Value.ToString();
row["sazman"] = DGV_Vorod.Rows[i].Cells[7].Value.ToString();
row["dastgah"] = DGV_Vorod.Rows[i].Cells[8].Value.ToString();
row["VNDate"] = DGV_Vorod.Rows[i].Cells[9].Value.ToString();
row["ellat"] = DGV_Vorod.Rows[i].Cells[14].Value.ToString();
row["StartTimeAM"] = DGV_Vorod.Rows[i].Cells[10].Value.ToString();
row["EndTimeAM"] = DGV_Vorod.Rows[i].Cells[11].Value.ToString();
row["StartTimePM"] = DGV_Vorod.Rows[i].Cells[12].Value.ToString();
row["EndTimePM"] = DGV_Vorod.Rows[i].Cells[13].Value.ToString();
dt.Rows.Add(row);
}
}
if (dt.Rows.Count == 0)
{
MessageBox.Show("رکوردی انتخاب نشده است");
}
else
{
stiReport1.Load(Environment.CurrentDirectory + @"\Report\Vorod.mrt");
stiReport1.Compile();
stiReport1.RegData("ds.DT5", dt);
stiReport1.Show();
}
}

}

Mahmoud.Afrad
دوشنبه 27 آذر 1396, 20:15 عصر
نیازی به حلقه foreach نیست.

MahmoodM30
چهارشنبه 29 آذر 1396, 19:08 عصر
سلام دوستان در این مورد به جای انتقال سطر های تیک خورده ، چطور میشه ستون ها ی خاصی رو فرستاد به استیمول مثلا کاربر بخواد ستون های دوم و چهارم رو فقط برای پرینت ارسال کنه
تو استیمول من نتونستم کاری کنم این اتفاق بیافته ممنون میشم دوستان در این مورد هم راهنمایی کنن

danialafshari
چهارشنبه 29 آذر 1396, 23:46 عصر
سلام دوستان در این مورد به جای انتقال سطر های تیک خورده ، چطور میشه ستون ها ی خاصی رو فرستاد به استیمول مثلا کاربر بخواد ستون های دوم و چهارم رو فقط برای پرینت ارسال کنه
تو استیمول من نتونستم کاری کنم این اتفاق بیافته ممنون میشم دوستان در این مورد هم راهنمایی کنن

با سلام
برای اینکار باید شرط بنویسید و فیلدهایی که انتخاب شدن رو در select قرار بدید
مثلا اگر 3 تا فیلد با نام ID - FirstName - LastName داریم و فقط قراره نام و نام خانوادگی ارسال بشه:
select FirstName,LastName from tblPersons
این میشه کوئری ریپورت
ولی اشکالش اینه که فیلد ID خالی میمونه و بهترین کار اینه که با متد Design بزارید کاربر ریپورت رو طراحی کنه. کلاٌ آموزش طراحی ریپورت به کاربر هم 30 ثانیه طول نمیکشه

stiReport1.Design();

موفق باشید

MahmoodM30
پنج شنبه 30 آذر 1396, 10:33 صبح
ممنون بابات راهنمایی من مشکلی برای کوئری و ... ندارم فقط هر کاری کردم نمیشه ستون های مورد نظر رو در استیمول نشون داد و مشکل هم همین Design هست میخوام خودش خودکار این کار رو انجام بده ، کاربر نرم افزار من تو اون حد و اندازه نیستن که بتونن اینکار رو خودشون انجام بدن

رامین مرادی
پنج شنبه 30 آذر 1396, 10:50 صبح
ممنون بابات راهنمایی من مشکلی برای کوئری و ... ندارم فقط هر کاری کردم نمیشه ستون های مورد نظر رو در استیمول نشون داد و مشکل هم همین Design هست میخوام خودش خودکار این کار رو انجام بده ، کاربر نرم افزار من تو اون حد و اندازه نیستن که بتونن اینکار رو خودشون انجام بدن

عزیز دل برادر اگه این تایپیک رو از اول کامل بخونی و کدهارو نگاه کنی. اومدیم یک ستون چک باکس به گرید ویو اضافه کردیم و هر وقت کاربر تیک هر سطر رو زد بر اساس کدهایی که نوشتیم سطرها به یک دیتا تیبل انتقال داده شده و دیتاتیبل برای چاپ ارسال میشود.

danialafshari
پنج شنبه 30 آذر 1396, 14:24 عصر
عزیز دل برادر اگه این تایپیک رو از اول کامل بخونی و کدهارو نگاه کنی. اومدیم یک ستون چک باکس به گرید ویو اضافه کردیم و هر وقت کاربر تیک هر سطر رو زد بر اساس کدهایی که نوشتیم سطرها به یک دیتا تیبل انتقال داده شده و دیتاتیبل برای چاپ ارسال میشود.
منظور ایشون ستون هست، نه سطر


ممنون بابات راهنمایی من مشکلی برای کوئری و ... ندارم فقط هر کاری کردم نمیشه ستون های مورد نظر رو در استیمول نشون داد و مشکل هم همین Design هست میخوام خودش خودکار این کار رو انجام بده ، کاربر نرم افزار من تو اون حد و اندازه نیستن که بتونن اینکار رو خودشون انجام بدن

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

رامین مرادی
پنج شنبه 30 آذر 1396, 14:36 عصر
منظور ایشون ستون هست، نه سطر



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

خب اگه بحث ستون باشه که باید ستونهای گزارش هم طراحی بشه.یعنی داینامیک باشن. منم خیلی سرچ کردم اما چیزی پیدا نکردم. خیلیا هم که بلدن به کسی یاد نمیدن. ... پیدا کردی ما رو هم بی نصیب نزار.

MahmoodM30
پنج شنبه 30 آذر 1396, 18:14 عصر
عزیز دل برادر اگه این تایپیک رو از اول کامل بخونی و کدهارو نگاه کنی. اومدیم یک ستون چک باکس به گرید ویو اضافه کردیم و هر وقت کاربر تیک هر سطر رو زد بر اساس کدهایی که نوشتیم سطرها به یک دیتا تیبل انتقال داده شده و دیتاتیبل برای چاپ ارسال میشود.
من این روشی که شما میگید رو کامل بدون اینکه بخونمم بلدم من منظورم مدل و روش دیه ای هست که شما متوجه نشدین باز ممنون

MahmoodM30
پنج شنبه 30 آذر 1396, 18:17 عصر
منظور ایشون ستون هست، نه سطر



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


بله میشه گفت غیر اصولیه ولی مشتری برای نرم افزار میخواست برای این پیگیرم که میشه یا نه

aslan
جمعه 01 دی 1396, 02:59 صبح
سلام .... پست های منو بگردین یه نمونه گزارش دینامیک تو سایت قرار داده ام و .................

MahmoodM30
جمعه 01 دی 1396, 18:24 عصر
سلام .... پست های منو بگردین یه نمونه گزارش دینامیک تو سایت قرار داده ام و .................
ممنون دوست عزیز دقیقا همونی بود که میخواستم خودم توش تغییرات میدم و چیزی که میخوامو در میارم باز ممنون دوست عزیز