还是打印问题,高手进

时间:2021-02-06 18:54:42
。。。。。。。。。。。。。。
省略绑定代码

ReportDocument rd = new ReportDocument();
        rd.Load(Server.MapPath("PuchaseReport.rpt"));
        rd.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = rd;
        this.CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
        rd.PrintOptions.PrinterName = @"\\192.168.2.199\HP LaserJet 1020";
        rd.PrintToPrinter(1, false, 0, 0);
        Response.Redirect("../PUR/BuyPOBasAdd.aspx");

在本机上运行可以打印,可是换了别人的机器就报错了·······( '/stoneERP' 應用程式中發生伺服器錯誤。
还有就是在自己机器上打印完了,不跳转到指定页面,而且页面显示: 用户状态丢失,请关闭系统后重新登录  注意:是黑体的,不是报错的那种,有点像用Response写上去的·······

各位大侠,请帮忙,急急急!!!

70 个解决方案

#1


1:换了别人的机器就报错了,具体是什么概念呢?

a:程序部署在公用的服务器上,你的机器和别人的机器访问这台服务器,出现不同的结果
b:程序部署在你的机器上,你的机器和别人的机器访问你的机器,出现不同的结果
c: 程序分别部署在你的机器和别人的机器上,出现不同的结果

另外报错信息太简单了,不足以判断问题所在

2:“用户状态丢失,请关闭系统后重新登录”

明显是系统里自己写出来的,不是程序本身报错。还是要看在哪里把状态丢失了,呵呵

#2


本帖最后由 babyt 于 2009-06-25 16:55:54 编辑
1.是第二种情况(b.)
2.我觉得没丢啊··········
DataSetPuchase ds = new DataSetPuchase();
        SqlConnection con = new SqlConnection("Data Source=chong5;Initial Catalog=StoneERP;User ID=sa;Password=****");
        SqlDataAdapter da;
        string PONo = txtNo.Text.Trim();
        string sql = "select a.ChName as a1,b.EnglishName as a2,c.PODate as a3,c.DueDate as a4,d.TransTypeName as a5,a.ChName as a6,e.CName as a7," +
                    " f.SerialNo as a8,f.Color as a9,f.Shape as a10,f.[Size] as a11,f.Spec as a12,f.Grade as a13,f.Unit as a14,f.Qty as a15,f.Price as a16,f.ProductNo as a17,f.Notes as a18," +
                    " c.Notes as a19,c.PONo as a20" +
                    " FROM STN_Vender AS a,STN_Currency AS b,STN_POHD AS c,STN_TransMode AS d,Users AS e," +
                    " STN_PODet AS f" +
                    " WHERE a.VenderId = c.VenderId AND b.MoneyId = c.CurrencyId AND d.TransTypeId = c.TransModeId" +
                    " AND e.Num = c.PurchaseBy AND f.PONo = c.PONo AND c.PONo = '" + PONo + "'";
        con.Open();
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Puchase");

        sql = "select sum(Qty*Price) as totalCount FROM STN_PODet WHERE PONo = '" + PONo + "'";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "sumCount");

        sql = "SELECT ReceiveBy FROM STN_POHD WHERE PONo = '" + PONo + "'";
        SqlCommand com = new SqlCommand(sql, con);
        SqlDataReader dr = com.ExecuteReader();
        string cName = "";
        if (dr.Read())
        {
            string receiverBy = dr["ReceiveBy"].ToString();
            switch (receiverBy)
            {
                case "0":
                    cName = "蘇州宗宗";
                    break;
                case "1":
                    cName = "BKK";
                    break;
                case "2":
                    cName = "KCK";
                    break;
                case "3":
                    cName = "廣州宗宗辦事處";
                    break;
                case "4":
                    cName = "桂林宗宗";
                    break;
                default:
                    break;
            }
        }
        dr.Close();

        sql = "SELECT '" + cName + "' as xiadankehu";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Remark");

        ReportDocument rd = new ReportDocument();
        rd.Load(Server.MapPath("PuchaseReport.rpt"));
        rd.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = rd;
    }


    protected void btnPrint_Click(object sender, EventArgs e)
    {
        DataSetPuchase ds = new DataSetPuchase();
        SqlConnection con = new SqlConnection("Data Source=chong5;Initial Catalog=StoneERP;User ID=sa;Password=****");
        SqlDataAdapter da;
        string PONo = txtNo.Text.Trim();
        string sql = "select a.ChName as a1,b.EnglishName as a2,c.PODate as a3,c.DueDate as a4,d.TransTypeName as a5,a.ChName as a6,e.CName as a7," +
                    " f.SerialNo as a8,f.Color as a9,f.Shape as a10,f.[Size] as a11,f.Spec as a12,f.Grade as a13,f.Unit as a14,f.Qty as a15,f.Price as a16,f.ProductNo as a17,f.Notes as a18," +
                    " c.Notes as a19,c.PONo as a20" +
                    " FROM STN_Vender AS a,STN_Currency AS b,STN_POHD AS c,STN_TransMode AS d,Users AS e," +
                    " STN_PODet AS f" +
                    " WHERE a.VenderId = c.VenderId AND b.MoneyId = c.CurrencyId AND d.TransTypeId = c.TransModeId" +
                    " AND e.Num = c.PurchaseBy AND f.PONo = c.PONo AND c.PONo = '" + PONo + "'";
        con.Open();
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Puchase");

        sql = "select sum(Qty*Price) as totalCount FROM STN_PODet WHERE PONo = '" + PONo + "'";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "sumCount");

        sql = "SELECT ReceiveBy FROM STN_POHD WHERE PONo = '" + PONo + "'";
        SqlCommand com = new SqlCommand(sql, con);
        SqlDataReader dr = com.ExecuteReader();
        string cName = "";
        if (dr.Read())
        {
            string receiverBy = dr["ReceiveBy"].ToString();
            switch (receiverBy)
            {
                case "0":
                    cName = "蘇州宗宗";
                    break;
                case "1":
                    cName = "BKK";
                    break;
                case "2":
                    cName = "KCK";
                    break;
                case "3":
                    cName = "廣州宗宗辦事處";
                    break;
                case "4":
                    cName = "桂林宗宗";
                    break;
                default:
                    break;
            }
        }
        dr.Close();

        sql = "SELECT '" + cName + "' as xiadankehu";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Remark");

        ReportDocument rd = new ReportDocument();
        rd.Load(Server.MapPath("PuchaseReport.rpt"));
        rd.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = rd;
        this.CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
        rd.PrintOptions.PrinterName = @"\\192.168.2.199\HP LaserJet 1020";
        rd.PrintToPrinter(1, false, 0, 0);
        Response.Redirect("../PUR/BuyPOBasAdd.aspx");

