1

私は今これにあまりにも長い時間を費やしてきました.私は解決策にかなり近づいていると確信しています.

テーブル「FamousQuotes」からすべてのフィールドを取得し、リピーターで繰り返したいと思います。残念ながら、現時点ではこれは機能していません。コンパイル時のエラーは発生しませんが、実行時にリピーターにデータが表示されることもありません

これが私のコードビハインドです:

Sub randomQuote()
        Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
        conn.Open()
        Dim cmd As New OleDbCommand("SELECT TOP 1 * FROM [FamousQuotes] ORDER BY rnd(INT(NOW*id)-NOW*id)", conn)
        cmd.ExecuteNonQuery()
        Dim datareader As OleDbDataReader = cmd.ExecuteReader()
        If datareader.HasRows Then
            datareader.Read()
            quoteCascade.DataSource = datareader
            quoteCascade.DataBind()
            datareader.Close()
            datareader = Nothing
        End If

        conn.Close()
    End Sub

私のリピーターコードを見る必要はないかもしれませんが、特に目立ったものではありません。

 <asp:Repeater id="quoteCascade" runat="server">
    <ItemTemplate>
    <blockquote>
        "<%#Container.DataItem("Quote")%>"
    <small>
        <%#Container.DataItem("SourceName")%><cite title="Source Title">
            <%#Container.DataItem("SourceTitle")%></cite></small>
    </blockquote>
    </ItemTemplate>
    </asp:Repeater>

それで、ここで何がうまくいかないのですか?

編集:私は、以下のダミアン・ジョーの答えである作業コードで質問を更新しました:

Sub randomQuote()
    Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
    conn.Open()
    Dim cmd As New OleDbCommand("SELECT TOP 6 * FROM [FamousQuotes] ORDER BY rnd(INT(NOW*id)-NOW*id)", conn)
    quoteCascade.DataSource = cmd.ExecuteReader()
    quoteCascade.DataBind()
    conn.Close()
End Sub
4

1 に答える 1