Примеры выполняемых запросов Rainbow и ADO   

Внимание, сначала идут три запроса Rainbow, затем три запроса ADO.
declare @P1 int
set @P1=180150035
declare @P2 int
set @P2=2
declare @P3 int
set @P3=1
declare @P4 int
set @P4=-1
exec sp_cursoropen @P1 output, N'SELECT DT840.SP841, DH840.IDDOC, DH913.IDDOC, DT840.LINENO_, DT913.LINENO_, DT840.SP843, DT913.SP946 FROM DT840 WITH (NOLOCK) INNER JOIN _1SJOURN WITH (NOLOCK) ON DT840.IDDOC = _1SJOURN.IDDOC INNER JOIN DT913 WITH (NOLOCK) ON DT840.SP841 = DT913.SP915 AND DT840.SP843 <> DT913.SP946 INNER JOIN _1SJOURN _1SJOURN_1 WITH (NOLOCK) ON DT913.IDDOC = _1SJOURN_1.IDDOC AND LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) = LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) INNER JOIN DH840 ON DT840.IDDOC = DH840.IDDOC INNER JOIN DH913 WITH (NOLOCK) ON DT913.IDDOC = DH913.IDDOC WHERE (DH840.SP920 = '' 3 '') AND (DH913.SP914 = '' 3 '') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) >= ''20030101'') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) <= ''20031130'') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) >= ''20030101'') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) <= ''20031130'') AND (_1SJOURN_1.CLOSED = 1) AND (_1SJOURN.CLOSED = 1) ORDER BY DH840.IDDOC, DH913.IDDOC, DT840.LINENO_, DT913.LINENO_', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
go
exec sp_cursorfetch 180150035, 2, 0, 50
go
exec sp_cursorclose 180150035
go

declare @P1 int
set @P1=180150036
declare @P2 int
set @P2=2
declare @P3 int
set @P3=1
declare @P4 int
set @P4=-1
exec sp_cursoropen @P1 output, N'SELECT DT840.SP841, DH840.IDDOC, DH907.IDDOC, DT840.LINENO_, DT907.LINENO_, DT840.SP843, DT907.SP944 FROM DT840 INNER JOIN _1SJOURN ON DT840.IDDOC = _1SJOURN.IDDOC INNER JOIN DT907 ON DT840.SP841 = DT907.SP909 AND DT840.SP843 <> DT907.SP944 INNER JOIN _1SJOURN _1SJOURN_1 ON DT907.IDDOC = _1SJOURN_1.IDDOC AND LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) = LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) INNER JOIN DH840 ON DT840.IDDOC = DH840.IDDOC INNER JOIN DH907 ON DT907.IDDOC = DH907.IDDOC WHERE (DH840.SP920 = '' 3 '') AND (DH907.SP908 = '' 3 '') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) >= ''20030101'') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) <= ''20031130'') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) >= ''20030101'') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) <= ''20031130'') AND (_1SJOURN_1.CLOSED = 1) AND (_1SJOURN.CLOSED = 1) ORDER BY DH840.IDDOC, DH907.IDDOC, DT840.LINENO_, DT907.LINENO_', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
go
exec sp_cursorfetch 180150036, 2, 0, 50
go
exec sp_cursorclose 180150036
go

declare @P1 int
set @P1=180150037
declare @P2 int
set @P2=2
declare @P3 int
set @P3=1
declare @P4 int
set @P4=-1
exec sp_cursoropen @P1 output, N'SELECT DT840.SP841, DH840.IDDOC, DH1181.IDDOC, DT840.LINENO_, DT1181.LINENO_, DT840.SP843, DT1181.SP1191 FROM DT840 INNER JOIN _1SJOURN ON DT840.IDDOC = _1SJOURN.IDDOC INNER JOIN DT1181 ON DT840.SP841 = DT1181.SP1184 AND DT840.SP843 <> DT1181.SP1191 INNER JOIN _1SJOURN _1SJOURN_1 ON DT1181.IDDOC = _1SJOURN_1.IDDOC AND LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) = LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) INNER JOIN DH840 ON DT840.IDDOC = DH840.IDDOC INNER JOIN DH1181 ON DT1181.IDDOC = DH1181.IDDOC WHERE (DH840.SP920 = '' 3 '') AND ((DH1181.SP1182 = '' 3 '') OR (DH1181.SP1183 = '' 3 '')) AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) >= ''20030101'') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) <= ''20031130'') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) >= ''20030101'') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) <= ''20031130'') AND (_1SJOURN_1.CLOSED = 1) AND (_1SJOURN.CLOSED = 1) ORDER BY DH840.IDDOC, DH1181.IDDOC, DT840.LINENO_, DT1181.LINENO_', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
go
exec sp_cursorfetch 180150037, 2, 0, 50
go
exec sp_cursorclose 180150037
go


