Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Sql ????

357
26 февраля 2003 года
Тимофей
112 / / 20.02.2000
Подскажите кто нить как можно подсчитать количество непустых столбцов в одной записи БД с помощью SQL.
И ещё вопрос как привязать ProgressBar к выполнению SQL запроса, хотелось бы видеть процесс выполнения запроса.
Заранее спсибо.
358
26 февраля 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Тимофей
Подскажите кто нить как можно подсчитать количество непустых столбцов в одной записи БД с помощью SQL.
И ещё вопрос как привязать ProgressBar к выполнению SQL запроса, хотелось бы видеть процесс выполнения запроса.
Заранее спсибо.


Про столюцы с помощью стандартного SQL не знаю, единственное что приходит на ум - Взять строку, с помощью ХП ее транспонировать и потом уже считать=)))Но это все справедливо для MSSQL и иже с ними. Про прогресс: если работаешь через ADO то смотри - FetchProgress, FetchComplete в MSDN.

1.7K
26 февраля 2003 года
Mark
114 / / 21.11.2002
Цитата:
Originally posted by Тимофей
Подскажите кто нить как можно подсчитать количество непустых столбцов в одной записи БД с помощью SQL.
И ещё вопрос как привязать ProgressBar к выполнению SQL запроса, хотелось бы видеть процесс выполнения запроса.
Заранее спсибо.


Напиши функцию, которая возвращает 1, если значение поля непусто, а в селекте складывай. Возможно в твоей СУБД уже реализована подобная функция, нпример в Oracle это NVL.
Что ты подразумеваешь под процессом выполнения запроса? Этот процесс характеризуется большим количеством всяких параметров, характер изменений которых изменяется в зависимости от запроса. К тому же подобная привязка будет сделана не в одно действие. Я бы не привязывал к непосредственно исполняемому sql-у. И еще подумай, что часто можно оценить время выполнения запроса (в рантайме, в конкретной ситуации) и показывать юзеру прогресс бар привязанный просто к таймеру.

357
26 февраля 2003 года
Тимофей
112 / / 20.02.2000
Цитата:
Originally posted by Mark

Напиши функцию, которая возвращает 1, если значение поля непусто, а в селекте складывай. Возможно в твоей СУБД уже реализована подобная функция, нпример в Oracle это NVL.
Что ты подразумеваешь под процессом выполнения запроса? Этот процесс характеризуется большим количеством всяких параметров, характер изменений которых изменяется в зависимости от запроса. К тому же подобная привязка будет сделана не в одно действие. Я бы не привязывал к непосредственно исполняемому sql-у. И еще подумай, что часто можно оценить время выполнения запроса (в рантайме, в конкретной ситуации) и показывать юзеру прогресс бар привязанный просто к таймеру.


Во первых как будет выглядеть функция? Я ведь не знаю на какой записи в данный момент происходит вычисление непустых столбцов. Если бы я знал, то через Table все бы нашел.
Во вторых как возвращенную функцией переменную использовать в реалтайме (и вообще) в SQl запросе.

"Что ты подразумеваешь под процессом выполнения запроса?"

Как я понимаю есть начало и конец выполнения запроса. Я хочу знать когда он закончится и привязать к этому ProgressBar.
А по таймеру глупо привязывать ProgressBar. На стареньких компах скорость выполнения намного меньше...

1.7K
26 февраля 2003 года
Mark
114 / / 21.11.2002
Цитата:
Originally posted by Тимофей

Во первых как будет выглядеть функция? Я ведь не знаю на какой записи в данный момент происходит вычисление непустых столбцов. Если бы я знал, то через Table все бы нашел.
Во вторых как возвращенную функцией переменную использовать в реалтайме (и вообще) в SQl запросе.



select Check_Null(col1) + Check_Null (col2) + ... from your_table, где Check_Null - хранимая процедура (функция), возвращающая 1, если аргумент не NULL, в противном случае 0. Для удобства можно преобразовывать все типы к символьному. Обрати внимание, что это процедура БД. Какую СУБД ты используешь?

Цитата:
Originally posted by Тимофей

Как я понимаю есть начало и конец выполнения запроса. Я хочу знать когда он закончится и привязать к этому ProgressBar.



Запрос начинает работу с Open() (возможны варианты) и, соответственно, заканчивает при переходе на следущую строку. Разве нет? Сделай шаг прогрессу следующей строкой.

Цитата:
Originally posted by Тимофей

А по таймеру глупо привязывать ProgressBar. На стареньких компах скорость выполнения намного меньше...



Я сказал оценить, а не расчитать и зашить в код. Даже если оценка окажется грубой, при большом количестве шагов и достаточно длительном времени выполнения не так уж и страшно, что прогресс вдруг быстро завершится, дойдя до 75%. Судя по прогрессам во многих программах именно так и поступают.

3.7K
28 февраля 2003 года
SET
1 / / 28.02.2003
Цитата:
Originally posted by Тимофей
...как привязать ProgressBar к выполнению SQL запроса, хотелось бы видеть процесс выполнения запроса...



ежли запрос выполняеца настолько долго, что необходимо прогресс к нему вязать, то это глючный запрос и его переделывать нада... а коли для красоты и важности, так всамде, посади прогресс на таймер - типа во - работат... а через полчасика покажи юзеру результат запроса:) он ето оценит:)))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог