网络打印

guanshenglang 2010-06-12 07:17:47
关于网络打印:
1.如何列举局域网网络打印机共享名称?
2.如何列举指定IP的电脑上的打印机的共享名称?
3.如何直接向打印机发送控制符(如:ESC $21 $12)?
4.如何直接利用打印机内部字库打印,这样比图形打印要快?
5.如何同时(给定时间内)向多台打印机发送打印内容?

问题1,2的目的:让用户方便设定打印机;
问题3,4的目的:用于连续不定长度页面的打印,如POS机打印;
问题5的目的:用于多台打印机同时分别输出不同内容,用于餐饮系统厨房打印;

问题1,2解决后,问题3,4就可以解决:
各位高手指点!
...全文
874 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
alinly21 2012-06-08
  • 打赏
  • 举报
回复
楼主 搞定没?能否给小弟个源码 着急用 alinly21@163.com 跪谢!!!!!!!!1
至尊贱客 2011-08-17
  • 打赏
  • 举报
回复
贴点代码就成神人了。。。。。。。。 - -||
zjq8888882009 2011-08-16
  • 打赏
  • 举报
回复
膜拜神人。
hui_play 2011-08-16
  • 打赏
  • 举报
回复
upp
meitp365 2011-08-16
  • 打赏
  • 举报
回复
高手啊!
sinry_wlm 2011-01-11
  • 打赏
  • 举报
回复
都是高手啊
扎根梦想 2011-01-11
  • 打赏
  • 举报
回复
你是用什么语言开发,我这有VC的代码,也许可你帮你解决1,2,5三个问题
afeng124 2010-06-16
  • 打赏
  • 举报
回复
2.如何列举指定IP的电脑上的打印机的共享名称?
3.如何直接向打印机发送控制符(如:ESC $21 $12)?
4.如何直接利用打印机内部字库打印,这样比图形打印要快?
5.如何同时(给定时间内)向多台打印机发送打印内容?
--------------------------------------------
对于第一条不建议采取枚举网络打印的方法,有不确定性,网络打印机一般有IP,监听的端口是9001,你可以开一个socket确定一个IP段来逐个测试,如果能连上的应该就是网络打印机。
2.使用任意一家打印机厂家的支持POS/ESC支持的二次开发包,比如我用的北洋的,支持网口POS指令,
并且能实时获取打印机状态。
3.同第2条
4.同第2条
5.同第2条,使用多线程
总体上来说我的应该是个很烂的建议,但是使用ESC指令的话,这应该是个稍微可行的办法了。

http://blog.csdn.net/afeng124/archive/2010/05/20/5610614.aspx
C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
捷哥1999 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 guanshenglang 的回复:]
关于网络打印:
1.如何列举局域网网络打印机共享名称?
2.如何列举指定IP的电脑上的打印机的共享名称?
3.如何直接向打印机发送控制符(如:ESC $21 $12)?
4.如何直接利用打印机内部字库打印,这样比图形打印要快?
5.如何同时(给定时间内)向多台打印机发送打印内容?

问题1,2的目的:让用户方便设定打印机;
问题3,4的目的:用于连续不定长度页……
[/Quote]

好问题!

参考资料:
如何列举指定IP的电脑上的打印机的共享名称?
Choosing a printer when printing from Crystal Reports in C#

如何列举局域网网络打印机共享名称?
Set Default Printer based on the Network that the System Connected

足球中国 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 guanshenglang 的回复:]
关于网络打印:
1.如何列举局域网网络打印机共享名称?
2.如何列举指定IP的电脑上的打印机的共享名称?
3.如何直接向打印机发送控制符(如:ESC $21 $12)?
4.如何直接利用打印机内部字库打印,这样比图形打印要快?
5.如何同时(给定时间内)向多台打印机发送打印内容?

问题1,2的目的:让用户方便设定打印机;
问题3,4的目的:用于连续不定长度页……
[/Quote]楼主的思路不错,可以做。直接写代码就可以了。
iland9876543210 2010-06-16
  • 打赏
  • 举报
回复
学习并帮顶
xk1126 2010-06-16
  • 打赏
  • 举报
回复

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.IO ;
using System.Drawing.Printing ;
public class Form1 : Form
{ private RichTextBox richTextBox1 ;
private Button button1 ;
private Button button2 ;
private Button button3 ;
private Button button4 ;
private Button button5 ;
private OpenFileDialog openFileDialog1 ;
private SaveFileDialog saveFileDialog1 ;
private PrintDialog printDialog1 ;
private PrintDocument ThePrintDocument ;
private PrintPreviewDialog printPreviewDialog1 ;
private StringReader myReader ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{ //初始化窗体中的各个组件
InitializeComponent ( ) ;
} //清除程序中使用多的资源
protected override void Dispose ( bool disposing )
{ if ( disposing )
{ if ( components != null )
{ components.Dispose ( ) ;
} }
base.Dispose ( disposing ) ;
} private void InitializeComponent ( )
{ richTextBox1 = new RichTextBox ( ) ;
button1 = new Button ( ) ;
button2 = new Button ( ) ;
button3 = new Button ( ) ;
button4 = new Button ( ) ;
button5 = new Button ( ) ;
saveFileDialog1 = new SaveFileDialog ( ) ;
openFileDialog1 = new OpenFileDialog ( ) ;
printPreviewDialog1 = new PrintPreviewDialog ( ) ;
printDialog1 = new PrintDialog ( ) ;
ThePrintDocument = new PrintDocument ( ) ;
ThePrintDocument.PrintPage += new PrintPageEventHandler ( ThePrintDocument_PrintPage ) ;
SuspendLayout ( ) ;
richTextBox1.Anchor = AnchorStyles.None ;
richTextBox1.Name = "richTextBox1" ;
richTextBox1.Size = new Size ( 448 , 280 ) ;
richTextBox1.TabIndex = 0 ;
richTextBox1.Text = "" ;
button1.Anchor = AnchorStyles.None ;
button1.Location = new Point ( 41 , 289 ) ;
button1.Name = "button1" ;
button1.Size = new Size ( 48 , 30 ) ;
button1.TabIndex = 1 ;
button1.Text = "打开" ;
button1.Click += new System.EventHandler ( button1_Click ) ;
button2.Anchor = AnchorStyles.None ;
button2.Location = new Point ( 274 , 288 ) ;
button2.Name = "button2" ;
button2.Size = new Size ( 48 , 30 ) ;
button2.TabIndex = 4 ;
button2.Text = "预览" ;
button2.Click += new System.EventHandler ( button2_Click ) ;
button3.Anchor = AnchorStyles.None ;
button3.Location = new Point ( 108 , 288 ) ;
button3.Name = "button3" ;
button3.Size = new Size ( 48 , 30 ) ;
button3.TabIndex = 2 ;
button3.Text = "保存" ;
button3.Click += new System.EventHandler ( button3_Click ) ;
button4.Anchor = AnchorStyles.None ;
button4.Location = new Point ( 174 , 288 ) ;
button4.Name = "button4" ;
button4.Size = new Size ( 80 , 30 ) ;
button4.TabIndex = 3 ;
button4.Text = "打印机设置" ;
button4.Click += new System.EventHandler ( button4_Click ) ;
button5.Anchor = AnchorStyles.None ;
button5.Location = new Point ( 345 , 288 ) ;
button5.Name = "button5" ;
button5.Size = new Size ( 48 , 30 ) ;
button5.TabIndex = 5 ;
button5.Text = "打印" ;
button5.Click += new System.EventHandler ( button5_Click ) ;
saveFileDialog1.DefaultExt = "*.txt" ;
saveFileDialog1.FileName = "file.txt" ;
saveFileDialog1.InitialDirectory = "c:\\" ;
saveFileDialog1.Title = "另存为!" ;
openFileDialog1.DefaultExt = "*.txt" ;
openFileDialog1.FileName = "file.txt" ;
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Title = "打开文本文件!" ;
AutoScaleBaseSize = new Size ( 6 , 14 ) ;
ClientSize = new Size ( 448 , 325 ) ;
this.Controls.Add ( button1 ) ;
this.Controls.Add ( button2 ) ;
this.Controls.Add ( button3 ) ;
this.Controls.Add ( button4 ) ;
this.Controls.Add ( button5 ) ;
this.Controls.Add ( richTextBox1 ) ;
this.MaximizeBox = false ;
this.Name = "Form1" ;
this.Text = "C#来操作文本文件" ;
this.ResumeLayout ( false ) ;
} static void Main ( )
{ Application.Run ( new Form1 ( ) ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{ try
{ if ( openFileDialog1.ShowDialog ( ) == DialogResult.OK )
{ FileStream fs = new FileStream ( openFileDialog1.FileName , FileMode.Open , FileAccess.Read ) ;
StreamReader m_streamReader = new StreamReader ( fs ) ;
//使用StreamReader类来读取文件
m_streamReader.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ;
// 从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容
this.richTextBox1.Text = "" ;
string strLine = m_streamReader.ReadLine ( ) ;
while ( strLine != null )
{ this.richTextBox1.Text += strLine + "\n" ;
strLine = m_streamReader.ReadLine ( ) ;
} //关闭此StreamReader对象
m_streamReader.Close ( ) ;
}
} catch ( Exception em )
{ Console.WriteLine ( em.Message.ToString ( ) ) ;
}
}
private void button3_Click ( object sender , System.EventArgs e )
{ try
{ //获得另存为的文件名称
if ( saveFileDialog1.ShowDialog ( ) == DialogResult.OK )
{
//创建一个文件流,用以写入或者创建一个StreamWriter
FileStream fs = new FileStream ( @saveFileDialog1.FileName , FileMode.OpenOrCreate , FileAccess.Write ) ;
StreamWriter m_streamWriter = new StreamWriter ( fs ) ;
m_streamWriter.Flush ( ) ;
// 使用StreamWriter来往文件中写入内容
m_streamWriter.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ;
// 把richTextBox1中的内容写入文件
m_streamWriter.Write ( richTextBox1.Text ) ;
//关闭此文件
m_streamWriter.Flush ( ) ;
m_streamWriter.Close ( ) ;
} }
catch ( Exception em )
{ Console.WriteLine ( em.Message.ToString ( ) ) ;
} }
private void button4_Click ( object sender , System.EventArgs e )
{ printDialog1.Document = ThePrintDocument ;
printDialog1.ShowDialog ( ) ;
} //预览打印文档
private void button2_Click ( object sender , System.EventArgs e )
{ try
{ string strText = richTextBox1.Text ;
myReader = new StringReader ( strText ) ;
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog ( ) ;
printPreviewDialog1.Document = ThePrintDocument ;
printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D ;
printPreviewDialog1.ShowDialog ( ) ;
} catch ( Exception exp )
{ Console.WriteLine ( exp.Message.ToString ( ) ) ;
} }
//打印richTextBox1中的内容
private void button5_Click ( object sender , System.EventArgs e )
{ printDialog1.Document = ThePrintDocument ;
string strText = richTextBox1.Text ;
myReader = new StringReader ( strText ) ;
if ( printDialog1.ShowDialog ( ) == DialogResult.OK )
{ ThePrintDocument.Print ( ) ;
} }
protected void ThePrintDocument_PrintPage ( object sender , PrintPageEventArgs ev )
{ float linesPerPage = 0 ;
float yPosition = 0 ;
int count = 0 ;
float leftMargin = ev.MarginBounds.Left ;
float topMargin = ev.MarginBounds.Top ;
string line = null ;
Font printFont = richTextBox1.Font ;
SolidBrush myBrush = new SolidBrush ( Color.Black ) ;
//计算每一页打印多少行
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight ( ev.Graphics ) ;
//重复使用StringReader对象 ,打印出richTextBox1中的所有内容
while ( count < linesPerPage && ( ( line = myReader.ReadLine ( ) ) != null ) )
{ // 计算出要打印的下一行所基于页面的位置
yPosition = topMargin + ( count * printFont.GetHeight ( ev.Graphics ) ) ;
// 打印出richTextBox1中的下一行内容
ev.Graphics.DrawString ( line , printFont , myBrush , leftMargin , yPosition , new StringFormat ( ) ) ;
count++ ;
} // 判断如果还要下一页,则继续打印
if ( line != null )
ev.HasMorePages = true ;
else
ev.HasMorePages = false ;
myBrush.Dispose ( ) ;
} }
悔说话的哑巴 2010-06-16
  • 打赏
  • 举报
回复
打印全部的代码自己好好修改一下
悔说话的哑巴 2010-06-16
  • 打赏
  • 举报
回复
private bool _loadPackingFile(string strOrderID)
{
bool blngetFile = true;

string proc = "SELECT OrderID,PackingAttached, FileType,PackingFileName FROM dbo.T_OrderAttached WHERE OrderID= " + strOrderID;

System.Data.DataTable dt = new System.Data.DataTable();
byte[] mydata;
System.IO.MemoryStream myStream;

_db.Connect();

try
{
IDbCommand scm = _db.GetCommand(proc);
scm.CommandType = CommandType.Text;

dt = _db.ExecuteQuery(scm).Tables[0];

_db.Disconnect();

if (dt.Rows.Count > 0)
{
if (dt.Rows[0]["PackingAttached"].ToString().Trim() != "")
{
mydata = (byte[])(dt.Rows[0]["PackingAttached"]);
myStream = new System.IO.MemoryStream();

if (mydata.Length > 0)
{
foreach (byte a in mydata)
{
myStream.WriteByte(a);
}
System.IO.FileInfo fi;

string strVoucherFileName = dt.Rows[0]["PackingFileName"].ToString();

_PackingFile = "C:\\Documents and Settings\\All Users\\Templates\\" + strVoucherFileName;

if (System.IO.File.Exists(_PackingFile))
{
System.IO.File.Delete(_PackingFile);
}

fi = new System.IO.FileInfo(_PackingFile);

System.IO.FileStream fs;


fs = fi.OpenWrite();
fs.Write(mydata, 0, mydata.Length);
fs.Close();
}
}
else
{
blngetFile = false;
}
}
else
{
blngetFile = false;
}
}
catch
{
blngetFile = false;
}

return blngetFile;

}

private void frmRptCenter_FormClosing(object sender, FormClosingEventArgs e)
{

rptDOC.Dispose();
}

private void txtSO_Validating(object sender, CancelEventArgs e)
{

if (txtSO.Text != "")
{
string strOrderNO = txtSO.Text.ToString().Trim();

//clsOrders.get
cboBomVersion.DisplayMember = "Version";
cboBomVersion.ValueMember = "Version";
cboBomVersion.DataSource = clsOrders.GetOrderBomVersion(txtSO.Text.Trim().ToString(), _db);


WGS.Warehouses.Orders ords = Systems.GetOrders(_db, strOrderNO);

if (ords.OrderID == 0)
{
string[] err = new string[1];
err[0] = strOrderNO;
MessageHandler.ShowDialog("ERP0001", err);
e.Cancel = true;
}
else
{

txtSO.Text = ords.OrderNO.ToString();
_OrderID = ords.OrderID.ToString();
}

}
}

}

}
稍稍改动一点就可以了
yingxiongmingduan 2010-06-16
  • 打赏
  • 举报
