Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Visual C# постраничная навигация.
 
 автор: EvgenLog   (18.03.2007 в 15:11)   письмо автору
 
 

Здравствуйте. Вот такой вопрос у меня возник.

Я вытаскиваю строки из БД, определённым запросом и записываю их в TableAdapter следующим образом.


DataSet XMLTransSearchByRegionDataSet = new DataSet("SearchByRegion");

SQLiteDataAdapter XMLSearchByRegionAdapter = new SQLiteDataAdapter(
              "SELECT * FROM corp_inform WHERE region_loc='" + SplitID[2] + "'", ConnectTo);
XMLSearchByRegionAdapter.Fill(XMLTransSearchByRegionDataSet, "corp_inform");


Да квот, вытаскивается естественно ВСЁ. это хорошо, но нужно сделать так, чтобы всё, что вытащилось, было распределено по страницам.

Т.е. у меня есть WebBrowser на форме, туда, после XSLT преобразований выводятся данные в форматированном виде, те данные, которые были выбраны из базы, при помощи вышеуказанной конструкции.

Мне нужно, чтобы выбранные данные заносились в массив и в нижней части окна показывалась панель со ссылками на другие страницы.

P.S. Данные, которые выбираюстя из бащы, заносятся в TableAdapter, а затем переносятся в XML документ, далее XML жокумент преобразуется в HTML и выводится в webBrowser - контрол. На XML, XSLT или HTML постраничную навигацию не сделать, остаётся только один вариант, "порциями" выдавать информацию в XSLT - транслятор.

Спасибо.

  Ответить  
 
 автор: cheops   (18.03.2007 в 22:51)   письмо автору
 
   для: EvgenLog   (18.03.2007 в 15:11)
 

Да суть такая же как и в PHP - определяете количество записей в базе даных - вычисляете количество страниц. И в зависимости от номера вычисляете числа для конструкции LIMIT SELECT-запроса.

  Ответить  
 
 автор: EvgenLog   (18.03.2007 в 23:58)   письмо автору
 
   для: cheops   (18.03.2007 в 22:51)
 

Вот в том-то и проблема. Я не знаю как узнать какое количество записей выбрано из базы... Не подскажете?

  Ответить  
 
 автор: cheops   (19.03.2007 в 01:28)   письмо автору
 
   для: EvgenLog   (18.03.2007 в 23:58)
 

Это MS SQL?

  Ответить  
 
 автор: EvgenLog   (19.03.2007 в 07:56)   письмо автору
 
   для: cheops   (19.03.2007 в 01:28)
 

Ну... Почти. Это движок SQLite. Запросы используются те же самые.

  Ответить  
 
 автор: cheops   (19.03.2007 в 11:49)   письмо автору
 
   для: EvgenLog   (19.03.2007 в 07:56)
 

А SQLite поддерживает функцию COUNT() и вообще какие-нибудь функции?

  Ответить  
 
 автор: EvgenLog   (19.03.2007 в 12:07)   письмо автору
 
   для: cheops   (19.03.2007 в 11:49)
 

Поддерживает. А где её использовать? И ещё, допусим, этот вариант с функцией COUNT(), работоспособен, но всё-таки, насколько я понимаю, придётся делать ещё один запрос в базу, чтобы посчитать количество строк с заданным критерием. Можно-ли обойтись без этого? Например, заглянуть в DataTable, для которого был сделан запрос. Я пытался, но что-то ничего там про количество строк не нашёл. Жду помощи, спасибо.

  Ответить  
 
 автор: cheops   (19.03.2007 в 13:02)   письмо автору
 
   для: EvgenLog   (19.03.2007 в 12:07)
 

Хм... лучше оформить отдельный запрос, скорее всего DataTable не хранит всю таблицу в памяти, а выступает как курсор. Даже если этот класс поддерживает метод, возвращающий количество записей в таблице, он всё равно будет осуществлять запрос. Поэтому лучше пока реализовать собственный запрос
"SELECT COUNT(*) FROM corp_inform WHERE region_loc='" + SplitID[2] + "'"

  Ответить  
 
 автор: EvgenLog   (19.03.2007 в 19:39)   письмо автору
 
   для: cheops   (19.03.2007 в 13:02)
 

А этот запрос возвращает только количество записей или информацию тоже? Видимо только количество записей. Возможно-ли как-тообъединить эти два запроса, чтобы всё делалось за раз? Или ни как? И вообще. Вот запрос БЕЗ COUNT(*), записывает данные в DataSet, а они потом из него выводятся в XML и транслируются в HTML. А как можно воспользовать данными, которые будут получены из запроса С COUNT(*)? Т.е. можно-ли это куда-нибудь в переменную записать? А пото использовать эту переменную?

  Ответить  
 
 автор: cheops   (19.03.2007 в 23:05)   письмо автору
 
   для: EvgenLog   (19.03.2007 в 19:39)
 

Нет запрос к функции COUNT(*) возращает лишь одно число, получить данные совместно с этой агрегатной функцией нельзя, соответственно потребляет меньше памяти, а зачастую и ресурсов, чем при обычном SELECT-запросе. Можно ли из DataSet выжать количество строк - не знаю.

  Ответить  
 
 автор: EvgenLog   (20.03.2007 в 11:38)   письмо автору
 
   для: cheops   (19.03.2007 в 23:05)
 

Ну хорошо, а как же всётаки записать количество строк, полученных запросом COUNT(*), в переменную?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования