2015-07-27 1 views
0

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 !!!

Répondre

0

Essayez assing à une variable locale: chaîne tmp = @PNombre

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

+0

Il pourrait être question stupide, mais où dois-je déclarer chaîne tmp = @PNombre? –

+0

Avant de faire votre requête. – Gino

+0

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. –