#3


麻烦 阿泰帮我吧pwd涂掉,好吗?
刚才忘了

#4


引用 3 楼 gwf25sz 的回复:
麻烦 阿泰帮我吧pwd涂掉,好吗? 
刚才忘了


呵呵
还是打印问题,高手进

#5


晕,没人回啊··········

#6


程序上并没有问题,而报错信息不详细,所以很难判断出错位置

再问:
你访问自己程序的时候,
是用的VS2005的开发环境访问的,如 http://localhost:随机端口/xx
还是从IE自己输入网址访问的,如 http://localhost/虚拟目录?
机器的C盘是NTFS格式还是FAT32?

问这个是因为怀疑是权限问题,调试模式下访问时,用的是administra账号,有全部权限
但是如果别人从其他机器访问的时候,就是internet来宾,所以一般情况下,你可以把c盘的可写权限开放给everyone。
另外,把打印机的操作权限也开放给everyone。

#7


状态丢失搞定了,返回页搞定了
但是打印却出了问题---------------------右下角弹出了打印的相关信息

还是打印问题,高手进

注意:按打印后直接转到了指定页,然后才显示上图信息的~!!
关键是它-------------不打印了···················

#8


打印出问题的时候,连你自己打印都不行还是只是别人不行呢?

#9


是每次都不行,还是有时行有时候不行,呵呵

#10


学习

#11


今天,都不能打·········,估计打印机出问题了    - -

#12


引用 11 楼 gwf25sz 的回复:
今天,都不能打·········,估计打印机出问题了    - -


我。。晕~~~ 

#13


果然,打印机坏了 - - 
各位不好意思············

#14


引用 13 楼 gwf25sz 的回复:
果然,打印机坏了 - - 
各位不好意思············

