![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Всем привет! У меня проблема с серверным курсором. Он не отображает некоторые данные. Помогите, пожалуйста, разобраться. Есть 2 таблицы:
Код:
Код:
Код:
Я использую серверный курсор, т.к. с с ним запрос Код:
![]() Последний раз редактировалось Сергей089; 17.04.2013 в 22:06. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А почему решили, что такая большая разница по времени выполнения запроса? Просто при клиентском курсоре переданы все данные клиенту, а при серверном вы все данные приняли за эти 3 сек? Скорее всего именно поэтому не увидели данных с NULL по полям kladr. Кстати зачем их все передавать клиенту? Как насчет индекса по полю code таблицы kladr?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Время открытия ADOQuery замерял с помощью QueryPerformanceCounter и QueryPerformanceFrequency, затем переводил в секунды.
Код:
При курсоре clUseServer ADOQuery открывается 3 секунд и загружает только ЧАСТЬ данных. Затем при скролинге идет подгрузка данных. Это я наблюдал в диспетчере задач (график "получено байт" желтого цвета). Подгрузка данных идет довольно быстро, тормозов я не наблюдал. Это я замерял только открытие таблицы school_adres БЕЗ кладра. Цитата:
Последний раз редактировалось Сергей089; 17.04.2013 в 22:54. |
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Аватар, вы меня не поняли. Наверное я не так написал.
Мне все записи за раз не нужно грузить. Это слишком долго. Надо будет пользователю, они сами при скролинге подгрузятся. Меня это как раз устраивает, все быстро соединяется. Данные начинают пропадать только после добавления в запрос Код:
Короче, вместо Код:
Код:
Кстати, СУБД - MS SQL 2005. Последний раз редактировалось Сергей089; 17.04.2013 в 23:28. Причина: Переименование заголовка |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А как можно визуально убедиться на таком количестве записей, что что-то пропало? В варианте запроса с LEFT JOIN запросто данные могут быть переданы не в той последовательности, чем без него, особенно в той части, где в kladr не найдено соответствия. Поставьте один и тот же ORDER BY для обеих случаев и не сомневаюсь, что пропажа найдется. Или после ADOQuery.Last посмотрите что вернет ADOQuery.RecordCount
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Я сейчас на тестовой базе в таблице school_adres оставил всего две записи
Первая запись - школа в столице, поэтому района нет Код:
Код:
После выполнения запроса Код:
|
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Выполнил какие-то шаманские действия, и ADOQuery стал нормально работать
![]() Просто так захотел посмотреть на результат запроса Код:
Цитата:
Вставил назад первый запрос Код:
![]() Если создать новый проект, кинуть на форму ADOConnection, ADOQuery, DataSource и DBGrid, выставить в ADOQuery серверный курсор, выполнить запрос Код:
В чем может быть причина? Что-то мне такое решение не нравится. Последний раз редактировалось Сергей089; 18.04.2013 в 09:25. |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Сравнив свойства ADOQuery до и после моего шаманства, увидел
до Код:
Код:
![]() Пойду почитаю про них... |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 22.09.2008
Сообщений: 214
|
![]()
Почитал про эти свойства. Пока меня это устраивает.
Проблема решена ![]() Всем спасибо! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
добавление записи через adoquery | kolyan2288 | БД в Delphi | 2 | 07.01.2013 22:18 |
Фильтр через CheckListBox не конвертирует, не отображает null | reihtmonbern | БД в Delphi | 1 | 24.05.2012 11:24 |
Добавление записи в ADOQuery. | lovetolaugh | БД в Delphi | 10 | 11.06.2011 19:07 |
Добавление записи в БД средствами ADOQuery. | lovetolaugh | Помощь студентам | 0 | 16.05.2011 19:02 |
ADOQuery ничего не отображает | kopoba | БД в Delphi | 3 | 05.06.2009 10:40 |