回复
帮你定一下,哑巴的可以了
悔说话的哑巴 2010-06-16
  • 打赏
  • 举报
回复
private void SetReportParameter(ReportDocument rptDoc, string strPara, string strParaValue)
{
ParameterValues currentParameterValues = new ParameterValues();
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
parameterDiscreteValue.Value = strParaValue.ToString();
currentParameterValues.Add(parameterDiscreteValue);


ParameterFieldDefinitions parameterFieldDefinitions = rptDoc.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[strPara];
parameterFieldDefinition.ApplyCurrentValues(currentParameterValues);


}

private void SetReportParameter(ReportDocument rptDoc, string strSubRepName, string strPara, string strParaValue)
{

ParameterValues currentParameterValues = new ParameterValues();
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
parameterDiscreteValue.Value = strParaValue.ToString();
currentParameterValues.Add(parameterDiscreteValue);

ParameterFieldDefinitions parameterFieldDefinitions = rptDoc.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[strPara, strSubRepName];
parameterFieldDefinition.ApplyCurrentValues(currentParameterValues);

}
private ArrayList GetDefaultValuesFromParameterField(ReportDocument reportDocument, string strParameterName)
{
ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[strParameterName];
ParameterValues defaultParameterValues = parameterFieldDefinition.DefaultValues;
ArrayList arrayList = new ArrayList();

foreach (ParameterValue parameterValue in defaultParameterValues)
{
if (!parameterValue.IsRange)
{
ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;
arrayList.Add(parameterDiscreteValue.Value.ToString());
}

}
return arrayList;
}

