FastReportERPcode获取字段数据,将数据写到表格⾥⾯
FastReport ERP code 获取字段数据,将数据写到表格⾥⾯
1.FastReport 通过code页获取数据库字段数据
DataSourceBase ds = Report.GetDataSource("明细数据");
ds.Init();
ds.First();
while(ds.HasMoreRows)
{
list.Add((String)Report.GetColumnValue("明细数据.ym00910"));//lot
product_name.Add(((String)Report.GetColumnValue("明细数据.bs00203")));
// CheckedListBox1.Items.Add(((Decimal)Report.GetColumnValue("明细数据.leftQty")));
Inventory.Add((Decimal)Report.GetColumnValue("明细数据.leftQty"));
//total_num +=((Decimal)Report.GetColumnValue("明细数据.ym00905"));
all_amount.Add((Decimal)Report.GetColumnValue("明细数据.ym00905"));
ds.Next();
}
这个部分是获取数据库某字段的数据,当时在⽹上了好久都没有到资料,⽹上说的都是PrintOn,经过不断验证和调试,发现通过上⾯这段代码能让我们通过code获取ERP数据库字段⾥⾯的数据,这也是最难的⼀部分,因为拿不到数据,就不能进⾏下⾯的数据处理,当时为了这个,整整搞了半个⽉的时间,才能摸索出来获取数据的⽅法。
DataSourceBase ds = Report.GetDataSource("明细数据");
这段代码是得到表数据的对象,然后循环获取对应字段的数据
获取到数据后接着对数据处理,因为在ERP使⽤的是C#,所以要简单的学习C#的语法。
数据处理完了以后,如何把数组⾥⾯的数据循环输出到表格⾥⾯,这是数据处理完以后,要输出到表格⾥最重要的⼀步,如果这⼀步做不出来,前期的数据获取和数据处理都没有任何意义。
下⾯这⼀步也是最重要的⼀步,就是获取page页Table的对象
TableObject table1 = Report.FindObject("Table1")as TableObject;
report是什么意思这是获取table对象,并把数组⾥⾯的数写到这个对象⾥⾯去
接下来是如何调⽤table对象的⽅法,并且能够实现Cell⾏数⾃动添加,将数据输出为⾃⼰想要的表格格式,可以针对报表的多样性,做出不⼀样的格式
if(table1 !=null)
{
//设置表格的边框颜⾊
table1.Border.Color = Color.Black;
//设置表格的border全显⽰
table1.Border.Lines = BorderLines.All;
TableRow row1 =new TableRow();//定义Table⾏对象
TableColumn col1 =new TableColumn();//定义Table列对象
TableCell cell1 =new TableCell();//定义Cell单元对象
TableCell cell2 =new TableCell();
TableCell cell3 =new TableCell();
TableCell cell4 =new TableCell();
TableCell cell5 =new TableCell();
TableCell cell6 =new TableCell();
TableCell cell7 =new TableCell();
TableCell cell8 =new TableCell();
TableCell cell9 =new TableCell();
TableCell cell10 =new TableCell();
TableCell cell11 =new TableCell();
TableCell cell12 =new TableCell();
TableCell cell13 =new TableCell();
TableCell cell14 =new TableCell();
TableCell cell15 =new TableCell();
cell1.Border.Color = Color.Black;//设置Cell单元⽅法属性
cell1.Border.Lines = BorderLines.All;
cell1.Text ="1";
cell1.FlagPreviewVisible =true;
cell1.VertAlign = VertAlign.Center;
cell2.Border.Color = Color.Black;
cell2.Border.Lines = BorderLines.All;
cell2.Text = mc[0].Value;
cell3.Border.Color = Color.Black;
cell3.Border.Lines = BorderLines.All;
row1.AddChild(cell1);//Table⾏⽅法添加
row1.AddChild(cell2);
row1.AddChild(cell3);
row1.AddChild(cell4);
row1.AddChild(cell5);
row1.AddChild(cell6);
row1.AddChild(cell7);
row1.AddChild(cell8);
row1.AddChild(cell9);
row1.AddChild(cell10);
row1.AddChild(cell11);
row1.AddChild(cell12);
row1.AddChild(cell13);
row1.AddChild(cell14);
row1.AddChild(cell15);
table1.Rows.Add(row1);//Table的对象Rows调⽤Add的⽅法,使得Table的⾏数添加⼀⾏
str_id ="";
str_lot ="";
sum =0;
}
说实话,ERP对表格的操作没有想象中的那么轻松,也许我⽅法不对,没办法对上下的单元格进⾏合并,如果有哪位⼤神到了合并的⽅法,⿇烦告知,谢谢。
代码⽰例:
public void Get_data()
{
DataSourceBase ds = Report.GetDataSource("明细数据");
ds.Init();
ds.First();
while(ds.HasMoreRows)
{
list.Add((String)Report.GetColumnValue("明细数据.ym00910"));//lot
product_name.Add(((String)Report.GetColumnValue("明细数据.bs00203")));
// CheckedListBox1.Items.Add(((Decimal)Report.GetColumnValue("明细数据.leftQty")));
Inventory.Add((Decimal)Report.GetColumnValue("明细数据.leftQty"));
//total_num +=((Decimal)Report.GetColumnValue("明细数据.ym00905"));
all_amount.Add((Decimal)Report.GetColumnValue("明细数据.ym00905"));
//CheckedListBox1.Items.Add(((Decimal)Report.GetColumnValue("明细数据.ym00905")));
ds.Next();
}
}
public void DealWith_data()
{
int list_num,index,i,j,len;
double amount;
string str,str_content;
ArrayList lot_list =new ArrayList();
ArrayList product_list =new ArrayList();
sum =0;
Hashtable ht =new Hashtable();
list_num = list.Count;//
TableObject table1 = Report.FindObject("Table8")as TableObject;
str_id ="";
str_content ="";
Regex match_name =new Regex(@"\w+[\d]+",RegexOptions.IgnoreCase);
Regex match_name1 =new Regex(@"\s+\w*",RegexOptions.IgnoreCase);
Regex match_ID =new Regex(@"#[0-9]*");
Regex match_lot =new Regex(@"[0-9a-z\.]+",RegexOptions.IgnoreCase);
string str_name =(String)Report.GetColumnValue("主数据.bs00203");
MatchCollection mc;
MatchCollection mc1;
MatchCollection ID;
MatchCollection lot;
mc = match_name.Matches(str_name);
mc1 = match_name1.Matches(str_name);
// string[] aa = match_name.Split(str_name);
// CheckedListBox1.Items.Add("产品名称:" + aa[0].ToString());
CheckedListBox1.Items.Add("产品名称:"+ mc1[0].Value);
for(i =0; i < list_num; i++)
{
str =(String)list[i];
index = str.IndexOf('#',1);
str_lot = str.Substring(0,index -1);
lot_list.Add(str_lot);
total_num+=Convert.ToDecimal(all_amount[i]);
amount =(Convert.ToDouble(Inventory[i]));
if(amount !=0.00)
{
str =(String)product_name[i];
string[] str_name_Array = Regex.Split(str,@"/");
amount =(Convert.ToDouble(all_amount[i]));
string get_str_ID =(String)list[i];
ID = match_ID.Matches(get_str_ID);
lot = match_lot.Matches(get_str_ID);
if(str_name_Array.Length ==3)
{
str_content +=" 取"+ lot[0].Value +" "+ ID[0].Value +" 蓝膜:"+(amount.ToString("#0"))+"颗。 ";
}
if(str_name_Array.Length ==2)
{
str_content +=" 取"+ lot[0].Value +" "+ ID[0].Value +" 蓝膜:"+(amount.ToString("#0"))+"颗。 ";
}
if(str_name_Array.Length ==1)
{
str_content +=" 取"+ lot[0].Value +" "+ ID[0].Value +" 蓝膜:"+(amount.ToString("#0"))+"颗。 ";
}
}
else if(amount ==0.00)
{
amount =(Convert.ToDouble(all_amount[i]));
if(amount <=30000.00)
{
str =(String)product_name[i];
string[] str_name_Array = Regex.Split(str,@"/");
string get_str_ID =(String)list[i];
ID = match_ID.Matches(get_str_ID);
lot = match_lot.Matches(get_str_ID);
if(str_name_Array.Length ==3)
{
str_content +=" 取"+ lot[0].Value +" "+ ID[0].Value +" 剩下蓝膜:"+(amount.ToString("#0"))+"颗。 ";
}
if(str_name_Array.Length ==2)
{
str_content +=" 取"+ lot[0].Value +" "+ ID[0].Value +" 剩下蓝膜:"+(amount.ToString("#0"))+"颗。 ";
}
if(str_name_Array.Length ==1)
{
str_content +=" 取"+ lot[0].Value +" "+ ID[0].Value +" 剩下蓝膜:"+(amount.ToString("#0"))+"颗。 ";
}
}
}
}
Cell608.Text ='3'+  str_content;
for(i =0; i < list_num; i++)
{
str =(String)product_name[i];
if(str !="")
{
string[] strArray = Regex.Split(str,@"/");
if(strArray.Length ==3)
{
product_list.Add(strArray[1]);
}
if(strArray.Length ==2)
{
product_list.Add(strArray[0]);
}
if(strArray.Length ==1)
{
product_list.Add(strArray[0]);
}
}
}
for(i =0; i < lot_list.Count -1; i++)
{
for(j = i +1; j < lot_list.Count; j++)
{
if(lot_list[i].Equals(lot_list[j])&& product_list[i].Equals(product_list[j]))
{
lot_list.RemoveAt(j);
product_list.RemoveAt(j);
j--;
}
}
}
lot_num = lot_list.Count;
//CheckedListBox1.Items.Add(get_inventory_name);
int Inventory_sum;
for(i =0; i < lot_num; i++)
{
Inventory_sum =0;
str_lot =(String)lot_list[i];
str_product =(String)product_list[i];
for(j =0; j < list_num; j++)
{
str =(String)list[j];//
len = str.Length;
if(str.Contains(str_lot))
{
Inventory_sum = Convert.ToInt32(Inventory[j])+ Convert.ToInt32(all_amount[j])+ Inventory_sum;//所有wafer数量            index = str.IndexOf('#',1);
index = index +1;
str_id += str.Substring(index , len - index)+',';
sum +=1;
}
}
str_id = str_id.Substring(0,str_id.LastIndexOf(','));
string[] idArray = Regex.Split(str_id,@",");
int idTotal,a,b;
string temp;
idTotal = idArray.Length;
for( a =0; a < idTotal ; a++)
{
for( b = a+1; b < idTotal; b++)
{
if(Convert.ToDecimal(idArray[a])> Convert.ToDecimal(idArray[b]))
{
temp = idArray[a];
idArray[a]= idArray[b];
idArray[b]= temp;
}
}
}
str_id ="";
for(int k =0; k < idTotal; k++)
{
str_id=str_id+idArray[k].ToString()+',';
}
str_id = str_id.Substring(0,str_id.LastIndexOf(','));
CheckedListBox1.Items.Add(("Lot ID: "+ str_lot +"  Wafer ID: "+ str_id)+"  Wafer Total:"+ sum.ToString());
if(str_id !="")
{
if(table1 !=null)
{
//设置表格的边框颜⾊
table1.Border.Color = Color.Black;
//设置表格的border全显⽰
table1.Border.Lines = BorderLines.All;
TableRow row1 =new TableRow();
TableColumn col1 =new TableColumn();
TableCell cell1 =new TableCell();
TableCell cell2 =new TableCell();
TableCell cell3 =new TableCell();
TableCell cell4 =new TableCell();
TableCell cell5 =new TableCell();
TableCell cell6 =new TableCell();
TableCell cell7 =new TableCell();
TableCell cell8 =new TableCell();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。