私は1つのテキストボックスを使用してレポートを検索し、レコードをフィルタリングしています。私のフィールドの1つはint32で、残りはvarcharです。したがって、フィルタがテキストボックスの文字列とint32フィールドを比較しようとすると、エラーが発生します。ここでSQLDataSouceや検索ボックスです:SqlDataSource FilterExpressionでキャストを実行するにはどうすればよいですか?
<asp:TextBox ID="SearchBox" AutoPostBack="true" OnTextChanged="SearchBox_TextChanged" runat="server"></asp:TextBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:oneworldunitedConnectionString %>"
SelectCommand="SELECT usrs.UserID, usrs.UserName, usrs.FirstName, usrs.LastName, jndt.PropertyValue AS JoinDate, rgn.PropertyValue AS Region, cty.PropertyValue AS City, spnsrnm.PropertyValue AS SponsorName FROM dbo.Users AS usrs INNER JOIN
dbo.UserProfile AS jndt ON jndt.PropertyDefinitionID = 412 AND usrs.UserID = jndt.UserID INNER JOIN
dbo.UserProfile AS cty ON cty.PropertyDefinitionID = 27 AND usrs.UserID = cty.UserID INNER JOIN
dbo.UserProfile AS rgn ON rgn.PropertyDefinitionID = 28 AND usrs.UserID = rgn.UserID INNER JOIN
dbo.UserProfile AS spnsrnm ON spnsrnm.PropertyDefinitionID = 421 AND usrs.UserID = spnsrnm.UserID"
FilterExpression="UserID LIKE '%{0}%' OR UserName LIKE '%{0}%' OR FirstName LIKE '%{0}%' OR LastName LIKE '%{0}%' OR JoinDate LIKE '%{0}%' OR Region LIKE '%{0}%' OR City LIKE '%{0}%' OR SponsorName LIKE '%{0}%'">
<FilterParameters>
<asp:ControlParameter Name="Search" ControlID="SearchBox" PropertyName="Text" />
</FilterParameters>
</asp:SqlDataSource>
SQL文をbashのないようにしてください、私はそれが非常に非効率的であることを知っています。誰もがFilterExpression
を変更する方法を知っているので、テキストボックスの値をUserIDフィールドと比較しようとするとエラーが表示されませんか?私はこれをやってみた:
FilterExpression="CAST(UserID as varchar(4)) LIKE '%{0}%' OR UserName LIKE '%{0}%' OR FirstName LIKE '%{0}%' OR LastName LIKE '%{0}%' OR JoinDate LIKE '%{0}%' OR Region LIKE '%{0}%' OR City LIKE '%{0}%' OR SponsorName LIKE '%{0}%'"
しかし、それは動作しませんでした。私はUserID LIKE CAST('%{0}%' as varchar(4))
をやっていると思っていました。なぜなら、実際に入力した文字列であればエラーになるからです。
編集:ここでは、私はが得たエラーメッセージです「と可能System.Int32可能System.Stringに 『』と同様の操作を実行できません。」それは私がキャストをする前のことでした。その後、キャストを行った後、"式に未定義の関数呼び出しCast()が含まれています。"
誰でもアイデアはありますか?
おかげで、
マット
エラーメッセージを教えてください。 – RBarryYoung
これらはSQL Serverのエラーではありません。最初のものは間違いなく.netエラー、*多分* ADO.netですが、CLRエラーでもあります。 2番目は私にとって完全な謎です。あなたのコードや使用しているものが、SQL Serverに渡される前に文字列を解析しようとしています。そして、どこから来ているのでしょうか。 – RBarryYoung