编程与数学 03-008 《看潮企业管理软件》项目开发 17 单据查询 4-2
- 三、窗体功能代码
-
- (一)第一部分
摘要:本文介绍了《看潮企业管理软件》中单据查询功能模型的设计与实现。该模块基于.NET WinForms框架和DevExpress控件库开发,采用主从表架构展示单据头和明细数据,支持动态表单生成、多条件查询、模板化打印及XML数据导出。系统实现了灵活的权限控制机制、个性化界面布局保存、以及图片附件管理功能,为企业ERP系统提供了完整的单据查询解决方案。
关键词:企业管理软件;单据查询;ERP系统;WinForms;DevExpress;动态表单;数据导出;权限控制
人工智能助手:DeepSeek、Kimi
三、窗体功能代码
(一)第一部分
/*
* 文件名称:Uf09Djcx.cs
* 功能概述:
* 本文件为 KcErp 系统中的一个窗体类,实现了“单据查询”功能。
* 该模块主要用于查询、展示和操作单据数据,支持多页签展示单据头信息,
* 以及 Grid 视图展示单据体明细。
* 功能包括:
* 1. 根据条件查询单据列表
* 2. 逐张浏览查询结果,支持前后翻页
* 3. 展示单据头和单据体的详细信息
* 4. 支持单据打印、预览、连续打印
* 5. 支持单据数据导出为 XML 格式
* 6. 支持图片和附件文件操作(查看、下载等)
* 7. 支持自定义查询条件保存与载入
* 主要技术特点:
* – 使用 DevExpress 控件库构建界面
* – 采用 LayoutControl 动态生成表单页签
* – 使用 GridView 展示单据体列表
* – 支持打印模板动态加载与数据绑定
* – 具备界面布局保存与恢复功能
*/
using DevExpress.Utils.Menu;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraLayout;
using DevExpress.XtraReports.UI;
using DevExpress.XtraRichEdit;
using DevExpress.XtraTab;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using static KcErp.KcDb;
using static KcErp.KcDybjsb;
using static KcErp.KcEditfm;
using static KcErp.KcEditgd;
using static KcErp.KcFile;
using static KcErp.KcMain;
namespace KcErp
{
public partial class Uf09Djcx : DevExpress.XtraEditors.XtraForm
{
#region "public"
// 公共字段,用于传递和存储功能参数
public string fdjmc; // 单据名称
public string fgnbh; // 功能编号
public string fgnmc; // 功能名称
public string ft1; // 功能表1(单据主表)
public string ft1dj; // 登记字段
public int ft1ecol; // 编辑列数
public string ft1list; // 主表字段列表
public string ft1oid; // 主表主键字段
public string ft1order; // 主表排序字段
//
public string ft1qj; // 期间字段
public string ft1sh; // 审核字段
public string ft1tz; // 制单字段
//
//
//
public string ft1where; // 主表查询条件
public string ft2; // 功能表2(单据明细表)
public string ft2list; // 明细表字段列表
public string ft2mdzd; // 码段字段列表
//编辑列数
public string ft2mid; // 明细表主键字段
public string ft2nryc; // 不需要显示的字段列表
public string ft2oid; // 明细表外键字段(关联主表)
public string ft2order; // 明细表排序字段
public string ft2qj; // 明细表期间字段
//码段输入字段列表
public string ft2tpzd; // 图片字段列表
//
public string ft2where; // 明细表查询条件
public string ftbb; // 功能表版本
public string fxz; // 限制权限字符串
//图片文件输入字段列表
public List<string> listoid = new List<string>(); // 查询结果主键列表
public string ljoid; // 链接传递过来的单据ID
public bool sfljcx = false; // 是否链接查询标志
#endregion
#region "dim"
// 内部变量
int djcxzs; // 单件最大查询张数
int dqdjh = –1; // 当前单据号(索引)
int dqdjs = 0; // 当前查询结果总张数
DataTable dqdt2; // 当前单据明细数据表
string dqmid = ""; // 当前明细ID
int dqmrow = –1; // 当前明细行索引
string dqoid = ""; // 当前单据ID
DataTable dt1; // 主表数据临时存储
DataTable dt2; // 明细表数据临时存储
DataTable dttj1; // 查询条件数据表
DataTable dtzd1; // 主表字段定义
DataTable dtzd2; // 明细表字段定义
bool fh = false; // 返回标志
string[] ft1fd; // 主表字段数组
string ft1wjzd = ""; // 主表文件字段列表
//字段列表数组
string[] ft2fd; // 明细表字段数组
//ft1文件字段
string ft2wjzd = ""; // 明细表文件字段列表
bool hasdjmc = false; // 是否有单据名字段
string jzzd = ""; // 禁止字段列表
string[] listft2sx; // 明细表属性列表
//单件最大查询张数
bool loaderr = false; // 加载错误标志
bool loadfm = false; // 表单加载中标志
bool loading = false; // 数据加载中标志
GridView mtgv = new GridView(); // 单据体主数据表视图
//单件装载中
//表单装载中
//ft2文件字段
bool sctj = false; // 是否清除条件
bool sfzf; // 是否作废标志
bool sfzr; // 是否载入标志
bool xzdc; // 是否允许导出
//编辑、打印、参考、文件、导出
bool xzdy; // 是否允许打印
bool xzwj; // 是否允许文件操作
//是否载入
//是否作废
//单件体主数据表视图
string zrtjstr = ""; // 查询条件字符串
#endregion
// 布局控件和图片控件用于动态生成界面
private LayoutControl mdlc = new LayoutControl();
private PictureEdit tpedit = new PictureEdit();
private LayoutControl tplc = new LayoutControl();
/// <summary>
/// 构造函数,初始化控件并绑定事件
/// </summary>
public Uf09Djcx()
{
InitializeComponent();
this.Load += Form_load;
this.Disposed += Form_disposed;
this.Closing += Form_closing;
this.FormClosed += Form_FormClosed;
this.Btpg1.Click += this.Btpg1_itemclick;
this.Btpg2.Click += this.Btpg2_itemclick;
this.Btpg3.Click += this.Btpg3_itemclick;
this.Btpg4.Click += this.Btpg4_itemclick;
this.BarZR.ItemClick += Barzr_itemclick;
this.VisibleChanged += Fm_visiblechanged;
BarHelp.ItemClick += Barhelp_itemclick;
Barexit.ItemClick += Barexit_itemclick;
BarPreview.ItemClick += Barpreview_itemclick;
BarPrint.ItemClick += Barprint_itemclick;
BarFullPrint.ItemClick += Barfullprint_itemclick;
BarFullPreview.ItemClick += Barfullpreview_itemclick;
Barwjdc.ItemClick += Barwjdc_itemclick;
BarCZ.ItemClick += (s, e) => Textss();
}
/// <summary>
/// 静态方法:从数据行加载数据到布局控件的编辑控件中
/// </summary>
private static void Fmecload(ref LayoutControl lcrt, ref DataRow dr)
{
LayoutControlGroup lc = lcrt.Root;
string[] itag;
for (int lt = 0; lt < lc.Items.Count; lt++)
{
itag = lc.Items[lt].Tag.ToString().Split(',');
if (itag.Length == 5)
{
LayoutControlItem ci = lc.Items[lt] as LayoutControlItem;
if (ci != null)
{
if (itag[1] == "richtextedit" || itag[1] == "richtextread")
{
// 处理富文本控件
RichEditControl rtfc = ci.Control as RichEditControl;
if (dr[itag[2]] != null)
{
rtfc.RtfText = dr[itag[2]].ToString();
}
else
{
rtfc.RtfText = "";
}
rtfc.ReadOnly = true;
}
else
{
// 处理普通编辑控件
BaseEdit ec = ci.Control as BaseEdit;
if (dr[itag[2]] != null)
{
ec.EditValue = dr[itag[2]];
}
else
{
ec.EditValue = DBNull.Value;
}
ec.Properties.ReadOnly = true;
}
}
}
}
}
/// <summary>
/// 静态方法:清空布局控件中所有编辑控件的值
/// </summary>
private static void Fmxmcls(ref LayoutControl lcrt, ref bool rw)
{
LayoutControlGroup lc = lcrt.Root;
string[] itag;
for (int lt = 0; lt < lc.Items.Count; lt++)
{
itag = lc.Items[lt].Tag.ToString().Split(',');
if (itag.Length == 5)
{
LayoutControlItem ci = lc.Items[lt] as LayoutControlItem;
if (ci != null)
{
if (itag[1] == "richtextedit" || itag[1] == "richtextread")
{
RichEditControl rtfc = ci.Control as RichEditControl;
rtfc.RtfText = "";
rtfc.ReadOnly = rw;
if (!rw)
{
rtfc.ReadOnly = (itag[1].Contains("read"));
}
}
BaseEdit ec = ci.Control as BaseEdit;
if (ec != null)
{
// 根据数据类型设置默认值
switch (itag[3])
{
case "char":
case "nchar":
case "text":
case "ntext":
case "varchar":
case "nvarchar":
ec.EditValue = "";
break;
case "int":
case "smallint":
case "bigint":
case "decimal":
case "numeric":
case "float":
case "real":
ec.EditValue = 0;
break;
case "date":
case "datetime":
case "datetime2":
case "smalldatetime":
case "datetimeofset":
ec.EditValue = Getywdate();
break;
case "time":
ec.EditValue = DateTime.Now.TimeOfDay;
break;
case "bit":
ec.EditValue = false;
break;
case "binary":
case "image":
ec.EditValue = DBNull.Value;
break;
default:
ec.EditValue = DBNull.Value;
break;
}
ec.Properties.ReadOnly = rw;
if (!rw)
{
ec.Properties.ReadOnly = (itag[1].Contains("read"));
}
}
}
}
}
}
/// <summary>
/// 静态方法:设置布局控件中所有编辑控件的只读属性
/// </summary>
private static void Fmxmec(ref LayoutControl lcrt, ref bool rw)
{
LayoutControlGroup lc = lcrt.Root;
string[] itag;
for (int lt = 0; lt < lc.Items.Count; lt++)
{
itag = lc.Items[lt].Tag.ToString().Split(',');
if (itag.Length == 5)
{
LayoutControlItem ci = lc.Items[lt] as LayoutControlItem;
if (ci != null)
{
if (itag[1] == "richtextedit" || itag[1] == "richtextread")
{
RichEditControl rtfc = ci.Control as RichEditControl;
rtfc.ReadOnly = rw;
if (!rw)
{
rtfc.ReadOnly = (itag[1].Contains("read"));
}
}
BaseEdit ec = ci.Control as BaseEdit;
ec.Properties.ReadOnly = rw;
if (!rw)
{
ec.Properties.ReadOnly = (itag[1].Contains("read"));
}
}
}
}
}
/// <summary>
/// 根据当前状态更新工具栏按钮的启用状态
/// </summary>
private void Barenabled()
{
BarZR.Enabled = true;
BarPreview.Enabled = sfzr && xzdy;
BarPrint.Enabled = sfzr && xzdy;
Btpg1.Enabled = dqdjs > 0 && dqdjh != 0;
Btpg2.Enabled = dqdjs > 0 && dqdjh != 0;
Btpg3.Enabled = dqdjs > 0 && dqdjh != dqdjs – 1;
Btpg4.Enabled = dqdjs > 0 && dqdjh != dqdjs – 1;
Barwjdc.Enabled = sfzr && dqdjs > 0 && xzdc;
}
/// <summary>
/// 返回上级窗口按钮点击事件
/// </summary>
private void Barexit_itemclick(object sender, ItemClickEventArgs e)
{
try
{
SaveFmSet();
fh = true;
this.Close();
}
catch (Exception ex)
{
MsgExShow("返回上级窗口", ex.Message, ex.Source, ex.StackTrace);
}
}
/// <summary>
/// 连续打印预览按钮点击事件
/// </summary>
private void Barfullpreview_itemclick(object sender, ItemClickEventArgs e)
{
Dofullprintdj(2);
}
/// <summary>
/// 连续打印按钮点击事件
/// </summary>
private void Barfullprint_itemclick(object sender, ItemClickEventArgs e)
{
Dofullprintdj(1);
}
/// <summary>
/// 帮助按钮点击事件
/// </summary>
private void Barhelp_itemclick(object sender, ItemClickEventArgs e)
{
RunHelpyy(this, fgnmc, pSFSJ);
}
/// <summary>
/// 预览按钮点击事件
/// </summary>
private void Barpreview_itemclick(object sender, ItemClickEventArgs e)
{
Doprintdj(2);
}
/// <summary>
/// 打印按钮点击事件
/// </summary>
private void Barprint_itemclick(object sender, ItemClickEventArgs e)
{
Doprintdj(1);
}
/// <summary>
/// 文件导出按钮点击事件
/// </summary>
private void Barwjdc_itemclick(object sender, ItemClickEventArgs e)
{
try
{
if (listoid.Count <= 0)
{
MsgOxShow("没用查询结果,无法导出");
return;
}
FmDJFW fmfw = new FmDJFW();
short ksh = 0;
short jsh = 0;
using (fmfw)
{
fmfw.T1.Text = "1";
fmfw.T2.Text = listoid.Count.ToString();
fmfw.ShowDialog(this);
if (!fmfw.sfok)
{
fmfw.Dispose();
return;
}
ksh = Convert.ToInt16(fmfw.T1.Text);
jsh = Convert.ToInt16(fmfw.T2.Text);
if (jsh > listoid.Count)
{
jsh = (short)listoid.Count;
}
if (ksh > jsh || ksh <= 0)
{
fmfw.Dispose();
return;
}
}
fmfw.Dispose();
string dcoid = "";
for (int r = ksh – 1; r <= jsh – 1; r++)
{
dcoid += " (" + listoid[r] + ") ";
}
string dcsql1, dcsql2;
DataSet dsdc = new DataSet();
DataTable dcdt1;
dcsql1 = "select " + ft1list + " from " + ft1 + " where '" + dcoid + "' like '%('||" + ft1oid + "||')%' order by " + ft1order;
dcdt1 = KcDb.DtRead(dcsql1);
dcdt1.TableName = ft1;
dsdc.Tables.Add(dcdt1.Copy());
dsdc.Tables[0].TableName = ft1;
DataTable dcdt2;
dcsql2 = "select " + ft2list + " from " + ft2 + " where '" + dcoid + "' like '%('||" + ft1oid + "||')%' order by " + ft2order;
dcdt2 = KcDb.DtRead(dcsql2);
dcdt2.TableName = ft2;
dcdt2.AcceptChanges();
dsdc.Tables.Add(dcdt2.Copy());
dsdc.Tables[1].TableName = ft2;
dsdc.Tables[0].AcceptChanges();
dsdc.Tables[1].AcceptChanges();
string ksoid = listoid[ksh – 1];
string jsoid = listoid[jsh – 1];
SaveFileDialog ofd = new SaveFileDialog();
ofd.Filter = "xml文件|*.xml";
ofd.InitialDirectory = pFilesXml;
ofd.FileName = pDBmc + fdjmc.ToString().Trim() + " " + ksoid + " 至 " + jsoid + " 共 " + (jsh – ksh + 1).ToString().Trim() + " 张" + ".xml";
if (ofd.ShowDialog() == DialogResult.OK)
{
dsdc.WriteXml(ofd.FileName, XmlWriteMode.WriteSchema);
MsgXxShow(ofd.FileName + "导出完成");
}
dcdt1 = null;
dcdt2 = null;
dsdc = null;
ofd = null;
}
catch (Exception ex)
{
MsgExShow("文件导出", ex.Message, ex.Source, ex.StackTrace);
}
}
/// <summary>
/// 载入按钮点击事件
/// </summary>
private void Barzr_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
sfzr = true;
Dtzr();
}
/// <summary>
/// 首页按钮点击事件
/// </summary>
private void Btpg1_itemclick(object sender, EventArgs e)
{
if (dqdjs > 0)
{
dqdjh = 0;
Djload();
}
else
{
Fmxmclear(true);
if (ft2 != "")
{
mtgv.OptionsBehavior.ReadOnly = true;
Gvclear(ref mtgv);
}
Barenabled();
}
}
/// <summary>
/// 上一张按钮点击事件
/// </summary>
private void Btpg2_itemclick(object sender, EventArgs e)
{
if (dqdjs > 0 && dqdjh > 0)
{
dqdjh -= 1;
Djload();
}
}
/// <summary>
/// 下一张按钮点击事件
/// </summary>
private void Btpg3_itemclick(object sender, EventArgs e)
{
if (dqdjs > 0 && dqdjh < dqdjs – 1)
{
dqdjh += 1;
Djload();
}
}
/// <summary>
/// 末页按钮点击事件
/// </summary>
private void Btpg4_itemclick(object sender, EventArgs e)
{
if (dqdjs > 0)
{
dqdjh = dqdjs – 1;
Djload();
}
else
{
Fmxmclear(true);
if (ft2 != "")
{
mtgv.OptionsBehavior.ReadOnly = true;
Gvclear(ref mtgv);
}
Barenabled();
}
}
/// <summary>
/// 单据体Grid视图行焦点改变事件,更新状态栏显示
/// </summary>
private void Dj_focusedrowchanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
if (mtgv.FocusedRowHandle < 0) return;
try
{
Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + listoid.Count.ToString().Trim() + "张][" + (mtgv.FocusedRowHandle + 1).ToString().Trim() + "/" + mtgv.RowCount.ToString().Trim() + "行]";
}
catch (Exception)
{
}
}
/// <summary>
/// 加载当前单据数据(主表和明细表)
/// </summary>
private void Djload()
{
try
{
loadfm = true;
if (dqdjh < 0)
{
// 没有单据时清空界面
Fmxmrw(true);
Lctz.Text = "";
Lcdj.Text = "";
Lczs.Text = "0/0";
dqoid = "";
Barenabled();
loadfm = false;
return;
}
dqoid = listoid[dqdjh];
string sql1 = "select " + ft1list + " from " + ft1 + " where " + ft1oid + "='" + dqoid + "'";
dt1 = KcDb.DtRead(sql1);
string sql2 = "select " + ft2list + " from " + ft2 + " where " + ft2oid + "='" + dqoid + "' order by " + ft2order;
dt2 = KcDb.DtRead(sql2);
Baroid.EditValue = dt1.Rows[0][ft1oid].ToString();
Bardjqj.EditValue = dt1.Rows[0][ft1qj].ToString();
dqoid = Baroid.EditValue.ToString();
Fmxmload(); // 加载主表数据到界面
if (ft1tz != "") Lctz.Text = " 制单:" + dt1.Rows[0][ft1tz].ToString();
if (ft1sh != "") Lcsh.Text = " 审核:" + dt1.Rows[0][ft1sh].ToString();
if (ft1dj != "") Lcdj.Text = " 登记:" + dt1.Rows[0][ft1dj].ToString();
Lczs.Text = (dqdjh + 1).ToString().Trim() + "/" + listoid.Count.ToString().Trim();
if (dt2.Rows.Count > 0)
{
sfzf = false;
dqdt2.Rows.Clear();
for (int r = 0; r < dt2.Rows.Count; r++)
{
DataRow nrow = dqdt2.NewRow();
nrow = Copyrowcx(nrow, dt2.Rows[r]);
dqdt2.Rows.Add(nrow);
}
dqdt2.AcceptChanges();
}
else
{
if (dqdjs > 0)
{
dqdt2.Rows.Clear();
sfzf = true;
}
}
mtgv.RefreshData();
mtgv.OptionsBehavior.ReadOnly = true;
if (listoid.Count > 0)
{
Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + listoid.Count.ToString().Trim() + "张][" +
(mtgv.RowCount <= 0 ? "0/0" : (mtgv.FocusedRowHandle + 1).ToString().Trim() + "/" + mtgv.RowCount.ToString().Trim()) + "行]";
}
Barenabled();
loadfm = false;
}
catch (Exception ex)
{
MsgExShow("加载单据[" + dqoid + "]", ex.Message, ex.Source, ex.StackTrace);
}
}
/// <summary>
/// 单据体Grid视图键盘事件,支持列宽调整和列锁定
/// </summary>
private void Djview_keydown(object sender, KeyEventArgs e)
{
if (mtgv.RowCount > 0)
{
if ((e.KeyCode == Keys.Add) && (e.Modifiers == Keys.Control))
{
try
{
mtgv.FocusedColumn.Width = pMaxWt;
}
catch (Exception ex)
{
MsgExShow("设置最大列宽", ex.Message, ex.Source, ex.StackTrace);
return;
}
}
if ((e.KeyCode == Keys.Subtract) && (e.Modifiers == Keys.Control))
{
try
{
mtgv.FocusedColumn.Width = pMinWt;
}
catch (Exception ex)
{
MsgExShow("设置最小列宽", ex.Message, ex.Source, ex.StackTrace);
return;
}
}
}
try
{
if ((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) && (e.Modifiers == Keys.Control))
{
int maxcol = (mtgv.VisibleColumns.Count – 1 < 10) ? mtgv.VisibleColumns.Count – 1 : 9;
for (int i = maxcol; i >= 0; i—)
{
mtgv.VisibleColumns[i].Fixed = FixedStyle.None;
}
if (e.KeyCode > Keys.D0)
{
for (int i = 0; i <= (((int)e.KeyCode – 49) < mtgv.VisibleColumns.Count – 2 ? ((int)e.KeyCode – 49) : mtgv.VisibleColumns.Count – 2); i++)
{
mtgv.VisibleColumns[i].Fixed = FixedStyle.Left;
}
}
}
}
catch (Exception ex)
{
MsgExShow("锁定或取消锁定列", ex.Message, ex.Source, ex.StackTrace);
}
}
/// <summary>
/// 执行连续打印操作
/// </summary>
private void Dofullprintdj(int sfdy)
{
try
{
int fw1, fw2, fw3;
string fw = XtraInputBox.Show(
"请输入连续打印的范围,使用数字表示,中间用短横表示,如 1-9 表示打印第1张至第9张单据",
"连续打印",
"1-" + listoid.Count.ToString().Trim());
string[] arrfw = fw.Split('-');
if (arrfw.Length == 2)
{
fw1 = Convert.ToInt32(arrfw[0]);
fw2 = Convert.ToInt32(arrfw[1]);
fw3 = listoid.Count;
if (fw1 <= 0 || fw1 > fw3 || fw2 < 0 || fw2 > fw3 || fw2 < fw1)
{
return;
}
}
else
{
return;
}
if (dqdjs > 0)
{
for (int r = fw1; r <= fw2; r++)
{
if (r <= dqdjs)
{
dqdjh = (r – 1);
Djload();
Doprintdj((short)sfdy);
}
}
}
else
{
return;
}
}
catch (Exception ex)
{
MsgExShow("单据连续打印", ex.Message, ex.Source, ex.StackTrace);
}
}
/// <summary>
/// 执行单张单据打印操作
/// </summary>
private void Doprintdj(short sfdy)
{
try
{
if (Bardymb.EditValue == null)
{
MsgOxShow("没有可用的打印模板");
return;
}
XtraReport xr = new XtraReport();
string mbname = Bardymb.EditValue.ToString().Trim();
if (mbname == "")
{
MsgOxShow("没有可用的打印模板");
return;
}
MemoryStream dystream = Mbstream(mbname);
if (dystream == null)
{
MsgOxShow("打印模板没有找到");
return;
}
xr = XtraReport.FromXmlStream(dystream, true);
if (xr == null)
{
MsgOxShow("打印模板没有设计完成");
return;
}
xr.Name = mbname;
xr.PrinterName = pPrinterName;
bool sfbq = false;
if (mbname.IndexOf("卡片") > 0 || mbname.IndexOf("标签") > 0)
{
sfbq = true;
}
DataSet dssj = new DataSet();
DataTable dstb1 = new DataTable();
DataTable dstb2 = new DataTable();
dstb1 = null;
if (dstb1 == null)
{
dstb1 = dt1.Copy();
}
string t1wjzd = "tp1,tp2,tp3,wj1,wj2,wj3";
if (ft1wjzd.Length > 1)
{
string[] wjzd = (ft1wjzd + "," + t1wjzd).Split(',');
for (int k = 0; k < wjzd.Length; k++)
{
if (dstb1.Columns.IndexOf(wjzd[k]) < 0)
{
wjzd[k] = "";
}
}
string wjm = "";
for (int f = 0; f < wjzd.Length; f++)
{
if (wjzd[f].Trim() != "")
{
for (int r = 0; r < dstb1.Rows.Count; r++)
{
if (dstb1.Rows[r][wjzd[f]] != DBNull.Value)
{
wjm = dstb1.Rows[r][wjzd[f]].ToString().Trim();
if (wjm != "")
{
FileOL_Down(this, ft1, wjzd[f], wjm);
dstb1.Rows[r][wjzd[f]] = pFilesLC + "\\\\" + wjm;
}
}
}
}
}
}
dstb1.TableName = "t1";
dstb1.AcceptChanges();
dssj.Merge(dstb1);
if (sfbq)
{
dstb2 = null;
if (dstb2 == null)
{
dstb2 = dqdt2.Copy();
}
}
else
{
dstb2 = null;
if (dstb2 == null)
{
dstb2 = dqdt2.Copy();
}
}
string t2wjzd = "tp1,tp2,tp3,wj1,wj2,wj3";
if (ft2wjzd.Length > 1)
{
string[] wjzd = (ft2wjzd + "," + t2wjzd).Split(',');
for (int k = 0; k < wjzd.Length; k++)
{
if (dstb2.Columns.IndexOf(wjzd[k]) < 0)
{
wjzd[k] = "";
}
}
string wjm = "";
for (int f = 0; f < wjzd.Length; f++)
{
if (wjzd[f].Trim() != "")
{
for (int r = 0; r < dstb2.Rows.Count; r++)
{
if (dstb2.Rows[r][wjzd[f]] != DBNull.Value)
{
wjm = dstb2.Rows[r][wjzd[f]].ToString();
if (wjm != "")
{
FileOL_Down(this, ft2, wjzd[f], wjm);
dstb2.Rows[r][wjzd[f]] = pFilesLC + "\\\\" + wjm;
}
}
}
}
}
}
dstb2.TableName = "t2";
dstb2.AcceptChanges();
dssj.Merge(dstb2);
string bbname = mbname;
if (bbname.IndexOf("分组") > 0)
{
try
{
DataTable dstb0 = new DataTable();
DataTable dstb3 = new DataTable();
dstb0 = null;
dstb3 = null;
if (dstb3 != null)
{
dstb3.TableName = "t3";
dssj.Merge(dstb3);
}
if (dstb0 != null && dstb0.Rows.Count > 0)
{
string rl, t1, id1, t2, id2;
for (int r = 0; r < dstb0.Rows.Count; r++)
{
rl = dstb0.Rows[r]["rl"].ToString();
t1 = dstb0.Rows[r]["t1"].ToString();
id1 = dstb0.Rows[r]["id1"].ToString();
t2 = dstb0.Rows[r]["t2"].ToString();
id2 = dstb0.Rows[r]["id2"].ToString();
dssj.Relations.Add(rl,
dssj.Tables[t1].Columns[id1],
dssj.Tables[t2].Columns[id2]);
}
}
dstb0 = null;
dstb3 = null;
}
catch (Exception ex)
{
MsgExShow(bbname + "打开模板分组数据", ex.Message, ex.Source, ex.StackTrace);
}
}
dssj.DataSetName = "dataset1";
xr.DataSource = dssj;
DyBjSb(ref xr);
if (sfdy == 1)
{
xr.Print();
}
if (sfdy == 2)
{
xr.ShowPreviewDialog();
}
dstb1 = null;
dstb2 = null;
dssj = null;
KcDb.DBclose();
}
catch (Exception ex)
{
MsgExShow("单据打印", ex.Message, ex.Source, ex.StackTrace);
}
}
}
}