看你7楼的图片,你也是北大青鸟的吧,;
还是打印问题,高手进

#15


在本机上运行可以打印,可是换了别人的机器就报错了·······( '/stoneERP' 應用程式中發生伺服器錯誤。) 

这个问题还没解决呢························

#16


我用的是VS2008是用VS运行的,没有架,我们是做ERP的,所以是团队开发
别人只要“获取最新” 就可以把我“签入”的资源拿到手了,可是,为什么还会报
那个    伺服器 错误啊················
阿泰·········

#17


看一下6楼

#18


那到底怎么改???
你就把我当 小白吧
给我讲讲好么

#19


'/stoneERP' 應用程式中發生伺服器錯誤。--------------------------------------------------------------------------------

Invalid printer specified. 
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 

例外詳細資訊: System.Runtime.InteropServices.COMException: Invalid printer specified.

原始程式錯誤: 


行 83: 
行 84:         this.CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
行 85:         rd.PrintOptions.PrinterName = @"\\192.168.2.199\HP LaserJet 1020";行 86:         rd.PrintToPrinter(1, false, 0, 0);
行 87:         rd.Dispose();
 

原始程式檔: c:\Inetpub\StoneERP\STONE\Report\InStockReport.aspx.cs    行: 85 



谁给出正确简单的解决方案,单独多+20分

#20


最新发现,我架起来以后就包错:找不到打印机
但是在VS下运行是正确的,为什么,怎么改?

#21


机器连接打印机了吗?

控制面板里面
不过貌似不影响,没有连接打印机
只是会不打印,也不至于出错啊

#22


还有在别人机器不行
是在别人可以调试的机器上不行
还是你发布后别人访问出错那

#23


一句话,连了打印机,任何机器上用VS运行正常,但发布后用web浏览
全部不行(包括我自己)

#24


设置打印机的权限(在打印机上点右键),开放给everyone看一下。

#25


没用··········

#26


重装iis试试

#27


错误现象

指定的打印机无效。     
rd.PrintOptions.PrinterName = @"\\192.168.2.111\HP LaserJet 1020";

发布后用浏览器运行才报这样的错,VS运行不报错,怎么改??

#28


Pls throw the exception and show it to us.
i think it maybe access network resource problem.

#29


where are you from Itxpossible?
还是打印问题,高手进

you see it?
You can help me?
好了,这都贴出来了,没话说了
顺便说下,那个路径 改成 @"\\192.168.2.111\HP LaserJet 1020"也是错误的
怎么改
打印机在192.168.2.111上,打印机名字为HP LaserJet 1020
谢谢!
Thanks!

#30


引用 27 楼 gwf25sz 的回复:
错误现象

指定的打印机无效。   
rd.PrintOptions.PrinterName = @"\\192.168.2.111\HP LaserJet 1020";

发布后用浏览器运行才报这样的错,VS运行不报错,怎么改??


局域网都连接打印机的话
直接将
//rd.PrintOptions.PrinterName = @"\\192.168.2.111\HP LaserJet 1020"; 
注释掉

#31


在系统添加打印机里面
你这样指定路径
也是不对的

也会找不到打印机

#32


不错,去掉了以后的确不报错了,也能返回,可是却只生成图片而不打印了,怎么办???

#33


生成图片一般是因为你的默认打印机不是这台HP,而是默认了office带的虚拟打印机
你把这台打印机设为默认打印机再看看

不过这个不是解决问题的根本之法,晚些我再搭个环境看看。也希望江南能多做一些测试,为大家造福。

#34


阿泰客气了,为大家造福,不敢当啊~  呵呵

那个  改了默认打印机,还是没用····
它还是会去用本地的虚拟打印机的····
一气之下 我把本地的虚拟打印机给删了····
结果,报错说 没安装打印机············

顺便说一下,通过“提交回复”这个按钮来登录用户,JS有问题~!

#35


打印机没设为默认打印机
纸张选择不正确
使用打印机的权限不够

#36


引用 35 楼 yyheshan 的回复:
打印机没设为默认打印机
纸张选择不正确
使用打印机的权限不够


- - 

汗···········

#37


诶,难道没个人会的?????????????

#38


引用 37 楼 gwf25sz 的回复:
诶,难道没个人会的?????????????


