我正在尝试使用可选的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]是与'?'相关的输入查询。
我希望这有帮助! 感谢!!!
答案 0 :(得分:0)
尝试将其分配给局部变量: string tmp = @PNombre
(Proveedores.Nomber == tmp || tmp == null)