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

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

ExecSQL [D6, MSSQL]


Alibaba ©   (2002-08-06 10:46:00) 

Всем привет!
Когда я делаю Query.Open, можно получить список записей :
count:=Query.RecordCount

а когда я делаю Query.ExecSQL - такой номер не проходит (внутри запроса у меня инсерты)

Как мне получить количество записей после выполнения Query.ExecSQL?


Mike Kouzmine   (2002-08-06 12:41:00) [1]

Johnmen сказал, как отрезал, а суке только RX ругать


Alibaba   (2002-08-06 12:34:00) [2]

> Johnmen
Спасибо большое!
Это то что мне надо!


Johnmen   (2002-08-06 11:58:00) [3]

>Alibaba ©
count:=Query.RowsAffected


AlexSam   (2002-08-06 11:51:00) [4]

!!! В SQL RecordSet не работает. Читай помощь. Пользуйся while not eof или select count(*) from ... И если RecordSet у тебя что-то возвращала, то в таблице просто мало записей.


SaS13   (2002-08-06 11:47:00) [5]

Примерно так:
CREATE PROCEDURE Test AS

SET NOCOUNT ON

DECLARE @cResult int
SET @cResult = 0

BEGIN TRAN

INSERT ...
IF @@ERROR <> 0 BEGIN
ROLLBACK TRAN
SET @cResult = -1
RETURN @cResult
END
ELSE
SELECT @cResult = @cResult + @@ROWCOUNT

SET NOCOUNT OFF

COMMIT TRAN
RETURN @cResult


3JIA9I CyKA   (2002-08-06 11:42:00) [6]

3JIA9I CyKA © (06.08.02 11:40)-> 2Alibaba


SaS13   (2002-08-06 11:40:00) [7]

можешь вернуть количество вставленных записей параметром Result например, а после ExecSQL взять значение ParamByName...


3JIA9I CyKA   (2002-08-06 11:40:00) [8]

Ах вон оно как! Ух ты, блин!
А чего Count? Каких Record-ов? Запрос-то твой вообще набор данных возвращает?


Alibaba   (2002-08-06 11:35:00) [9]

> ЮЮ
SQL создает таблицу (create table) и наполняет ее записями (insert)

Поэтому RecordCount до= 0
RecordCount после= ?

Можно, конечно, выполнить еще один SQL :
select count(*) from Table
и получить RecordCount.

Но, хотелось бы не делать лишних движений а получить RecordCount сразу же после ExecSQL.


ЮЮ   (2002-08-06 10:51:00) [10]

Сколько вставил что ли? :-) Сравни RecordCount до и после. Или посредством запроса, аналогичного условию Where во вставляющем запросе.


3JIA9I CyKA   (2002-08-06 10:49:00) [11]

Побегай по рекордсетам - из там до фига


Наверх

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