private void SetDateRangeForOrders(ReportDocument reportDocument, string startValue, string endValue, string strPara)
{
ParameterRangeValue parameterRangeValue = new ParameterRangeValue();
parameterRangeValue.StartValue = startValue;
parameterRangeValue.EndValue = endValue;

parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[strPara];
parameterFieldDefinition.CurrentValues.Clear();
parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValues);
}


private void SetCurrentValuesForParameterField(ReportDocument reportDocument, ArrayList arrayList, string strParameterName)
{
ParameterValues currentParameterValues = new ParameterValues();
foreach (object submittedValue in arrayList)
{
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
parameterDiscreteValue.Value = submittedValue.ToString();
currentParameterValues.Add(parameterDiscreteValue);

}
ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[strParameterName];
parameterFieldDefinition.ApplyCurrentValues(currentParameterValues);
}

private void frmRptCenter_Load(object sender, EventArgs e)
{
blnInitiateData();

setTabIndexes();
}

private DataView GetReportHd()
{
DataTable dt = null;

if (_db == null)
{
_db = new Framework.Win.Library.Database(SystemCode, FuncCode, _connName);

}
string strAccessColGroup = GlobalService.LoginSession.GetAuthority(SystemCode, FuncCode, "ARG");

try
{
_db.Connect();
IDbCommand cmd = _db.GetCommand("usp_GetReportHd");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(_db.GetParameter("@strrepGroup", "ORDER"));
//cmd.Parameters.Add(_db.GetParameter("@RoleGroup", strAccessColGroup));

dt = _db.ExecuteQuery(cmd).Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
_db.Disconnect();
}

return dt.DefaultView;

}
private DataView GetReportHd(Int32 intRptID)
{
DataTable dt = null;

if (_db == null)
{
_db = new Framework.Win.Library.Database(SystemCode, FuncCode, _connName);

}
try
{
_db.Connect();
IDbCommand cmd = _db.GetCommand("usp_GetReportHdByRptID");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(_db.GetParameter("@intRptID", intRptID));

dt = _db.ExecuteQuery(cmd).Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
_db.Disconnect();
}
return dt.DefaultView;

}