你的问题就是打印机名称指定错误。
就把这句话去掉就Ok了
因为你部署后,打印机名称肯定要变,这句话也没什么意思。

#39


根据你的问题。把我的问题解决了。
你的问题答案应该和我的一样。
ReportDocument rd = new ReportDocument(); 
            rd.Load(Server.MapPath(Server.MapPath("DemoReport.rpt"))); 
          rd.SetDataSource(ds); 
            PrintDocument prtdoc = new PrintDocument(); 
            //获取默认的印表机名 
            string strPrintName = prtdoc.PrinterSettings.PrinterName; 
            //设置打印机名 
            rd.PrintOptions.PrinterName = strPrintName; 
            //打印 
            rd.PrintToPrinter(1, false, 0, 0);

#40


引用 39 楼 chenmincun 的回复:
PrintDocument prtdoc = new PrintDocument(); 
            //获取默认的印表机名 
            string strPrintName = prtdoc.PrinterSettings.PrinterName; 
            //设置打印机名 
            rd.PrintOptions.PrinterName = strPrintName; 


这样动态指定打印机名不错
楼主试试

#41


关注39楼方法是否对gwf25sz可行

#42


不好意思,指定的打印机无效·····

#43


引用 42 楼 gwf25sz 的回复:
不好意思,指定的打印机无效·····
还是打印问题,高手进

#44


完了,完了,我的饭碗保不住了·············

#45


给我快递个打印机,我帮你搞搞~~  还是打印问题,高手进

#46


引用 45 楼 babyt 的回复:
给我快递个打印机,我帮你搞搞~~


还是打印问题,高手进,掉了关键的半觉,搞完再还给你。。

#47


引用 44 楼 gwf25sz 的回复:
完了,完了,我的饭碗保不住了·············


怎么,你在实习期?

#48


引用 44 楼 gwf25sz 的回复:
完了,完了,我的饭碗保不住了·············

还是打印问题,高手进


引用 46 楼 babyt 的回复:
引用 45 楼 babyt 的回复:
给我快递个打印机,我帮你搞搞~~



,掉了关键的半觉,搞完再还给你。。

还是打印问题,高手进

#49


引用 44 楼 gwf25sz 的回复:
完了,完了,我的饭碗保不住了·············


那你就干脆用那个,把这句去掉好了
去掉不是也可以吗
因为如果你机器没连打印机
你设置这句也没用,
如果连的有打印机
这句也不用设置

除非就是连的有多个打印机
你要指定具体哪一个,但是这种情况一般比较少把

#50


打印机是不固定的,
是根据用户的默认打印机打印的················
或者做成固定的也好,只要能用就行了

#1


1:换了别人的机器就报错了,具体是什么概念呢?

a:程序部署在公用的服务器上,你的机器和别人的机器访问这台服务器,出现不同的结果
b:程序部署在你的机器上,你的机器和别人的机器访问你的机器,出现不同的结果
c: 程序分别部署在你的机器和别人的机器上,出现不同的结果

另外报错信息太简单了,不足以判断问题所在

2:“用户状态丢失,请关闭系统后重新登录”

明显是系统里自己写出来的,不是程序本身报错。还是要看在哪里把状态丢失了,呵呵

#2


