dataview与datatable 以及水晶报表(c#版)

本文详细介绍了使用DataTable进行数据操作的方法,包括从DataGridView加载数据、更新数据并转换为XML格式,以及如何通过添加行实现DataGridView间的数据转移。此外,还展示了如何设置报表数据源并调用报表显示功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01、dataview->datatable->dataset->rptprint

 DataTable MTTable = new DataTable()
 MTTable = (DataTable)DataGridView2.DataSource;

  MTTable.TableName = "MTType";
            ds.Tables.Add(MTTable);
            ds.WriteXml("D:/MTType09.Xml", XmlWriteMode.WriteSchema);
              ds.WriteXml("D:/MTType03.Xml", XmlWriteMode.WriteSchema);
           //   PubFun.ViewReport(ds, "MTType");*/
     
           MTTable.WriteXml(Application.StartupPath + @"\Temp\MTType.xml", XmlWriteMode.WriteSchema);
                   ReportDocument rd = new ReportDocument();
                   if (!Directory.Exists(Application.StartupPath + @"\Temp\"))
                   {
                       Directory.CreateDirectory(Application.StartupPath + @"\Temp\");
                   }
                   File.Copy(PubFun.GetServersPath() + @"\CustomReports\" + "MTType" + ".rpt", Application.StartupPath + @"\Temp\" + "MTType" + ".rpt", true);
                   for (int i = 0; i < 100; i++)
                   {
                       Application.DoEvents();
                       System.Threading.Thread.Sleep(30);
                   }
                   rd.Load(Application.StartupPath + @"\Temp\" + "MTType" + ".rpt");
                   rd.SetDataSource(MTTable);

                ReportForm p = new ReportForm();
                   p.ShowReport(rd, "打印");

 

02、 datatable  实现dataview间行添加---(保留原数据类型)

DataTable dt = new DataTable();

//load


            dt.Columns.Add("订仓号", System.Type.GetType("System.String"));
            dt.Columns.Add("货柜序号", System.Type.GetType("System.String"));
            dt.Columns.Add("货柜号码", System.Type.GetType("System.String"));
            dt.Columns.Add("品名及规格", System.Type.GetType("System.String"));
            dt.Columns.Add("出货数量", System.Type.GetType("System.Int32"));
            dt.Columns.Add("D1", System.Type.GetType("System.String"));
            dt.Columns.Add("件数", System.Type.GetType("System.Int32"));
            dt.Columns.Add("D2", System.Type.GetType("System.String"));
            dt.Columns.Add("净重", System.Type.GetType("System.Int32"));
            dt.Columns.Add("D3", System.Type.GetType("System.String"));
            dt.Columns.Add("毛重", System.Type.GetType("System.Int32"));
            dt.Columns.Add("D4", System.Type.GetType("System.String"));
            dt.Columns.Add("申报日期", System.Type.GetType("System.DateTime"));
            dt.Columns.Add("编号", System.Type.GetType("System.String"));

//事件

    DataRow dr = dt.NewRow();
            //  DataGridView2.DataSource = dt
            //   DataGridViewSelectedRowsAddToOtherDGV(DataGridView1, DataGridView2, dataTable);
            foreach (DataGridViewRow dgvRow in DataGridView1.SelectedRows)
             {
              
                

                 dr["订仓号"] = dgvRow.Cells["订仓号"].Value;
                 dr["货柜序号"] = dgvRow.Cells["货柜序号"].Value;
                 dr["货柜号码"] = dgvRow.Cells["货柜号码"].Value;
                 dr["品名及规格"] = dgvRow.Cells["品名及规格"].Value;
                 
                dr["出货数量"] = dgvRow.Cells["出货数量"].Value;
                dr["D1"] = dgvRow.Cells["D1"].Value;
                dr["件数"] = dgvRow.Cells["件数"].Value;
                dr["D2"] = dgvRow.Cells["D1"].Value;
                dr["净重"] = dgvRow.Cells["净重"].Value;
                dr["D3"] = dgvRow.Cells["D2"].Value;
                dr["毛重"] = dgvRow.Cells["毛重"].Value;
                dr["D4"] = dgvRow.Cells["D3"].Value;
             
                 dr["申报日期"] = dgvRow.Cells["申报日期"].Value;
                 dr["编号"] = dgvRow.Cells["编号"].Value;
          
                dt.Rows.Add(dr);
 

            }
           this.DataGridView2.DataSource = dt;
 


        private void Delete_Click(object sender, EventArgs e)
        {
            DataGridView2.Rows.Remove(DataGridView2.SelectedRows[0]);
        }
 

 

03-VB版

 

----00000000000000000000000000000000003
    
        '更新打印编号
        Dim SqlNO As StringBuilder = New StringBuilder("")
        SqlNO.AppendLine("IF EXISTS (select Date01 from Ice.UD27 WHERE Date01 = CONVERT(CHAR(10), GETDATE(),120)) ")
        SqlNO.AppendLine("begin")
        SqlNO.AppendLine("UPDATE Ice.UD27 SET Key1 = Key1 +1  WHERE Key1<>''  AND Date01 =CONVERT(CHAR(10), GETDATE(),120) ")
        SqlNO.AppendLine("END ")
        SqlNO.AppendLine("ELSE ")
        SqlNO.AppendLine("INSERT INTO Ice.UD27 (Key1,Key2,Date01)  VALUES(000,N'码头',CONVERT(CHAR(10), GETDATE(),120))")
        db.ExecuteSql(SqlNO.ToString)

    '打印报表
        Try
    Dim mysql As StringBuilder = New StringBuilder("")
        mysql.AppendLine("select e.ShortChar06 订仓号,e.Key1+'-'+a.key2  as [货柜序号],'' as [货柜号码],a.Character02+ '/'+b.ShortChar06 as [品名及规格] ")
      mysql.AppendLine(" ,cast(a.Number04 as int)  [出货数量] ,CASE WHEN f.UOMCode ='PC'or f.UOMCode ='KG' THEN N'个' ELSE f.UOMDesc end  [D1] ")
      mysql.AppendLine(" ,cast(CASE WHEN a.Number10<>0 THEN a.Number10 ELSE  a.Number09 END as int)  [件数], N'箱'  [D2] ")
       mysql.AppendLine(",cast(CASE WHEN a.Number36<>0 OR a.CheckBox04=1 THEN a.Number36 ELSE c.NetWeight * a.Number04 END as int)  [净重], 'KG' D3 ")
       mysql.AppendLine(",cast(d.Number18 as int)  毛重, 'KG' D4")
      mysql.AppendLine(" ,d.Date12 申报日期,CONVERT(varchar,GETDATE(),112)+g.key1 [编号] ")
      mysql.AppendLine(" from UD28 a ")
      mysql.AppendLine(" inner  join UD104a e on  a.Key1 = e.Key1 and a.company=e.company AND A.KEY2=e.CHILDKEY1 ")
       mysql.AppendLine("left join part c with(nolock) on a.shortchar02 = c.partnum and c.company=a.company ")
       mysql.AppendLine("left join erp.UOM f on    c.company = f.company and c.ium =f. UOMCode ")
       mysql.AppendLine("left  JOIN UD104 d WITH(NOLOCK) ON a.Key1=d.Key1 and d.company='NSZ' ")
      mysql.AppendLine(" left join ud103a b with(nolock) on a.shortchar14=b.ChildKey1 and a.shortchar07=b.ChildKey3  and b.company = 'NSZ'  ")
       mysql.AppendLine("left join ice.ud27 g on  g.Date01 = CONVERT(varchar,GETDATE(),112)  and g.Key2 = N'码头' ")


    ' where d.Key1='GNU000456'
    'If fac_cust_search_id_txt.Text <> "" Then
    'mysql.AppendLine(" where d.Key1='" + fac_cust_search_id_txt.Text + "' ")
    'end if

    mysql.AppendLine("order by e.ShortChar06 desc,e.Key1 desc")

    Dim dtMT As DataTable = db.ExecuteDt(mysql.ToString)
    If oTrans.Session.UserID ="19862" Then Epicor.MIS.Pub.PubFun.MsgShow("提示",mysql.ToString)
'msgbox(dtfp.rows.count)
    'dtFP.Merge(FP)
    Dim ds As DataSet = New DataSet
    dtMT.TableName = "MTType"
    ds.Tables.Add(dtMT)
    ds.WriteXml("D:\MTType022.Xml",XmlWriteMode.WriteSchema)
    'msgbox(ds.tables("MTType02").Rows.Count)
    PubFun.ViewReport(ds, "MTType")
     Catch ex As Exception
            PubFun.MsgShow(ex.Message,System.Reflection.MethodBase.GetCurrentMethod)
     End Try
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星之擎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值