2009-02-09 3 views
0

Мне нужно изменить, какие строки извлекаются из базы данных на основе нескольких флагов. Как я могу это сделать? Мой текущий код выглядит так:Селективное заполнение набора данных

this.tblTenantTableAdapter.Fill(this.rentalEaseDataSet.tblTenant); 

Скажите, если бы я хотел только строк, чтобы идентификатор был больше 50, как бы я это сделал?

Edit:

Код для доступа к базе данных был сгенерирован с помощью оригинального программатора давно, хотя VisualStudio. Я не знаю точно, как получить соединение с автогенерированным кодом. Если бы я мог это сделать, я знаю, как использовать SqlDataAdapter

ответ

2

Почему бы вам не использовать предложение WHERE в вашем SQL-запросе?

Кроме того, я надеюсь, вы не используете поле ID для чего-либо подобного. Если вам просто нужны первые 50 вариантов, вы можете использовать предложение TOP 50 или что-то подобное.

некоторой информации о том, как сделать это с TableAdapter: http://www.shiningstar.net/ASPNet_Articles/DataSet/DataSetProject7.aspx

+0

Я на самом деле не использую SQL-запрос, и это проблема ... Я работаю над устаревшим кодом, и мне нужно работать с тем, что VS2008 дал мне и тем, что использовал исходный программист. И.Е. TableAdapter вместо соединения с базой данных. Я все еще изучаю C# тоже :( – Malfist

+0

@ malfist: У вас есть контроль над кодом и БД? В чем проблема? – GEOCHET

+0

У меня нет контроля над БД, код доступа к БД был автогенерирован Visual Studio – Malfist

0

Я предположил бы, что самый простой способ изменить то, что SQL-запрос работает за кулисами с помощью ИНЕК.

1

На стороне сервера вы можете использовать клетчатый старый SQL:

SELECT * FROM TBLTENANT WHERE id > 50 

На стороне клиента:

rentalEaseDataSet.tblTenant.DefaultView.RowFilter = "id > 50"; 
+0

BindingSource, к которому он привязан, все еще показывает все строки, поэтому BindingNavigator все еще обращается ко всем из них. – Malfist

+0

@Maflist - вместо этого используйте свойство фильтра BindingSource. –

0

Ваш TableAdapter должен иметь CommandText указанного в запрос SQL с ИНЕКЕМ ,

private void InitCommandCollection() { 
     this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; 
     this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); 
     this._commandCollection[0].Connection = this.Connection; 
     this._commandCollection[0].CommandText = @"SELECT * FROM MyTable WHERE ID >50;"; 
     this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; 
    } 

Примечание: Этот запрос является только примером, не предназначены в качестве запроса раствора. Формат вышеуказанного кода используется для редактирования созданного класса InitCommandCollection() класса конструктора табличного адаптера, чтобы вы могли указать свой собственный SQL. Возможно, у вашего класса уже есть SQL, и в этом случае вы можете просто изменить его.

+0

Вы не решаете проблему с использованием поля идентификатора, подобного этому ... – GEOCHET

+0

Наличие «идентификатора» в предложении WHERE является всего лишь примером, фрагмент кода предназначен для выделения способа редактирования класса TableAdapter для добавления SQL ограничения на созданный файл конструктора. –

+0

@ Jay S: Он спросил, как это сделать, вы должны быть осторожны, советуя ему, как это сделать, не предупредив его. – GEOCHET

Смежные вопросы