2012-02-23 31 views
0

沒有where命令結果像這樣重複每次產品後重復所有記錄類別[OleDbException(0x80040e14):查詢表達式'PCName = <%#Eval('PCName')%>'中的語法錯誤(缺少運算符)。]

新的筆記本電腦宏碁 戴爾 HP 金士頓 索尼 USB閃盤 宏基 戴爾 HP 金士頓 索尼 二手筆記本 宏基 戴爾 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 2012-02-23 15:36:35

回答

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中繼給出上述我認爲的結果<%# Eval(「PCName」)%>存儲在SQL查詢中使用的字符串var和var並且有一些初始值 – user1228468 2012-02-23 15:54:05

+0

你可以試試這個嗎? – 2012-02-23 16:19:09

+0

我希望你的名字中沒有撇號......但是我認爲你需要嘗試另一種方法。在父Repeater調用item.FindControl(「AccessDataSource2」)的ItemDataBound事件上,然後將其轉換爲適當的控件,並將在item.Data中找到的值添加到SelectParameters中。這樣您就不會因爲名稱中不需要的文字而導致錯誤,並且您可以創建不受SQL注入影響的安全語句。 – 2012-02-23 16:25:12

相關問題