Devido ao cache do conjunto de registros do banco de dados Access, não é possível obter registros aleatórios do banco de dados Access a partir do código. É necessário usar instruções SQL aleatórias para eliminar o cache.
Aqui está um exemplo:
Veja o exemplo http://dotnet.aspx.cc/Exam/GetRandom.aspx
<%@ Page Language="C#" Debug="true" %>
<%@importar Namespace="System.Data" %>
<%@importar Namespace="System.Data.OleDb" %>
<title>Obter registros do banco de dados Access aleatoriamente</title>
<script runat="servidor">
void Page_Load(objeto src,EventArgs e)
{
if(!IsPostBack)
{
string MyConnString = "Provider=Microsoft.Jet.OleDB.4.0;Fonte de dados="
+ Server.MapPath("aspxWeb.mdb.ascx");
Aleatório R = novo Aleatório();
int intRandomNumber = R.Next(1,1000);
string sql = "selecione os 10 principais id como número de série, título como título do documento Order By Rnd("
+ (-1 * intRandomNumber).ToString() + "*id)";
OleDbConnection MinhaConexão = new OleDbConnection(MyConnString);
MinhaConexão.Open();
OleDbCommand cmd = new OleDbCommand(sql,MinhaConexão);
OleDbDataReader dr = cmd.ExecuteReader();
DataGrid1.DataSource = dr;
DataGrid1.DataBind();
cmd.Dispose();
MinhaConexão.Close();
MinhaConexão.Dispose();
MinhaConexão = null;
}
}
</script>
<form runat=servidor>
<asp:DataGrid id="DataGrid1" HorizontalAlign="Center"
Width="600px" runat="servidor" Font-Size="9pt">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center" />
</asp:DataGrid>
</form>