本帖最后由 babyt 于 2009-06-25 16:55:54 编辑
1.是第二种情况(b.)
2.我觉得没丢啊··········
DataSetPuchase ds = new DataSetPuchase();
        SqlConnection con = new SqlConnection("Data Source=chong5;Initial Catalog=StoneERP;User ID=sa;Password=****");
        SqlDataAdapter da;
        string PONo = txtNo.Text.Trim();
        string sql = "select a.ChName as a1,b.EnglishName as a2,c.PODate as a3,c.DueDate as a4,d.TransTypeName as a5,a.ChName as a6,e.CName as a7," +
                    " f.SerialNo as a8,f.Color as a9,f.Shape as a10,f.[Size] as a11,f.Spec as a12,f.Grade as a13,f.Unit as a14,f.Qty as a15,f.Price as a16,f.ProductNo as a17,f.Notes as a18," +
                    " c.Notes as a19,c.PONo as a20" +
                    " FROM STN_Vender AS a,STN_Currency AS b,STN_POHD AS c,STN_TransMode AS d,Users AS e," +
                    " STN_PODet AS f" +
                    " WHERE a.VenderId = c.VenderId AND b.MoneyId = c.CurrencyId AND d.TransTypeId = c.TransModeId" +
                    " AND e.Num = c.PurchaseBy AND f.PONo = c.PONo AND c.PONo = '" + PONo + "'";
        con.Open();
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Puchase");

        sql = "select sum(Qty*Price) as totalCount FROM STN_PODet WHERE PONo = '" + PONo + "'";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "sumCount");

        sql = "SELECT ReceiveBy FROM STN_POHD WHERE PONo = '" + PONo + "'";
        SqlCommand com = new SqlCommand(sql, con);
        SqlDataReader dr = com.ExecuteReader();
        string cName = "";
        if (dr.Read())
        {
            string receiverBy = dr["ReceiveBy"].ToString();
            switch (receiverBy)
            {
                case "0":
                    cName = "蘇州宗宗";
                    break;
                case "1":
                    cName = "BKK";
                    break;
                case "2":
                    cName = "KCK";
                    break;
                case "3":
                    cName = "廣州宗宗辦事處";
                    break;
                case "4":
                    cName = "桂林宗宗";
                    break;
                default:
                    break;
            }
        }
        dr.Close();

        sql = "SELECT '" + cName + "' as xiadankehu";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Remark");

        ReportDocument rd = new ReportDocument();
        rd.Load(Server.MapPath("PuchaseReport.rpt"));
        rd.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = rd;
    }


    protected void btnPrint_Click(object sender, EventArgs e)
    {
        DataSetPuchase ds = new DataSetPuchase();
        SqlConnection con = new SqlConnection("Data Source=chong5;Initial Catalog=StoneERP;User ID=sa;Password=****");
        SqlDataAdapter da;
        string PONo = txtNo.Text.Trim();
        string sql = "select a.ChName as a1,b.EnglishName as a2,c.PODate as a3,c.DueDate as a4,d.TransTypeName as a5,a.ChName as a6,e.CName as a7," +
                    " f.SerialNo as a8,f.Color as a9,f.Shape as a10,f.[Size] as a11,f.Spec as a12,f.Grade as a13,f.Unit as a14,f.Qty as a15,f.Price as a16,f.ProductNo as a17,f.Notes as a18," +
                    " c.Notes as a19,c.PONo as a20" +
                    " FROM STN_Vender AS a,STN_Currency AS b,STN_POHD AS c,STN_TransMode AS d,Users AS e," +
                    " STN_PODet AS f" +
                    " WHERE a.VenderId = c.VenderId AND b.MoneyId = c.CurrencyId AND d.TransTypeId = c.TransModeId" +
                    " AND e.Num = c.PurchaseBy AND f.PONo = c.PONo AND c.PONo = '" + PONo + "'";
        con.Open();
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Puchase");

        sql = "select sum(Qty*Price) as totalCount FROM STN_PODet WHERE PONo = '" + PONo + "'";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "sumCount");

        sql = "SELECT ReceiveBy FROM STN_POHD WHERE PONo = '" + PONo + "'";
        SqlCommand com = new SqlCommand(sql, con);
        SqlDataReader dr = com.ExecuteReader();
        string cName = "";
        if (dr.Read())
        {
            string receiverBy = dr["ReceiveBy"].ToString();
            switch (receiverBy)
            {
                case "0":
                    cName = "蘇州宗宗";
                    break;
                case "1":
                    cName = "BKK";
                    break;
                case "2":
                    cName = "KCK";
                    break;
                case "3":
                    cName = "廣州宗宗辦事處";
                    break;
                case "4":
                    cName = "桂林宗宗";
                    break;
                default:
                    break;
            }
        }
        dr.Close();

        sql = "SELECT '" + cName + "' as xiadankehu";
        da = new SqlDataAdapter(sql, con);
        da.Fill(ds, "Remark");

        ReportDocument rd = new ReportDocument();
        rd.Load(Server.MapPath("PuchaseReport.rpt"));
        rd.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = rd;
        this.CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
        rd.PrintOptions.PrinterName = @"\\192.168.2.199\HP LaserJet 1020";
        rd.PrintToPrinter(1, false, 0, 0);
        Response.Redirect("../PUR/BuyPOBasAdd.aspx");

#3


麻烦 阿泰帮我吧pwd涂掉,好吗?
刚才忘了

