0

我有一个在 Access 中运行的查询,当我在我的网站上执行它时似乎没有运行。这是我希望数据库为其填充内容的网页的代码:

    <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
                        DataFile="~/App_Data/TravelJoansDB.accdb" 
                        SelectCommand="SELECT * FROM [Table2] INNER JOIN BlogEntryItems ON Table2.ID=BlogEntryItems.BlogID AND Table2.ID=@ID">
                        <SelectParameters>
                            <asp:QueryStringParameter Name="ID" QueryStringField="Table2.ID" Type="Decimal" />                    
                        </SelectParameters>
                        </asp:AccessDataSource>

    <asp:DataList ID="DataList1" DataSourceID="AccessDataSource1" 
            runat="server" ItemStyle-CssClass="picTableStyle"
            DataKeyField="Table.2ID">
            <ItemStyle></ItemStyle>
            <ItemTemplate>
                <table>
                   <tr>
                      <td>
                         <asp:Image ID="Image1" runat="server" ImageUrl='<%# "PlaceImages/" + Eval("Image") %>' /><br />
                         <asp:Label ID="Label1" CssClass="picCaptionStyle" runat="server" Text='<%# Eval("Caption") %>' />
                      </td>
                   </tr>
                   <tr>
                      <td>
                      <asp:Label ID="Label4" class="picBodyText" runat="server" Text='<%# Eval("PicStory") %>' />
                      </td>
                   </tr>
                </table>
            </ItemTemplate>

    </asp:DataList>

当我取出加入时,它工作正常。我添加了加入,它没有给我任何错误或任何东西,它似乎没有任何结果可以显示在我的网站上。有任何想法吗?

4

1 回答 1

0

请注意,我没有在AccessDataSource. 但是,查看文档 - 这是您应该查看的内容

  • 更改要使用的查询?而不是@ID
    SelectCommand="SELECT * FROM [Table2] INNER JOIN BlogEntryItems ON Table2.ID=BlogEntryItems.BlogID AND Table2.ID= ?"

因为 AccessDataSource 控件扩展了 SqlDataSource 类并使用 System.Data.OleDb 提供程序,所以使用“?”指定参数占位符。占位符字符。

参考:http: //msdn.microsoft.com/en-us/library/8e5545e1%28v=vs.100%29.aspx

  • 如果上述方法不起作用,请省略Decimal参数的数据类型 ( ) 或指定相关类型,例如Integer代替。
于 2013-08-19T06:34:18.750 回答