Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Как настроить DBGrid при ADOQuery.CursorType = ctDynamic?   Найти похожие ветки 

 
jeka_t   (2005-09-27 10:23) [0]

Добрый день всем...
У меня проблема:
Есть на форме компонент ADOQuery1
У него свойства CursorLocation = clUseServer и CursorType = ctDynamic
Выбираю из базы:
ADOQuery1.SQL.Text := "Select * from Table1";
ADOQuery1.Open;
Хочу показать таблицу с помощью компонента DBGrid...
Но при запуске пишет ошибку:
"DateSet does not suport bookmarks, which are required for multi-record data controls".
Я так понял, что этот компонент не предусмотрен для этого типа курсора...
Подскажите как мне его изменить или каким компонентом можно заменить, так как менять тип курсора не очень то хочеться (очень уж надо оставить его таким...)


 
Nikolay M. ©   (2005-09-27 11:40) [1]

Либо менять-таки тип курсора, либо не пользоваться DBGrid, DBListBox и прочими "multi-record data controls".


 
jeka_t   (2005-09-27 11:42) [2]

А есть ли DBGrid, который не пользуется "Закладками" (bookmarks)?


 
ANB ©   (2005-09-27 13:03) [3]


> jeka_t   (27.09.05 11:42) [2]

1. Я таких не видел.
2. А почему бы не настроить курсор, как нужно ?


 
jeka_t   (2005-09-27 13:09) [4]

Потому что при этом типе многопользовательский доступ к базе эфективнее и быстрее... (150 клиентов)


 
Nikolay M. ©   (2005-09-27 13:16) [5]


> многопользовательский доступ к базе эфективнее и быстрее

А мужики-то не знают... :)


 
Sergey13 ©   (2005-09-27 13:19) [6]

2[4] jeka_t   (27.09.05 13:09)
"эфективнее и быстрее" обычно не использовать "Select * from Table1"


 
jeka_t   (2005-09-27 13:25) [7]

это я к примеру...


 
sniknik ©   (2005-09-27 13:45) [8]

можеш положить рядом DataSetProvider с ClientDataSet и перекачать все в него, грид подключать уже к нему. только этим ты "убьеш" все преимущества за которые борешся, надуманные по моему

ну к примеру открой достаточно большой рекордсет с клиентским курсором и с серверным динамическим, без подключения к гриду естественно (еще и DisableControls для гарантии сделай)
и засеки время открытия там и там
а после пустой цикл с Next (пробежку по реrордсету) и засекай время... после сравниш. и что в сумме больше и быстрее и насколько... (это насчет "эфективнее и быстрее")
а то сравнивают всегда только время открытия почемуто.


 
jeka_t   (2005-09-27 13:59) [9]

Для меня важно время открытия и время обновления...
Так как обновляя методом ADOQuery1.Refresh пользователь увидит обновления гораздо быстрее чем ADOQuery1.close а затем ADOQuery1.Open
Тип KeySet даст мне отредактированные поля, но добавленные новые записи не даст...


 
sniknik ©   (2005-09-27 14:21) [10]

> Для меня важно время открытия и время обновления...
;о))
и думаеш оно быстрее при ctDynamic?

ситуация - к примеру запрос вернул милион записей (нежелательно, ну допустим так получилось), пользователь постепенно добрел до последней "страницы"... и тут (как снег на голову ;) тебе (именно тебе, пользователь рассматривает то, что уже есть) захотелось сделать обновление  - слозе/опен и переставляеш курсор на посладнюю страницу(/запись в последнем экране) там где пользователь был...
открытие при клиентском займет (примерно конечно)  7-10 сек, перестановка на последнее 0.с чемто. сек.
при серверном и динамике открытие = 0.с чемто. сек., перестановка... рискуеш не дождаться. (10мин/пол часа вполне нормальные цифры при таком подходе)

и что быстрее? ;)

вообще для "ускорения" открытия, визуального, используют асинхронное получение данных. а за обновление данных без желания пользователя они собираются вместе... и бьют морду разработчику. ;о))


 
jeka_t   (2005-09-27 14:32) [11]

Дело в том, что колличество выбранных записей буквально до 10 шт не больше.


 
sniknik ©   (2005-09-27 14:37) [12]

> Дело в том, что колличество выбранных записей буквально до 10 шт не больше.
и изза этого сыр бор? переоткрытие с клиентским курсором в этом случае будет сравнимо с серверным, зависимо больше от случая чем типа, очень мало, и стремится к нулю... за какой знак после запятой борьбу ведеш? ;)


 
jeka_t   (2005-09-27 15:18) [13]

Да нет уж, проверил...
Закрывать и открывать за 7 сек получается. Да ещё бывает ругается при октрытии базы, если кто-то (150 клиентов) в это время редактирует базу...


 
sniknik ©   (2005-09-27 15:57) [14]

> Закрывать и открывать за 7 сек получается. Да ещё бывает
> ругается при октрытии базы


ну так, с твоей программой клиенты то работают? отсюда и "скорость" и глюки. ;о))

проверь "грязное чтение" (чтобы не ждать транзакций при "если кто-то ... редактирует базу"), т.е. запрос вида SELECT * FROM Table1 WITH (NOLOCK). тоже 7 сек?


 
sniknik ©   (2005-09-27 15:59) [15]

имею ввиду 7 сек. на заявленных 10записях. (а то будеш сравнивать с милионом ;)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
2-1128628571
leonw
2005-10-06 23:56
2005.11.06
Directory


1-1129507854
stef
2005-10-17 04:10
2005.11.06
Внезапно вызывается OnCanResize для формы


1-1129268173
denmin
2005-10-14 09:36
2005.11.06
Нужен FAQ или справочник по Rave Reports 5.0.


14-1129238296
LordOfRock
2005-10-14 01:18
2005.11.06
Ну, только сразу не бейте :) (опять про сайт)


14-1129577672
YurikGL
2005-10-17 23:34
2005.11.06
Глюкало





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский