|
|
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Привет !!! Помогите пожалуйста разобратся. При работе функции которая вызывает хранимую процедуру в SQL Server 2000 возникает ошибка. Вот моя функция на VB авторPublic Function Pogr_abs(dd1 As Variant, mm1 As Variant, yy1 As Variant, _ dd2 As Variant, mm2 As Variant, yy2 As Variant, _ sODBC As Variant) As Variant On Error GoTo Err_Debug Dim p As ADODB.Parameter, p1 As ADODB.Parameter Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim cmd As ADODB.Command Set cn = New ADODB.Connection cn.CursorLocation = adUseClient cn.Open CStr(sODBC) Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient Set cmd = New ADODB.Command With cmd Set .ActiveConnection = cn .CommandTimeout = 0 .CommandType = adCmdStoredProc .CommandText = "ItogPogrAbs" Set p = .CreateParameter("dateMin", adVarChar, adParamInput, 8, mm1 & "/" & dd1 & "/" & yy1) Set p1 = .CreateParameter("dateMax", adVarChar, adParamInput, 8, mm2 & "/" & dd2 & "/" & yy2) .Parameters.Append p .Parameters.Append p1 End With rs.Open cmd, , adOpenStatic, adLockReadOnly Pogr_abs = rs.GetRows() lb_out: Set p = Nothing Set cmd = Nothing rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing Exit Function Err_Debug: Resume lb_out End Function в строке авторPogr_abs = rs.GetRows() выдает вот такую ошибку авторRun-time error '3704' Операция не допускается, если объект закрыт Понимаю что для вас профессионалов вопрос может быть совсем дурацкий, но по возможности подскажите. Я уже все перепробывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 08:51 |
|
||
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
в ХП опция SET NOCOUNT стоит? I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:01 |
|
||
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
У меня Windows 2003 Server. Где можно посмотреть SET NOCOUNT и как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:15 |
|
||
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
SET NOCOUNT ON должен быть в коде хранимки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:18 |
|
||
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Вот текст хронимой процедуры авторCREATE PROCEDURE dbo.ItogPogrAbs @dateMin varchar (8), @dateMax varchar (8) AS Declare @Query nvarchar (1000), @imm int, @mdateMin datetime, @mdateMax datetime, @dd_min nvarchar (2), @mm_min nvarchar (2), @yy_min nvarchar (2), @dd_max nvarchar (2), @mm_max nvarchar (2), @yy_max nvarchar (2) Set @mdateMin=convert(datetime, @dateMin) Set @mdateMax=convert(datetime, @dateMax) Set @imm = DATEDIFF(mm, @mdateMin, @mdateMax) if Day(@mdateMin)<10 Set @dd_min = '0' + (CONVERT(nvarchar (2), Day(@mdateMin))) else begin Set @dd_min = (CONVERT(nvarchar (2), Day(@mdateMin))) end if Month(@mdateMin)<10 Set @mm_min= '0' + (CONVERT(nvarchar (2), Month(@mdateMin))) else begin Set @mm_min= (CONVERT(nvarchar (2), Month(@mdateMin))) end Set @yy_min=Right(CONVERT(nvarchar (4), Year(@mdateMin)),2) if Day(@mdateMax)<10 Set @dd_max = '0' + (CONVERT(nvarchar (2), Day(@mdateMax))) else begin Set @dd_max = (CONVERT(nvarchar (2), Day(@mdateMax))) end if Month(@mdateMax)<10 Set @mm_max= '0' + (CONVERT(nvarchar (2), Month(@mdateMax))) else begin Set @mm_max= (CONVERT(nvarchar (2), Month(@mdateMax))) end Set @yy_max=Right(CONVERT(nvarchar (4), Year(@mdateMax)),2) CREATE TABLE #Pogr_abs (kotd varchar (10), tp varchar (10), rodv varchar (10), park varchar (10), prin varchar (20), KolVag int) if @imm=0 begin Set @Query='INSERT INTO #Pogr_abs (kotd, tp, rodv, park, prin, KolVag) SELECT kotd, tp, rodv, park, prin, KolVag FROM AIV_Pogruzka' + @mm_min + @yy_min + ' WHERE date_op between ' + @dd_min + @mm_min + @yy_min + ' and ' + @dd_max + @mm_max + @yy_max exec (@Query) goto finish end if @imm=1 begin Set @Query='INSERT INTO #Pogr_abs (kotd, tp, rodv, park, prin, KolVag) SELECT kotd, tp, rodv, park, prin, KolVag FROM AIV_Pogruzka' + @mm_min + @yy_min + ' WHERE date_op >= ' + @dd_min + @mm_min + @yy_min + ' UNION ALL SELECT kotd, tp, rodv, park, prin, KolVag FROM AIV_Pogruzka' + @mm_max + @yy_max + ' WHERE date_op <= ' + @dd_max + @mm_max + @yy_max exec (@Query) goto finish end if @imm>1 begin Set @Query='INSERT INTO #Pogr_abs (kotd, tp, rodv, park, prin, KolVag) SELECT kotd, tp, rodv, park, prin, KolVag FROM AIV_Pogruzka' + @mm_min + @yy_min + ' WHERE date_op >= ' + @dd_min + @mm_min + @yy_min declare @i int, @mm_Prom nvarchar (2), @yy_Prom nvarchar (2) while @i=@imm -1 begin Set @i=@i+1 if MONTH(DATEADD(mm, @i, @mdateMin))<10 Set @mm_Prom='0' + CONVERT(nvarchar (2), MONTH(DATEADD(mm, @i, @mdateMin))) else begin Set @mm_Prom=CONVERT(nvarchar (2), MONTH(DATEADD(mm, @i, @mdateMin))) end Set @yy_Prom=Right(CONVERT(nvarchar (4), YEAR(DATEADD(mm, @i, @mdateMin))),2) Set @Query =@Query + ' UNION ALL SELECT kotd, tp, rodv, park, prin, KolVag FROM AIV_Pogruzka' + @mm_Prom + @yy_Prom end Set @Query =@Query + ' UNION ALL SELECT kotd, tp, rodv, park, prin, KolVag FROM AIV_Pogruzka' + @mm_max + @yy_max + ' WHERE date_op <= ' + @dd_max + @mm_max + @yy_max exec (@Query) end finish: SELECT kotd, tp, rodv, park, prin, Sum(KolVag) as KolVag FROM #Pogr_abs GROUP BY kotd, tp, rodv, park, prin GO Где должна быть SET NOCOUNT ON И подскжите для чего она нужна. Если есть у вас ссылка по этой теме на русском языке в инете то буду очень благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:31 |
|
||
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Кусок примера из МСДН Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Как видишь adoRs сначало открывает "SET NOCOUNT ON" потом отркрывает саму комманду Попробуй может получиться Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 11:23 |
|
||
|
проблема с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
TIKO Нет не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 12:27 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34354007&tid=2164437]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
133ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 404ms |

| 0 / 0 |