#4


引用 3 楼 gwf25sz 的回复:
麻烦 阿泰帮我吧pwd涂掉,好吗? 
刚才忘了


呵呵
还是打印问题,高手进

#5


晕,没人回啊··········

#6


程序上并没有问题,而报错信息不详细,所以很难判断出错位置

再问:
你访问自己程序的时候,
是用的VS2005的开发环境访问的,如 http://localhost:随机端口/xx
还是从IE自己输入网址访问的,如 http://localhost/虚拟目录?
机器的C盘是NTFS格式还是FAT32?

问这个是因为怀疑是权限问题,调试模式下访问时,用的是administra账号,有全部权限
但是如果别人从其他机器访问的时候,就是internet来宾,所以一般情况下,你可以把c盘的可写权限开放给everyone。
另外,把打印机的操作权限也开放给everyone。

#7


状态丢失搞定了,返回页搞定了
但是打印却出了问题---------------------右下角弹出了打印的相关信息

还是打印问题,高手进

注意:按打印后直接转到了指定页,然后才显示上图信息的~!!
关键是它-------------不打印了···················

#8


打印出问题的时候,连你自己打印都不行还是只是别人不行呢?

#9


是每次都不行,还是有时行有时候不行,呵呵

#10


学习

#11


今天,都不能打·········,估计打印机出问题了    - -

#12


引用 11 楼 gwf25sz 的回复:
今天,都不能打·········,估计打印机出问题了    - -


我。。晕~~~ 

#13


果然,打印机坏了 - - 
各位不好意思············

#14


引用 13 楼 gwf25sz 的回复:
果然,打印机坏了 - - 
各位不好意思············

看你7楼的图片,你也是北大青鸟的吧,;
还是打印问题,高手进

#15


在本机上运行可以打印,可是换了别人的机器就报错了·······( '/stoneERP' 應用程式中發生伺服器錯誤。) 

这个问题还没解决呢························

#16


我用的是VS2008是用VS运行的,没有架,我们是做ERP的,所以是团队开发
别人只要“获取最新” 就可以把我“签入”的资源拿到手了,可是,为什么还会报
那个    伺服器 错误啊················
阿泰·········

#17


看一下6楼

#18


那到底怎么改???
你就把我当 小白吧
给我讲讲好么

#19


'/stoneERP' 應用程式中發生伺服器錯誤。--------------------------------------------------------------------------------

Invalid printer specified. 
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 

例外詳細資訊: System.Runtime.InteropServices.COMException: Invalid printer specified.

原始程式錯誤: 


行 83: 
行 84:         this.CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
行 85:         rd.PrintOptions.PrinterName = @"\\192.168.2.199\HP LaserJet 1020";行 86:         rd.PrintToPrinter(1, false, 0, 0);
行 87:         rd.Dispose();
 

原始程式檔: c:\Inetpub\StoneERP\STONE\Report\InStockReport.aspx.cs    行: 85 



谁给出正确简单的解决方案,单独多+20分

#20


最新发现,我架起来以后就包错:找不到打印机
但是在VS下运行是正确的,为什么,怎么改?

#21


机器连接打印机了吗?

控制面板里面
不过貌似不影响,没有连接打印机
只是会不打印,也不至于出错啊

#22


还有在别人机器不行
是在别人可以调试的机器上不行
还是你发布后别人访问出错那

#23


一句话,连了打印机,任何机器上用VS运行正常,但发布后用web浏览
全部不行(包括我自己)

#24


设置打印机的权限(在打印机上点右键),开放给everyone看一下。

#25


没用··········

#26


重装iis试试

#27


错误现象

指定的打印机无效。     
rd.PrintOptions.PrinterName = @"\\192.168.2.111\HP LaserJet 1020";

发布后用浏览器运行才报这样的错,VS运行不报错,怎么改??

#28


Pls throw the exception and show it to us.
i think it maybe access network resource problem.

#29


where are you from Itxpossible?
还是打印问题,高手进

you see it?
You can help me?
好了,这都贴出来了,没话说了
顺便说下,那个路径 改成 @"\\192.168.2.111\HP LaserJet 1020"也是错误的
怎么改
打印机在192.168.2.111上,打印机名字为HP LaserJet 1020
谢谢!
Thanks!

#30


