Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2008, 10:58   #11
Mouse123
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 22
По умолчанию

Ок. Приступим к практике)))
Большое спасибо))

А используя TADOCommand как в коде SQL указать чтоб результат запроса вписался бы в параметр? ( справка гордо молчит ))
И в целом не могу понять как получать результаты с ADOCommand ...

p.s.
Ну не работал я с БД, ну что же делать ...

Тяк, с результатами разобрался. ADOCommand возвращает набор записей в результате.

А вот с применением параметра тупик...

Последний раз редактировалось Alex21; 01.07.2008 в 09:16.
Mouse123 вне форума Ответить с цитированием
Старый 26.06.2008, 20:39   #12
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Ну что разобрались с параметрами? Если не очень, то тогда немного поясню.

ADOCommand используется для запросов типа update/insert/delete. Если нужно сделать выборку данных ( т.е. select ), то используется ADODataSet.

Пример 1: ADODataSet и параметры

Код:
try
 ADODataSet1.Close;
 ADODataSet1.CommandType := cmdText;
 ADODataSet1.CommandText := 'select person.surname from person where person.surname = :prSurname';
 ADODataSet1.Parameters.ParamByName( 'prSurname' ).Value := Edit1.Text;
 ADODataSet1.Open;
except on E:Exception do
  begin
     ...
  end;
end;
Пример 2: ADOCommand, вызов хранимой процедуры и параметры:
Вызовем хранимую процедуру с именем "updatePerson", которая обновляет данные в таблице "Person"

Код:
try
  ADOCommand1.CommandType := cmdStoredProc;
  ADOCommand1.CommandText := 'updatePerson ';
  ADOCommand1.Parameters.Refresh;
  ADOCommand1.Parameters.ParamValues[ '@ID_PERSON' ] := Edit1.Text;
  ADOCommand1.Parameters.ParamValues[ '@NAME_PERSON' ] := Edit2.Text;
  ADOCommand1.Parameters.ParamValues[ '@BIRTHDAY' ] := Edit3.Text;
  ...
  ADOCommand1.Execute;
except on E:Exception do
  begin
   ...
  end;
end;
P.S. Но как вы можете видеть - список передаваемых параметров может быть очень большим. Хотя все вышеприведенное и будет работать "на ура", но это не очень удобный подход, так как приходится писать много однотипного кода. Поэтому нужно искать другие варианты передачи параметров
edgy вне форума Ответить с цитированием
Старый 30.06.2008, 13:33   #13
Mouse123
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 22
По умолчанию

Спасибо, процесс проходит на ура!

А интересно .. а можно триггировать обновления? Ну т.е. sql server что бы информил клиентов о обновлении...

Последний раз редактировалось Alex21; 01.07.2008 в 09:16.
Mouse123 вне форума Ответить с цитированием
Старый 30.06.2008, 18:39   #14
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Сообщение от Mouse123 Посмотреть сообщение
А интересно .. а можно триггировать обновления? Ну т.е. sql server что бы информил клиентов о обновлении...
Можно. Самый простой способ: где-нибудь в теле триггера написать следующее: PRINT 'hello'. Затем это сообщение отлавливать в своем приложении.
Кстати, можно обрабатывать не только сообщения, но и ошибки, возникающие на стороне сервера.
По поводу получения обновления данных по событию есть интересная статейка здесь. Может быть, это то, что вам нужно. Так что разбирайтесь.
edgy вне форума Ответить с цитированием
Старый 01.07.2008, 09:56   #15
Mouse123
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 22
По умолчанию

Еще раз спасибо!
Mouse123 вне форума Ответить с цитированием
Старый 04.07.2008, 13:51   #16
Mouse123
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 22
По умолчанию

C горем пополам пока все чудно. Но в перспективе вылезит вопрос ...
я пользую для постингов ADOQuery... пишу SQL скрипт ... все рулез ( кроме только того, что морока с кавычками ... ну не суть ), а как используя скриптятину вносить бинарные данные? Или вообще крупные данные?


--------
Разобрался))

--------

Последний раз редактировалось Mouse123; 04.07.2008 в 14:05.
Mouse123 вне форума Ответить с цитированием
Старый 04.07.2008, 14:05   #17
Mouse123
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 22
По умолчанию

А не могли бы Вы мне помочь написать кусок кода на SQL.

Задача : Понять максимальное значение ( int ) исходя из всех строк таблицы и задать +1 к новой строке.

Последний раз редактировалось Mouse123; 04.07.2008 в 15:51.
Mouse123 вне форума Ответить с цитированием
Старый 04.07.2008, 17:35   #18
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Я так понял, вы хотите вычислить очередной id для новой строки. Это не сложно. Ну, например, выберем максимальное значение поля OrderId из таблицы Orders и прибавим к нему единицу.

Код:
SELECT MAX ( OrderId ) + 1 as NewOrderId 
FROM Orders
edgy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отображаются данные связанные с гл. таблицей? zimmion БД в Delphi 11 27.02.2008 18:50
Проблема с таблицей May1980 Microsoft Office Word 2 16.01.2008 20:43
Помагите с таблицей Римма БД в Delphi 2 31.08.2007 14:09
Работа с таблицей без БД Гр_ БД в Delphi 3 06.06.2007 16:31
Как связать кнопку с таблицей Таня84 БД в Delphi 1 31.01.2007 14:02