private void setTabIndexes()
{

cmbReportName.TabIndex = 1;

}

private void cmbReportName_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbReportName.SelectedIndex != -1)
{
if (cmbReportName.SelectedValue.ToString() == "35")
{
this.cboBomVersion.Visible = true;
this.cLabel1.Visible = true;
}
else
{
this.cboBomVersion.Visible = false;
this.cLabel1.Visible = false;

}
}
else
{
this.cboBomVersion.Visible = false;
}
}

private void frmRptCenter_Activated(object sender, EventArgs e)
{
SetButtonMode(this.FormMode);
}


private void txtSO_DoubleClick(object sender, EventArgs e)
{
string strEA = GlobalService.ControlHandler.GetEntryAssistID(txtSO.ControlID);
EntryAssist ea = new EntryAssist(GlobalService.Instance().CompanyCode, strEA);
ea.FilterColumn = "Canceled";
ea.FilterValue = "N";
ea.SearchValue = txtSO.Text.Trim();
ea.ShowDialog();
if (!(ea.SearchValue == null))
{
txtSO.Text = ea.SearchValue;
}
}

private void tpView_Click(object sender, EventArgs e)
{
}

private void tc1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tc1.SelectedIndex == 1)
{
if (txtSO.Text == "" || txtSO.Text == null)
{
return;
}
else
{
this.Cursor = Cursors.Arrow;
tc1.Enabled = false;
if (rptDOC.IsLoaded) rptDOC.Close();
this.crvReportViewer.Refresh();
printReport();
this.crvReportViewer.ReportSource = rptDOC;


this.Cursor = Cursors.Arrow;
tc1.Enabled = true;
}
}
if (tc1.SelectedTab.Name == "tpPacking")
{
if (txtSO.Text != "")
{
if (_loadPackingFile(_OrderID))
{

this.cWebBrowser_Packing.Navigate(_PackingFile, false);

}
}

}
}
悔说话的哑巴 2010-06-16
  • 打赏
  • 举报
