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

Вниз

запрос с помощью 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.06 c
1-1094636929
hgd
2004-09-08 13:48
2004.09.26
Подскажите алгоритм или ...... ?


3-1093432355
Kraj
2004-08-25 15:12
2004.09.26
Как для внесения в базу преобразовать рисунок


1-1094635659
off
2004-09-08 13:27
2004.09.26
Правильная отрисовка канвы при скролинге


1-1094634938
rand0m
2004-09-08 13:15
2004.09.26
Run-time библиотеки Delphi


6-1090447381
Skyhawk
2004-07-22 02:03
2004.09.26
Как зайти в систему на удаленном компьютере





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский