Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.047 c
4-1091763988
Петр
2004-08-06 07:46
2004.09.26
ком-порт


1-1095075552
Chizh
2004-09-13 15:39
2004.09.26
Конструкция with...do


3-1093458927
3APA3A
2004-08-25 22:35
2004.09.26
Сохранение Columns в DBGridEh


1-1094707455
user1
2004-09-09 09:24
2004.09.26
Процедура открытия модального окна


14-1094564583
blackman
2004-09-07 17:43
2004.09.26
Загадка