2012-02-23 27 views
0

whereコマンドを実行しないと、カテゴリ[OleDbException(0x80040e14):クエリ式 'PCName = <%#Eval(' PCName ')%>'の構文エラー(演算子がありません)。

NEWのラップトップ エイサー デル HP キングストン ソニー USBフラッシュドライブ エイサー デル HP USEDキングストン ソニー ラップトップ エイサー デル HP キングストン ソニー

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"></head> 
<body>  
<form id="form1" runat="server"> 
<div> 
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1"> 
    <ItemTemplate> 
    <li><asp:Label ID="Label1" runat="server" Text='<%# Bind("PCName") %>' /></li> 
<asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/Database/PDetail.mdb" 
SelectCommand="SELECT DISTINCT [PBName] FROM [PDETAIL] WHERE PCName= <%# Eval('PCName')%> " /> 
<asp:Repeater ID="Repeater2" runat="server" DataSourceID="AccessDataSource2"> 
    <ItemTemplate> <li> <%# Eval("PBName")%> </li> </ItemTemplate> 
</asp:Repeater> 
    </ItemTemplate> 
    </asp:Repeater> 

<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/Database/PDetail.mdb" 
    SelectCommand="SELECT DISTINCT [PCName] FROM [PDETAIL]" /> 
</div> 
</form> 

+0

「は」仕事ですが、その後、このエラーは、私は<%#の結果だと思う上 – user1228468

答えて

0
<ItemTemplate> 

<asp:AccessDataSource ID="AccessDataSource2" 
     runat="server" DataFile="~/Database/PDetail.mdb" 
     SelectCommand='<%# "SELECT DISTINCT [PBName] FROM [PDETAIL] WHERE PCName= " + (char)39 + Eval("PCName") + (char)39 %>' /> 

</ItemTemplate> 


(char)39 is for ' 
+0

すでに2コード内のリピータが、エラーが指定されているOCCURS Eval( "PCName")%>は文字列varとvarに格納され、SQLクエリで使用され、初期値は – user1228468

+0

です。これを試すことができますか? –

+0

あなたの名前にアポストロフィがないことを願っています...しかし、別のアプローチを試す必要があると思います。親リピータ呼び出しitem.FindControl( "AccessDataSource2")のItemDataBoundイベントで、適切なコントロールに変換し、item.Dataにある値をSelectParametersに追加します。この方法では、名前に不要なリテラルがあり、SQLインジェクションに悩まされない安全なステートメントを作成しているので、エラーは発生しません。 –

関連する問題