引用 27 楼 gwf25sz 的回复:
错误现象

指定的打印机无效。   
rd.PrintOptions.PrinterName = @"\\192.168.2.111\HP LaserJet 1020";

发布后用浏览器运行才报这样的错,VS运行不报错,怎么改??


局域网都连接打印机的话
直接将
//rd.PrintOptions.PrinterName = @"\\192.168.2.111\HP LaserJet 1020"; 
注释掉

#31


在系统添加打印机里面
你这样指定路径
也是不对的

也会找不到打印机

#32


不错,去掉了以后的确不报错了,也能返回,可是却只生成图片而不打印了,怎么办???

#33


生成图片一般是因为你的默认打印机不是这台HP,而是默认了office带的虚拟打印机
你把这台打印机设为默认打印机再看看

不过这个不是解决问题的根本之法,晚些我再搭个环境看看。也希望江南能多做一些测试,为大家造福。

#34


阿泰客气了,为大家造福,不敢当啊~  呵呵

那个  改了默认打印机,还是没用····
它还是会去用本地的虚拟打印机的····
一气之下 我把本地的虚拟打印机给删了····
结果,报错说 没安装打印机············

顺便说一下,通过“提交回复”这个按钮来登录用户,JS有问题~!

#35


打印机没设为默认打印机
纸张选择不正确
使用打印机的权限不够

#36


引用 35 楼 yyheshan 的回复:
打印机没设为默认打印机
纸张选择不正确
使用打印机的权限不够


- - 

汗···········

#37


诶,难道没个人会的?????????????

#38


引用 37 楼 gwf25sz 的回复:
诶,难道没个人会的?????????????


你的问题就是打印机名称指定错误。
就把这句话去掉就Ok了
因为你部署后,打印机名称肯定要变,这句话也没什么意思。

#39


根据你的问题。把我的问题解决了。
你的问题答案应该和我的一样。
ReportDocument rd = new ReportDocument(); 
            rd.Load(Server.MapPath(Server.MapPath("DemoReport.rpt"))); 
          rd.SetDataSource(ds); 
            PrintDocument prtdoc = new PrintDocument(); 
            //获取默认的印表机名 
            string strPrintName = prtdoc.PrinterSettings.PrinterName; 
            //设置打印机名 
            rd.PrintOptions.PrinterName = strPrintName; 
            //打印 
            rd.PrintToPrinter(1, false, 0, 0);

#40


引用 39 楼 chenmincun 的回复:
PrintDocument prtdoc = new PrintDocument(); 
            //获取默认的印表机名 
            string strPrintName = prtdoc.PrinterSettings.PrinterName; 
            //设置打印机名 
            rd.PrintOptions.PrinterName = strPrintName; 


这样动态指定打印机名不错
楼主试试

#41


关注39楼方法是否对gwf25sz可行

#42


不好意思,指定的打印机无效·····

#43


引用 42 楼 gwf25sz 的回复:
不好意思,指定的打印机无效·····
还是打印问题,高手进

#44


完了,完了,我的饭碗保不住了·············

#45


给我快递个打印机,我帮你搞搞~~  还是打印问题,高手进

#46


引用 45 楼 babyt 的回复:
给我快递个打印机,我帮你搞搞~~


还是打印问题,高手进,掉了关键的半觉,搞完再还给你。。

#47


引用 44 楼 gwf25sz 的回复:
完了,完了,我的饭碗保不住了·············


怎么,你在实习期?

#48


引用 44 楼 gwf25sz 的回复:
完了,完了,我的饭碗保不住了·············

还是打印问题,高手进


引用 46 楼 babyt 的回复:
引用 45 楼 babyt 的回复:
给我快递个打印机,我帮你搞搞~~



,掉了关键的半觉,搞完再还给你。。

还是打印问题,高手进

#49


引用 44 楼 gwf25sz 的回复:
完了,完了,我的饭碗保不住了·············


那你就干脆用那个,把这句去掉好了
去掉不是也可以吗
因为如果你机器没连打印机
你设置这句也没用,
如果连的有打印机
这句也不用设置

除非就是连的有多个打印机
你要指定具体哪一个,但是这种情况一般比较少把

#50


打印机是不固定的,
是根据用户的默认打印机打印的················
或者做成固定的也好,只要能用就行了