Вопрос № 90266: здраствуйте. вопрос - надо сделать изменения в базе: добавить несколько таблиц, права доступа к ним, удалить старые триггеры и вставить новые. все конечно можно сделать и в WISQL, но.. к каждой подключаться...если бить частями текст sql' (напр. созда...Вопрос № 90328: Здравствуйте эксперты!
вопрос? у меня есть столбцы в которых записаны числа(много чисел), так вот как мне посчитать количество каждого столбца? какую мне использовать процедуру подскажите?
..Вопрос № 90367: Здравствуйте Эксперты!!!
При установки соединения с серверной СУБД (конкретнее с MS SQL Server) если она не запущена выскакивает ошибка(Project adn.exe raised exception class EoleException with message ‘[DBNETLIB][ConnectionOpen(Connect()).]SQL –...
Вопрос № 90.266
здраствуйте. вопрос - надо сделать изменения в базе: добавить несколько таблиц, права доступа к ним, удалить старые триггеры и вставить новые. все конечно можно сделать и в WISQL, но.. к каждой подключаться...если бить частями текст sql' (напр. создание; потом дать права и др) - работает, но хотелось чтобы из текст.файла выполнился кусок кода по нажатию кнопки:)
вобщем то ошибка (если правильно определила) возникает после точки запятой. в текст.файле код:
CREATE TABLE VED1 ( KODVED... PRIMARY KEY (..));
CREATE TABLE VED2 ( KODVED1... PRIMARY KEY (..));
GRANT ALL ON VED1 TO PUBLIC;..
DROP TRIGGER KART_INS;
SET TERM !!;
CREATE TRIGGER KART_INS FOR KART ... и т.д.
в данном случае начинает ругаться на CREATE TABLE VED2 (??? или...)
вобщем помогите...
Приложение:
Отправлен: 06.06.2007, 13:31
Вопрос задала: SadKitty (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Архангельский Андрей Германович
Здравствуйте, SadKitty!
Разработку БД лучше всю вести в SQL-скриптах, тогда можно не только добавлять/удалять, но и вставлять большой кусок одного проекта в другой.
Наполнение БД также легче делать из скриптов.
Скрипт исполняется в isql.exe, можно построить .bat файл, который запустит несколько скриптов. Из скрипта много проще отлавливать ошибки. Достаточно в файле результата найти слово SQLCODE обычным текстовым поиском. После SQLCODE идет подробное описание ошибки с указанием строки и колонки запроса.
Более убедительные доводы см. в книге Хелен Борри "Firebird руководство программиста"
В примере удалена вся информация, которая могла бы помочь найти ошибку.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Здравствуйте эксперты!
вопрос? у меня есть столбцы в которых записаны числа(много чисел), так вот как мне посчитать количество каждого столбца? какую мне использовать процедуру подскажите?
Отправлен: 06.06.2007, 19:37
Вопрос задал: Павел А.О (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Устинов С.Е.
Здравствуйте, Павел А.О!
Так как Вы задали вопрос в раздел СУБД и Delphi, то буду считать, что эта таблица у Вас находится в какой-то базе данных, а доступ туда осуществляется из Delphi.
Тогда для подсчета значений удовлетворяющих условию нужно выполнить SQL-запрос: SELECT COUNT(`имя_поля`) FROM `имя_таблицы` WHERE условие
Если нужно посчитать только количество значений в столбце: SELECT COUNT(`имя_поля`) FROM `имя_таблицы`
Если нужно посчитать количество разных значений в столбце: SELECT COUNT( DISTINCT `имя_поля`) FROM `имя_таблицы`
Если нужно посчитать сумму по столбцу: SELECT SUM(`имя_поля`) FROM `имя_таблицы`
Ответ отправил: Устинов С.Е. (статус: Специалист)
Ответ отправлен: 06.06.2007, 19:49 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет!
Отвечает: Delph
Здравствуйте, Павел А.О!
Если я правильно Вас понял, то имеется ввиду следующее: есть столбцы, в которых прописаны числа, и в таблице много строк. Нужно количество строк, в которых в нужных полях что-то есть...
Существует функция Count, которая поддерживается большинством СУБД. Формат такой:
select Count(FieldName) from TableName
Возвращается одно число. Можно задать какие либо условия отбора:
select Count(FieldName) from TableName where ...
Если всю эту конструкцию обернуть в круглые скобки, то можно подставлять её в более крупный запрос, только желательно результату давать какое-то имя:
(select Count(FieldName) from TableName where (...)) as NewFieldName
Пример такого запроса:
select
spName_ID, spName,
(select count(Chuvack_ID) from Chuvacks where Name_Key = spName_ID) as Chuvacks_Count
from spNames
Существуют ещё функции Sum (сумма всех значений), Avg (среднее арифметическое)...
Если Вы имели ввиду что-то другое, уточните свою задачу. И пожалуйста: указывайте, с чем работаете. Многие вещи уникальны для каждой конкретной СУБД (например, в MySQL нет транзакций, в PostgreSQL отсутствуют процедуры, которые заменены функциями, в MS SQL существует конструкция CASE, которую я не встречал пока в других СУБД...).
Ответ отправил: Delph (статус: 3-ий класс)
Ответ отправлен: 07.06.2007, 09:34
Вопрос № 90.367
Здравствуйте Эксперты!!!
При установки соединения с серверной СУБД (конкретнее с MS SQL Server) если она не запущена выскакивает ошибка(Project adn.exe raised exception class EoleException with message ‘[DBNETLIB][ConnectionOpen(Connect()).]SQL – сервер не существует, или отсутствует доступ’. Process stopped. Use Step or Run to continue. ) Как мне перехватить эту ошибку и вывести из приложение сообщение об включении сервера. Я делал так:
Uses ComObj;
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
try
ADOConnection1. Connected:=true;
except
on EOleException do MessageDlg('Подключите SQL server 2000!', mtWarning,[mbOk], 0);
но почему то она все равно пропускает ошибку. Подскажите, может я использую не тот класс Исключения. Если так то посоветуйте другой – более конкретный.
P.S. Пробовал EdatabaseError – та же беда!
Отправлен: 07.06.2007, 03:15
Вопрос задал: Ram (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Delph
Здравствуйте, Ram!
Можно использовать более грубую форму перехвата:
try
ADOConnection1. Connected:=true;
except
on e: Exception do MessageDlg(e.Message, mtWarning,[mbOk], 0);
end;
Такой вариант перехватит любое исключение, возникшее в защищаемом блоке.
Ответ отправил: Delph (статус: 3-ий класс)
Ответ отправлен: 07.06.2007, 09:41 Оценка за ответ: 5 Комментарий оценки: Спасибо вам! Хотя она и не давала нужного результата но с вашей подсказки я нашел решение (Delphi7->Tools->Debugger Option->Language Exceptions->Stop on Delphi Exceptions->false)