Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непонятки с хранимой процедурой [D6, MSSQL]


dreamse ©   (2006-02-21 13:47:00) 

В общем код



CREATE PROCEDURE AddPingstatList (
@date datetime,
@compNumber char(10),
@key char (10)
)

AS

UPDATE
Statis_ping
SET
Dateping = @date,
t010 = '1'


Должен обновить поля Dateping и поле t010  ( уставновить ему '1' ) что и происходит

Проблема вот в чём : Полей типа t010 у меня более 140 ( t010 , t011 , t012 , t013 , t014 и.д )

Все их переписывать в запросе нет нужды , можно ли сделать так :


UPDATE
Statis_ping
SET
Dateping = @date,
@key = '1'


А в @key уже будет записано имя поля т.е t010
Чтобы программа могла просто передавать имя поля и значение , а процедура писала бы в это поле , а не перечислять все 140 полей в процедуре


stone   (2006-02-21 14:24:00) [1]

Ну так и заноси компьютер, время и результат пингования
На экране рисуй временную карту (хоть как на рисунке) и закрашивай квадратики


MOA   (2006-02-21 14:22:00) [2]

Например - таблица с полями "ИДклиента", "Время", "Состояние", ключ - "ИДклиента", "Время", возможно, дополнительно индекс по "Время" - но нужно смотреть. Для MSSQL подобная таблица - не вопрос, если железке хотя бы года 2001-2002.
Работа с такой таблице намного проще, не говоря уже о том, что правильнее. Да и
>на разное ( от 1 до 200 ) количество компьютеров
Удачи!


dreamse   (2006-02-21 14:16:00) [3]

> stone ©   (21.02.06 14:11) [6]

Каким образом ? мозги совсем что то не варят :(  Весь день думаю уже над этим ...

Нужно :

1) Занесение данных каждые 10 минут на разное ( от 1 до 200 ) количество компьютеров клиентов
2) Чтение и формирование отчёта , либо графического представления ( как показано на рисунке , с вычитанием времени : сколько не пинговался клиент )


stone   (2006-02-21 14:11:00) [4]

У тебя на каждый временной промежуток отдельное поле? Срочно меняй структуру.


dreamse   (2006-02-21 14:07:00) [5]

> MOA ©   (21.02.06 14:03) [3]

Я всё понимаю что данный подход неверен , но нужно написать функцию которая бы пинговала клиентов каждый 10 минут и зановила данные в таблицу , чтобы потом можно было просмотреть когда и где клиенты были а когда их небыло :

Пример
http://acs.drage.kz/files/pic/ping.jpg

Сколько клиентов не известно ,
Если есть более радикальное решение данной задачи , то ознакомьте будьте любезны


Ega23   (2006-02-21 14:06:00) [6]


> Полей типа t010 у меня более 140


Какой ужас!!!!
Немедленно исправляй структуру базы, а то так намучаешься - мама не горюй!


MOA   (2006-02-21 14:03:00) [7]

>Полей типа t010 у меня более 140
Следовательно, неладно что-то в датском королевстве ;).
А именно - структура базы спроектирована, видимо, как-то не так. Так редко бывает, чтобы такая колбаса была нужна. Да и геморроя при написании приложения будет изрядно - например, вот такого как в сабже.
Удачи!


dreamse   (2006-02-21 13:59:00) [8]

> stone ©   (21.02.06 13:51) [1]

Не нашёл ... по запросу EXECUTE найдено 786 значений ... где искать ? или скажите как составить такой запрос... Срочно нужно


stone   (2006-02-21 13:51:00) [9]

можно
см. EXECUTE в BOL


Наверх

Титульная страница Поиск, карта сайта Написать письмо