具有可选WHERE参数的TableAdapter查询

时间:2015-07-27 09:00:19

标签: c# sql visual-studio-2013 tableadapter

我正在尝试使用可选的WHERE参数创建TableAdapter查询。 这是我的问题:

    SELECT Productos.Categoria, Productos.Subcategoria, Productos.Nombre,
 Productos.Marca, Productos.Descripcion, Proveedores.Nombre AS Proveedor, Precios.Precio

    FROM Precios, Productos, Proveedores
    WHERE Precios.Producto_ID = Productos.ID AND Precios.Proveedor_ID =
 Proveedores.ID AND Proveedores.Nombre = ?

我希望“ Proveedores.Nombre =? ”是可选的,或者如果? = null或无,查询不按 Proveedores.Nombre 过滤

我试过这个:

(Proveedores.Nombre =@PNombre OR @PNombre = NULL)

但我有一个错误:

  

生成的SELECT语句:

     

'@'附近的WHERE子句出错。

     

无法解析查询文本

非常感谢你的帮助,

此致

安德烈

编辑: 我是一个Windows窗体项目。我正在使用DataSource - 链接到我的访问数据库的DataSet。因此,为了创建FillBy()和GetData(),我使用了一个表适配器,当我将DataSource插入我的WindowsForm时,它自动创建。 这是我正在使用的GetData()创建的方法:

public virtual DB_ProvProd2DataSet.ProductosDataTable GetDataByTodo(string Nombre) {
    this.Adapter.SelectCommand = this.CommandCollection[5];
    if ((Nombre == null)) {
        throw new global::System.ArgumentNullException("Nombre");
    }
    else {
        this.Adapter.SelectCommand.Parameters[0].Value = ((string)(Nombre));
    }
    DB_ProvProd2DataSet.ProductosDataTable dataTable = new DB_ProvProd2DataSet.ProductosDataTable();
    this.Adapter.Fill(dataTable);
    return dataTable;
}

where this.CommandCollection [5] =查询和this.Adapter.SelectCommand.Parameters [0]是与'?'相关的输入查询。

我希望这有帮助! 感谢!!!

1 个答案:

答案 0 :(得分:0)

尝试将其分配给局部变量: string tmp = @PNombre

(Proveedores.Nomber == tmp || tmp == null)