/// <summary> /// Gets a <see cref="PollDataSet"/> containg all the polls with the given filter. /// </summary> protected internal override PollDataSet GetPollsByFilter(PollSelectionFilter filter) { PollDataSet polls = new PollDataSet(); using (OleDbConnection cn = this.CreateConnection()) { OleDbDataAdapter da = null; da = new OleDbDataAdapter(); da.SelectCommand = CreateSelectionCommand("*", filter); da.SelectCommand.Connection = cn; da.TableMappings.Add(PollsTable, polls.Polls.TableName); da.Fill(polls.Polls); da = new OleDbDataAdapter(); da.SelectCommand = CreateSelectionCommand("PollID", filter); da.SelectCommand.CommandText = "Select * From " + OptionsView + " Where PollID In ( " + da.SelectCommand.CommandText + " )"; da.SelectCommand.Connection = cn; da.TableMappings.Add(OptionsView, polls.Options.TableName); da.Fill(polls.Options); da = new OleDbDataAdapter(); da.SelectCommand = CreateSelectionCommand("PollID", filter); da.SelectCommand.CommandText = "Select * From " + VotesTable + " Where PollID In ( " + da.SelectCommand.CommandText + " )"; da.SelectCommand.Connection = cn; da.TableMappings.Add(VotesTable, polls.Votes.TableName); da.Fill(polls.Votes); } return(polls); }
private static OleDbCommand CreateSelectionCommand(String fields, PollSelectionFilter filter) { OleDbCommand cmd = new OleDbCommand(); System.Text.StringBuilder sql = new System.Text.StringBuilder(); sql.Append("Select "); sql.Append(fields); sql.Append(" From "); sql.Append(PollsTable); if (filter.IsFilterSet) { sql.Append(" Where "); if (filter.Category != null) { sql.Append(" Category Like ?"); cmd.Parameters.Add("@Category", OleDbType.VarWChar).Value = "%" + filter.Category + "%"; } if (filter.Text != null) { if (sql[sql.Length - 1] != ' ') { sql.Append(" And "); } sql.Append(" Text Like ?"); cmd.Parameters.Add("@Text", OleDbType.VarWChar).Value = "%" + filter.Text + "%"; } if (!filter.BeginDate.IsNull) { if (sql[sql.Length - 1] != ' ') { sql.Append(" And "); } sql.Append(" StartDate >= ?"); cmd.Parameters.Add("@StartDate", OleDbType.Date).Value = filter.BeginDate.Value; } if (!filter.EndDate.IsNull) { if (sql[sql.Length - 1] != ' ') { sql.Append(" And "); } sql.Append(" StartDate <= ?"); cmd.Parameters.Add("@EndDate", OleDbType.Date).Value = filter.EndDate.Value; } } cmd.CommandText = sql.ToString(); return(cmd); }
/// <summary> /// Gets a <see cref="PollDataSet"/> containg all the polls with the given filter. /// </summary> public static PollDataSet GetPollsByFilter(PollSelectionFilter filter) { PollDataSet p = Polling.Provider.GetPollsByFilter(filter); return(p ?? new PollDataSet()); }
/// <summary> /// Gets a <see cref="PollDataSet"/> containg all the polls with the given filter. /// </summary> protected internal abstract PollDataSet GetPollsByFilter(PollSelectionFilter filter);