J'essaie de créer une requête TableAdapter avec un paramètre WHERE facultatif. C'est ma requête:TableAdapter Requête avec le paramètre facultatif 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 = ?
je voudrais "? Proveedores.Nombre =" pour être en option ou si? = Null ou rien, la requête ne filtre pas par Proveedores.Nombre
J'ai essayé:
(Proveedores.Nombre [email protected] OR @PNombre = NULL)
Mais j'ai une erreur:
Generated SELECT statement:
Error in WHERE clause near '@'.
Unable to parse the query text
Merci beaucoup pour vous aider,
Cordialement
Andres
EDIT: Je suis dans un projet de formulaire Windows. J'utilise un DataSource - DataSet lié à ma base de données d'accès. Donc, pour créer FillBy() et GetData(), j'utilise un adaptateur de table qui a été créé automatiquement lorsque j'ai inséré la DataSource dans mon WindowsForm. Ce est la méthode créée aimait la GetData() J'utilise:
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;
}
Où this.CommandCollection [5] = la requête et this.Adapter.SelectCommand.Parameters [0] est l'entrée liée à la '?' de la requête.
J'espère que cela aide! Merci !!!
Il pourrait être question stupide, mais où dois-je déclarer chaîne tmp = @PNombre? –
Avant de faire votre requête. – Gino
Je ne peux pas, j'utilise l'assistant de requête à partir d'un DataSource - DataSet. J'ai ajouté un peu plus d'informations à mon message. –