Текущий архив: 2004.09.26;
Скачать: CL | DM;
Вниззапрос с помощью TADOCommand Найти похожие ветки
← →
ydv (2004-08-24 14:01) [0]Как мне получить набор данных, доступный для редактирования?
Пример кода:
AdoCommand.Text := "select * from my_table;"
AdoQuery1.RecordSet := AdoCommand.Execute;
дает нередактируемый набор данных :((
← →
KSergey © (2004-08-24 14:05) [1]Еще у них есть LockType
Он чему равен?
А вообще, зачем такой изврат? А простоAdoQuery1.SQL.Text := "select * from my_table;"
AdoQuery1.Open;
уже не прикольно?
← →
ydv (2004-08-24 14:11) [2]нет, AdoQuery не прикольно, ибо таблица большая и AdoQuery.Open отваливается по таймауту т.к. задержка больше 15 секунд. Свойство CommandTimeOut не работает.
← →
Ega23 © (2004-08-24 14:20) [3]А
select * from my_table WHERE ....
не прикольно?
Конечно, надо все 10000000 записей на клиент вывалить, а потом ещё их обновлять, когда кто-то другой с другого клиента изменил запись...
← →
KSergey © (2004-08-24 14:24) [4]> [2] ydv (24.08.04 14:11)
> нет, AdoQuery не прикольно, ибо таблица большая и AdoQuery.Open
> отваливается по таймауту т.к. задержка больше 15 секунд.
> Свойство CommandTimeOut не работает.
Ну, во-первых [3] Ega23 © (24.08.04 14:20) прав. Это что же за такое кол-во записей, которые на клиента выгребаются более 30 секунд? (именно такой таймаут в AdoQuery)??!
Во-вторых, есть TADODataSet, в котором таймаут настраивается. И вообще, AdoQuery - это протез от борланда для пользователей привыкших к компонентам со вкладки DataAcces. При работе с ADO рекомендуется к использованию именно TADODataSet.
← →
ydv (2004-08-24 14:34) [5]Ega23 неправ абсолютно. Количество записей? Запросто, возьмите пример таблицу бухгалтерских проводок, да плюс еще перегруженный сервак, вот и будет вам 30 секунд.
← →
KSergey © (2004-08-24 14:52) [6]> [5] ydv (24.08.04 14:34)
> Ega23 неправ абсолютно. Количество записей? Запросто, возьмите
> пример таблицу бухгалтерских проводок, да плюс еще перегруженный
> сервак, вот и будет вам 30 секунд.
Нафиг их все тащить на клиента? Вот в чем вопрос. Он что, будет их все смотреть??
← →
ydv (2004-08-24 14:55) [7]Нафиг их все тащить на клиента?
Конечно, мало того, юзер их еще и распечатает.
← →
KSergey © (2004-08-24 14:57) [8]Сколько у него это займет листов бумаги?
Только не говорите "10". Или даже 100. Такое кол-во инфы тащится с сервера никак не 30 сек. (если только сервер не на P-75)
← →
Ega23 © (2004-08-24 15:07) [9]Ega23 неправ абсолютно.
Ega23 три системы складские написал, помимо основной работы. Так что Ega23 знает о чём говорит. Пользователь не должен видеть выборки с более чем 300-500 записей, это его напрягает. Идеал - от 20 до 50.
← →
ydv (2004-08-24 15:10) [10]KSergey ©
>Сколько у него это займет листов бумаги?
только не говорите "10". Или даже 100. Такое кол-во инфы тащится сервера никак не 30 сек. (если только сервер не на P-75)
Я же говорю, перегружен сервак, таблицы громадные, хоть и проиндексированы, все равно больше 15 секунд выполняется
← →
KSergey © (2004-08-24 15:14) [11]Да хоть трижды громадные!!!
Нахрен вся зписи тащить - это будет отвечено или нет?!!
Или хотите сказать, что 100 записей тащатся 30 сек?!! Тогда что-то надо менять... (не будет уточнять)
← →
ydv (2004-08-24 15:20) [12]Я простой запрос приведу, который всего 4 записи тащит, но выполняется 20 с: SELECT * FROM logs WHERE name like "%test%"
Вот и всё
← →
Ega23 © (2004-08-24 15:23) [13]Но ведь не 30 секунд! :о)
← →
Ega23 © (2004-08-24 15:25) [14]И, кстати, мне что-то непонятно, а откуда пошло это 30 сек? При чём здесь MS SQL Server default timeout? У меня некоторые запросы по 4 минуты выполняются, и ничего страшного...
← →
ydv (2004-08-24 16:02) [15]я на TAdoQuery пытаюсь делать, так вот timeout там не изменяется и равен 15 с.
← →
KSergey © (2004-08-24 16:02) [16]> [14] Ega23 © (24.08.04 15:25)
> И, кстати, мне что-то непонятно, а откуда пошло это 30 сек?
Вшито мертво в TADOQuery
← →
KSergey © (2004-08-24 16:03) [17]> [15] ydv (24.08.04 16:02)
> [16] KSergey © (24.08.04 16:02)
Возможно, в D7 поменяли. В D5 было 30.
← →
KSergey © (2004-08-24 16:06) [18]> [12] ydv (24.08.04 15:20)
> Я простой запрос приведу, который всего 4 записи тащит,
> но выполняется 20 с: SELECT * FROM logs WHERE name like
> "%test%"
Если такие запросы характерны - стоит подумать об использовании полнотекстового поиска (индекса).
Хотя их наличие явно говорит о кривой архитектуре, хотя иногда, понятно, без них не обойтись... Но всегда желательно минимизировать, особенно для частых, характерных операций (там их не дожно быть!)
← →
Sergey13 © (2004-08-24 16:09) [19]Господа, знаете чем перегружен сервак ydv? Я кажется знаю. 8-)
← →
JibSkeart © (2004-08-24 16:12) [20]Мда ужж .
← →
Ega23 © (2004-08-24 16:12) [21]KSergey © (24.08.04 16:06) [18]
Обожди, это что же получается? Допустим, у меня выполняется некий ночной аудит. По неким причинам, я его не в виде job ставлю, а в виде SP, запускаемой с клиента. Предполагается, что данный аудит вернёт какую-то информацию, например число удалённых во время аудита записей. Аудит может колбаситься и 10 минут.
Это что, через ADO я не получу результат????
← →
Ega23 © (2004-08-24 16:14) [22]Господа, знаете чем перегружен сервак ydv? Я кажется знаю. 8-)
Ну и... ????
← →
Sergey13 © (2004-08-24 16:17) [23]2[22] Ega23 © (24.08.04 16:14)
>Ну и... ????
Дык его запросами. 8-)
← →
ydv (2004-08-24 16:17) [24]1С у меня еще на серваке, и еще много всего
Ega23 ©
>Это что, через ADO я не получу результат????
не получишь, отвалится с ошибкой
← →
Ega23 © (2004-08-24 16:21) [25]Дык его запросами. 8-)
Мда, что-то торможу я сегодня. Ну я это уже в другой ветке описал...
← →
KSergey © (2004-08-24 16:25) [26]> [24] ydv (24.08.04 16:17)
> >Это что, через ADO я не получу результат????
> не получишь, отвалится с ошибкой
Зачем обманываешь???
Читаем наконец
> [4] KSergey © (24.08.04 14:24)
> [23] Sergey13 © (24.08.04 16:17)
> Дык его запросами. 8-)
Ну это понятно ;) Я просто уже промолчал скромно... ;)
← →
jocko (2004-08-25 15:17) [27]AdoCommand.Text := "select * from my_table;"
AdoQuery1.RecordSet := AdoCommand.Execute;
//
а что уж сразу ADOConnection не использовать - тоже RecordSet возвращать может :-)
а что касается таймаута, то у того же коннекшана есть такое событие WillExecute так вот там прекрасно выставляется тайм аут хоть для адокомманд хоть для адодатасет
Страницы: 1 вся ветка
Текущий архив: 2004.09.26;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.04 c