2015-02-24 54 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