SELECT DT840.SP841, DH840.IDDOC, DH913.IDDOC, CONVERT(money,DT840.LINENO_), CONVERT(money,DT913.LINENO_), CONVERT(money,DT840.SP843), CONVERT(money,DT913.SP946) FROM DT840 WITH (NOLOCK) INNER JOIN _1SJOURN WITH (NOLOCK) ON DT840.IDDOC = _1SJOURN.IDDOC INNER JOIN DT913 WITH (NOLOCK) ON DT840.SP841 = DT913.SP915 AND DT840.SP843 <> DT913.SP946 INNER JOIN _1SJOURN _1SJOURN_1 WITH (NOLOCK) ON DT913.IDDOC = _1SJOURN_1.IDDOC AND LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) = LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) INNER JOIN DH840 ON DT840.IDDOC = DH840.IDDOC INNER JOIN DH913 WITH (NOLOCK) ON DT913.IDDOC = DH913.IDDOC WHERE (DH840.SP920 = ' 3 ') AND (DH913.SP914 = ' 3 ') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) >= '20030101') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) <= '20031130') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) >= '20030101') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) <= '20031130') AND (_1SJOURN_1.CLOSED = 1) AND (_1SJOURN.CLOSED = 1) ORDER BY DH840.IDDOC, DH913.IDDOC, DT840.LINENO_, DT913.LINENO_
go

SELECT DT840.SP841, DH840.IDDOC, DH907.IDDOC, CONVERT(money,DT840.LINENO_), CONVERT(money,DT907.LINENO_), CONVERT(money,DT840.SP843), CONVERT(money,DT907.SP944) FROM DT840 INNER JOIN _1SJOURN ON DT840.IDDOC = _1SJOURN.IDDOC INNER JOIN DT907 ON DT840.SP841 = DT907.SP909 AND DT840.SP843 <> DT907.SP944 INNER JOIN _1SJOURN _1SJOURN_1 ON DT907.IDDOC = _1SJOURN_1.IDDOC AND LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) = LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) INNER JOIN DH840 ON DT840.IDDOC = DH840.IDDOC INNER JOIN DH907 ON DT907.IDDOC = DH907.IDDOC WHERE (DH840.SP920 = ' 3 ') AND (DH907.SP908 = ' 3 ') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) >= '20030101') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) <= '20031130') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) >= '20030101') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) <= '20031130') AND (_1SJOURN_1.CLOSED = 1) AND (_1SJOURN.CLOSED = 1) ORDER BY DH840.IDDOC, DH907.IDDOC, DT840.LINENO_, DT907.LINENO_
go

SELECT DT840.SP841, DH840.IDDOC, DH1181.IDDOC, CONVERT(money,DT840.LINENO_), CONVERT(money,DT1181.LINENO_), CONVERT(money,DT840.SP843), CONVERT(money,DT1181.SP1191) FROM DT840 INNER JOIN _1SJOURN ON DT840.IDDOC = _1SJOURN.IDDOC INNER JOIN DT1181 ON DT840.SP841 = DT1181.SP1184 AND DT840.SP843 <> DT1181.SP1191 INNER JOIN _1SJOURN _1SJOURN_1 ON DT1181.IDDOC = _1SJOURN_1.IDDOC AND LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) = LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) INNER JOIN DH840 ON DT840.IDDOC = DH840.IDDOC INNER JOIN DH1181 ON DT1181.IDDOC = DH1181.IDDOC WHERE (DH840.SP920 = ' 3 ') AND ((DH1181.SP1182 = ' 3 ') OR (DH1181.SP1183 = ' 3 ')) AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) >= '20030101') AND (LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) <= '20031130') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) >= '20030101') AND (LEFT(_1SJOURN_1.DATE_TIME_IDDOC, 8) <= '20031130') AND (_1SJOURN_1.CLOSED = 1) AND (_1SJOURN.CLOSED = 1) ORDER BY DH840.IDDOC, DH1181.IDDOC, DT840.LINENO_, DT1181.LINENO_
go

Как видно из этих запросов, разницы, между текстами запросов для Rainbow и ADO не существует, за исключение мелких синтаксических разлиций. Для нормального извлечения значений типа "Число" из выборки ADO, каждое число было конвертировано в тип "Money", что и было сделано.

Вернуться к статье.

 


 

Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").