TableAdapter带有可选WHERE参数的查询

本文关键字:参数 查询 WHERE TableAdapter | 更新日期: 2023-09-27 18:04:55

我试图创建一个TableAdapter查询与一个可选的WHERE参数。这是我的查询:

    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 = ?

我想要" provedores"。Nombre = ?"是可选的,或者if ?= null或无,查询不按 provedores进行过滤。数量

我已经试过了:

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

但是我得到了一个错误:

生成SELECT语句:

WHERE子句'@'附近出错。

无法解析查询文本

非常感谢你的帮助,

安德烈斯

编辑:我在做一个windows窗体项目。我正在使用一个数据源-数据集链接到我的访问数据库。因此,要创建FillBy()和GetData(),我使用一个表适配器,当我将数据源插入到我的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;
}

这个地方。CommandCollection[5] =查询和this.Adapter.SelectCommand。参数[0]是输入与'?

我希望这对你有帮助!谢谢! !

TableAdapter带有可选WHERE参数的查询

尝试将其传递给一个局部变量:字符串tmp= @PNombre

(Proveedores。编号==tmp || tmp == null)