Posez votre question Signaler

ASP.NET 3.5 avec SQL SERVER : Problème LIKE

Thia - Dernière réponse le 10 juin 2010 à 09:54
Bonjour,
je suis en train de faire un site en ASP.NET 3.5. J'utilise une base de données SQL Server 2005. À un certain endroit, je dois permettre aux utilisateurs de faire des recherches selon les champs contenus dans un résultat de plusieurs tables grâce à un LinqDatasource.
L'un des modes de recherche qu'ils peuvent faire est du genre "TelChamp Contient ceciEstUneChaîne".
Je veux donc modifier l'énoncé SQL qui se cache derrière le LinqDataSource (en utilisant la propriété Where). Ça a marché (pas pour un contient, mais pour un exact) avec une chaîne contenant un entier. Voici la modification que je fais à la propriété Where du LinqDataSource pour l'instant : (Pour un champ texte commençant par a)
LinqDataSource1.Where = "table.champ1 LIKE 'a%'";
Mais malgré tout ce que j'essaie (mettre des / devant les ' pour être sûre qu'ils resteront là au moment de l'envoyer à la base de données), je me retrouve avec cette erreur lors de l'éxécution :
Expression of type 'Boolean' expected
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.Query.Dynamic.ParseException: Expression of type 'Boolean' expected
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[ParseException: Expression of type 'Boolean' expected]
System.Web.Query.Dynamic.ExpressionParser.Parse(Type resultType) +297
System.Web.Query.Dynamic.DynamicQueryable.Where(IQueryable source, String predicate, Object[] values) +131
System.Web.UI.WebControls.DynamicQueryableWrapper.Where(IQueryable source, String predicate, Object[] values) +15
System.Web.UI.WebControls.LinqDataSourceView.ExecuteSelectExpressions(IQueryable source, IDictionary`2 whereValues, IOrderedDictionary orderByOrderedValues, IDictionary`2 groupByValues, IDictionary`2 orderGroupsByValues, IDictionary`2 selectNewValues) +254
System.Web.UI.WebControls.LinqDataSourceView.ExecuteSelectQuery(LinqDataSourceSelectEventArgs selectEventArgs, Object selectResult, Object table, Boolean storeOriginalValues) +312
System.Web.UI.WebControls.LinqDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +487
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +17
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +149
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +70
System.Web.UI.WebControls.GridView.DataBind() +4
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82
System.Web.UI.WebControls.GridView.OnPreRender(EventArgs e) +24
System.Web.UI.Control.PreRenderRecursiveInternal() +86
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Control.PreRenderRecursiveInternal() +170
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2041
Et voilà... Je n'arrive pas à trouver la solution quelque part donc si quelqu'un a une idée ou une piste... Ça serait très gentil :-)
Lire la suite 

ASP.NET 3.5 avec SQL SERVER : Problème LIKE »

2 réponses
Réponse
+0
moins plus
Je vais me répondre moi-même finalement. Le LIKE ne marche pas dans un linqdatasource.Where, mais on a accès à des fonctions comme contains, startswith et endswith pour chercher des correspondances.
Ajouter un commentaire
Réponse
+0
moins plus
<asp:LinqDataSource ID="x_oLinqRegistry" runat="server" ContextTypeName="WhoisDataContext"
EnableInsert="True" EnableUpdate="True" TableName="T_Registries"
Where="lab_WhoisServer.Contains(@lab_WhoisServer) || lab_Provider.Contains(@lab_WhoisServer)"
EnableViewState="true" StoreOriginalValuesInViewState="true">
<WhereParameters>
<asp:ControlParameter ControlID="x_txtWhoisServer" Name="lab_WhoisServer" PropertyName="Text"
Type="String" ConvertEmptyStringToNull="False" />
</WhereParameters>
</asp:LinqDataSource>
Ajouter un commentaire
Ce document intitulé « ASP.NET 3.5 avec SQL SERVER : Problème LIKE » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?