2015-02-24 57 views
0

我有这样的代码:OleDBCommand.ExecuteReader()错误访问2007

private void GenerarTicket(int prmFOLIO) 
     { 
      try 
      { 
       string Ticket = "Nombre de la tienda: UAMCAV\n" + 
        "RFC:XXXXXX\n" + 
        "------------------------------\n" + 
        "ARTICULO CANT PRECIO TOTAL\n" + 
        "------------------------------\n"; 
       string varSQL = "SELECT Detalle_Ventas.folio, Detalle_Ventas.id_articulo, Detalle_Ventas.cantidad, Detalle_Ventas.p_unitario, Detalle_Ventas.iva*Detalle_Ventas.p_unitario AS iva, Detalle_Ventas.cantidad*Detalle_Ventas.p_unitario AS total, articulos.desc_producto, Ventas.user_login, LEFT(Ventas.fecha,10) AS fecha " + " FROM Ventas INNER JOIN (articulos INNER JOIN Detalle_Ventas ON articulos.id_articulo=Detalle_Ventas.id_articulo) ON Ventas.folio=Detalle_Ventas.folio WHERE Ventas.folio=" + prmFOLIO + ""; 

       string DetalleTicket = ""; 
       double varGranTotal = 0; 
       OleDbConnection cnnTicket =new OleDbConnection(Clases.clsMain.CnnStr); 
       cnnTicket.Open(); 
       OleDbCommand cmdTicket =new OleDbCommand(varSQL, cnnTicket); 
       OleDbDataReader drTicket; 
       **drTicket = cmdTicket.ExecuteReader();** 
       while (drTicket.Read()) 
       { 
        DetalleTicket += 
         drTicket["desc_producto"].ToString() + " " + 
         drTicket["cantidad"].ToString() + " " + 
         String.Format("{0:C}", 
         drTicket["p_unitario"]) + " " + 
         String.Format("{0:C}", 
         drTicket["total"]) + "\n"; 
        varGranTotal += (double)drTicket["total"]; 
       } 
       DetalleTicket += 
        "------------------------------\n" + 
        "TOTAL: " + String.Format("{0:C}", 
        varGranTotal); 
       Ticket += DetalleTicket; 
       mPrintDocument _mPrintDocument = new mPrintDocument(Ticket); 
       _mPrintDocument.PrintPreview(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

我修改了大胆的部分很多次,因为总是有一个抛除怪我,像别名循环引用“desc_producto “,我使用由我创建的.dll生成购物券,但无法解决此异常问题!你可以帮我吗?顺便说一下,这是数据库中项目的名称。

+0

“别名desc_producto中的循环引用”通常意味着您只需选择与字段名称不同的字段别名。如果您将'desc_producto'更改为'desc_producto2'和'drTicket [“desc_producto”]'drTicket [“desc_producto2”]',那么这会解决您的问题吗? – 2015-02-24 04:22:01

+0

没有工作,它说没有具体的价值观一些建立参数! – SdwAlchmist 2015-02-24 04:30:38

+0

好的!我做到了,但是,这段代码假设打印一张票,但预览中没有显示这些项目!你有想法吗?我要修改代码! – SdwAlchmist 2015-02-24 08:35:27

回答

0

原因该异常的 =>循环引用由别名

别名,或标签引起计算字段的,不能是相同的,以任何用于计算的字段名的领域。

将查询更改为下方。

string varSQL = 
       "**SELECT LEFT(desc_producto,10) as desc_product_o,**" + 
       " cantidad,p_unitario,total" + 
       " FROM Ventas WHERE Folio=" + prmFOLIO + ""; 

它会工作。

这是Microsoft支持link了解更多详情。

更新

还需要内部更改代码,而循环。

while (drTicket.Read()) 
{ 
    DetalleTicket += 
    drTicket["desc_product_o"].ToString() + " " + 
    drTicket["cantidad"].ToString() + " " + 
    String.Format("{0:C}", 
    drTicket["p_unitario"]) + " " + 
    String.Format("{0:C}", 
    drTicket["total"]) + "\n"; 
    varGranTotal += (double)drTicket["total"]; 
} 
+0

没有工作,它说在SELECT上的“无效指令” – SdwAlchmist 2015-02-24 04:29:29

+0

是的!仍然不起作用,用“**”表示“无效指令”,没有“**”表示没有特定的值来表示Ventas中的某些已建立的参数,因为我没有desc_producto项目,因为我不需要它,它在表格中。对不起,如果我的英语不好! – SdwAlchmist 2015-02-24 06:19:11