Dynamic SQL Error SQL error code = -104 Token unknown

Viewed 7406

Here is the error:

Dynamic SQL Error    
SQL error code = -104    
Token unknown - line 1, column 162    
VALUE

Here is the code:

using (FbDataAdapter da = new FbDataAdapter(@"SELECT DOC_ITEMS.ID, PRODUCTS.PRODUCTKEY, PRODUCTS.NAME, DOC_ITEMS.QUANTITY, UNITS.UNIT, DOC_ITEMS.PRICE, DOC_ITEMS.TAX, (DOC_ITEMS.PRICE * DOC_ITEMS.QUANTITY) AS VALUE
                        FROM PRODUCTS INNER JOIN
                        DOC_ITEMS ON PRODUCTS.PRODUCTID = DOC_ITEMS.PRODUCTID INNER JOIN
                        UNITS ON PRODUCTS.UNITID = UNITS.UNITID
                        WHERE (DOC_ITEMS.DOCUMENTID = @DocumentID)", con))

{
    da.SelectCommand.Parameters.AddWithValue("@DocumentID", documentId);

    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;

    dataGridView1.Columns["PRODUCTKEY"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["ID"].Visible = false;
    dataGridView1.Columns["NAME"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    dataGridView1.Columns["QUANTITY"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["QUANTITY"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
    dataGridView1.Columns["UNIT"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["PRICE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["PRICE"].DefaultCellStyle.Format = "0.00 $";
    dataGridView1.Columns["TAX"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["TAX"].DefaultCellStyle.Format = "0\\%";
    dataGridView1.Columns["VALUE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["VALUE"].DefaultCellStyle.Format = "0.00 $";
}

When I run this command through my database directly it is working ok but inside my c# code it drops this error.

4 Answers

Use ""VALUE"" with double quotes since one quote will close your string.

VALUE is a reserved word in Firebird, this means it can't be used in a query as an object name. You need to either use a different name, or explicitly quote it as "VALUE", so the query parser knows it is not a reserved word.

ERRO:

Dynamic SQL Error SQL error code= -104 Token unknown - line 18. column 54

select c.*, r.nome from clientes c, relatorios_conf r where c.codigo not in(select vendas.codigo_cliente from vendas, vendas_itens where
vendas.codigo = vendas_itens.codigo and data_hora BETWEEN § and vendas_itens.apelido_titular in(§)and vendas_itens.tipo_pedido<>'Divida') and c.ativo ='Sim' order by c.codigo IN(§)c.ativo = 'Sim' order by c.codigo IN(§)

Related