回复

private bool printReport()
{

DataView dv;
string strRepVer = "A";
string strShowBOM = "Y";
string strShowBOMColor = "Y";
string strShowBOMSize = "Y";
string strShowAssortColors = "N";
string strShowColorRatio = "Y";
string strShowSizeRatio = "Y";
string strShowOrderMat = "N";
string strReceycleTypeCode1 = "R01";
string strReceycleTypeCode2 = "R02";

string strPrintLable1 = "FALSE";
string strPrintLable2 = "FALSE";
string strPrintPackge = "FALSE";


dv = GetReportHd(Convert.ToInt32(cmbReportName.SelectedValue.ToString()));
strRepVer = dv[0]["Version"].ToString();


string strReportName = dv[0]["RepPath"].ToString() + dv[0]["RepID"].ToString();

//strReportName = @"F:\Documents and Settings\chenzd\桌面\WGERP004APP.rpt";

rptDOC = new ReportDocument();


try
{
rptDOC.Load(strReportName);
ConnectionInfo connectionInfo = new ConnectionInfo();

connectionInfo.ServerName = _db.Server;
connectionInfo.DatabaseName = _db.DatabaseName;
connectionInfo.UserID = _db.UserID;
connectionInfo.Password = _db.Password;

SetDBLogonForReport(connectionInfo, rptDOC);

SetDBLogonForSubreports(connectionInfo, rptDOC);

string strSONo = "";
string strShowPic = "N";

strSONo = txtSO.Text.Trim().ToString();

if (cbShowPic.Checked)
{
strShowPic = "Y";
}
else
{
strShowPic = "N";

}

if (cbShowBOM.Checked)
{
strShowBOM = "Y";
}
else
{
strShowBOM = "N";
}
if (cbShowBS.Checked)
{
strShowBOMSize = "Y";
}
else
{
strShowBOMSize = "N";
}
if (cbShowBC.Checked)
{
strShowBOMColor = "Y";
}
else
{
strShowBOMColor = "N";
}

if (cbShowAssortColor.Checked)
{
strShowAssortColors = "Y";
}
else
strShowAssortColors = "N";

if (chkShowColorRatio.Checked)
{
strShowColorRatio = "Y";
}
else
strShowColorRatio = "N";

if (chkShowSizeRatio.Checked)
{
strShowSizeRatio = "Y";
}
else
strShowSizeRatio = "N";

if (chkShowOrderMat.Checked)
{
strShowOrderMat = "TRUE";
}
else
strShowOrderMat = "FALSE";


if (chkPrintLable1.Checked)
{
strPrintLable1 = "TRUE";

}
else
{
strPrintLable1 = "FALSE";
}
if (chkPrintLable2.Checked)
{
strPrintLable2 = "TRUE";
}
else
strPrintLable2 = "FALSE";

if (chkPrintPackage.Checked)
{
strPrintPackge = "TRUE";
}
else
strPrintPackge = "FALSE";

SetReportParameter(rptDOC, "@strOrderNo", strSONo);

SetReportParameter(rptDOC, "@strShowBOM", strShowBOM);

SetReportParameter(rptDOC, "@strShowBOMColor", strShowBOMColor);

SetReportParameter(rptDOC, "@strShowBOMSize", strShowBOMSize);

SetReportParameter(rptDOC, "@strShowAssortColorInfo", strShowAssortColors);

SetReportParameter(rptDOC, "@blnShowOrderMat", strShowOrderMat);


// modified by Mickey in 20100511
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt", "@strOrder", strSONo);
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt", "@Type", "1");
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt", "@ShowColorRatio", strShowColorRatio);
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt", "@ShowSizeRatio", strShowSizeRatio);

// modified by Mickey in 20100511
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt - 01", "@strOrder", strSONo);
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt - 01", "@Type", "2");
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt - 01", "@ShowColorRatio", strShowColorRatio);
SetReportParameter(rptDOC, "WGERP004AP_SizeColor_Sub.rpt - 01", "@ShowSizeRatio", strShowSizeRatio);


SetReportParameter(rptDOC, "ORDERBOMCOLORS", "@strFrSO", strSONo);

SetReportParameter(rptDOC, "ORDERBOMCOLORS", "@strSO", strSONo);

SetReportParameter(rptDOC, "ORDERMATS", "@strOrderNo", strSONo);
SetReportParameter(rptDOC, "ORDERMATS", "@strOrderNo", strSONo);

SetReportParameter(rptDOC, "ORDERMATS", "@strMatType", "C01");

SetReportParameter(rptDOC, "PACKINGMATS", "@strOrderNo", strSONo);
SetReportParameter(rptDOC, "PACKINGMATS", "@strMatType", "C03");

SetReportParameter(rptDOC, "ORDBOMSIZE", "@strSO", strSONo);

SetReportParameter(rptDOC, "ORDBOMSIZE", "@strSO", strSONo);
SetReportParameter(rptDOC, "ORDBOMSIZE", "@strFrSO", strSONo);

SetReportParameter(rptDOC, "@PrintLabel1", strPrintLable1);

SetReportParameter(rptDOC, "@PrintLabel2", strPrintLable2);

SetReportParameter(rptDOC, "@PrintPackage1", strPrintPackge);

SetReportParameter(rptDOC, "@PrintPackage2", strPrintPackge);



SetReportParameter(rptDOC, "BOM", "@strOrderNo", strSONo);

if (Convert.ToInt32(cmbReportName.SelectedValue.ToString()) == 35)
{
string strBomversion = this.cboBomVersion.SelectedValue.ToString();
SetReportParameter(rptDOC, "BOM", "@strBomversion", strBomversion);
SetReportParameter(rptDOC, "BOMC2", "@strBomversion", strBomversion);

}
SetReportParameter(rptDOC, "BOMC2", "@strOrderNo", strSONo);
SetReportParameter(rptDOC, "BOMC3", "@strOrderNo", strSONo);

SetReportParameter(rptDOC, "COLORASSORT", "@strOrderNo", strSONo);

//ORDERMATS

SetReportParameter(rptDOC, "Receycle1", "@OrderNo", strSONo);
SetReportParameter(rptDOC, "Receycle2", "@OrderNo", strSONo);


SetReportParameter(rptDOC, "Receycle1", "@ReceycleTypeCode", strReceycleTypeCode1);
SetReportParameter(rptDOC, "Receycle2", "@ReceycleTypeCode", strReceycleTypeCode2);


//sample color size

SetReportParameter(rptDOC, "SAMPLECOLORSIZE", "@strOrder", strSONo);



}
catch
{
_db.Disconnect();
throw;

}
finally
{
_db.Disconnect();
}

return true;

}


private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);

}

}

private void SetDBLogonForSubreports(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
Sections sections = reportDocument.ReportDefinition.Sections;
foreach (Section section in sections)
{
ReportObjects reportObjects = section.ReportObjects;
foreach (ReportObject reportObject in reportObjects)
{
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
SubreportObject subreportObject = (SubreportObject)reportObject;
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
SetDBLogonForReport(connectionInfo, subReportDocument);

}
}

}

}
悔说话的哑巴 2010-06-16
  • 打赏
  • 举报
回复
给你一些代码吧。
wuyq11 2010-06-12
  • 打赏
  • 举报
回复
枚举打印机
System.Management.ManagementClass mc =new ManagementClass("Win32_Printer")
System.Management.ManagementObjectCollection mocs = mc.GetInstances();

[DllImport("shell32.dll", CharSet=CharSet.Auto)]
public static extern Int32 SHInvokePrinterCommand(
IntPtr hwnd, UInt32 uAction, [MarshalAs(UnmanagedType.LPWStr)]
String lpBuf1,
[MarshalAs(UnmanagedType.LPWStr)]
String lpBuf2,
Int32 fModal);
http://topic.csdn.net/u/20100313/12/b7e2ceb5-08ab-4fa8-92b5-12b4cbde061f.html?70298

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