Вот есть у меня основная форма, на форме размещен JanusGrid. В форме есть такой код:
- Код: Выделить всё
- ...
 Set cmd = New ADODB.Command
 cmd.CommandType = adCmdStoredProc
 cmd.CommandText = "qCardData_GetByID"
 cmd.Parameters.Append cmd.CreateParameter("varCardID", adInteger, adParamInput, , ID)
 Set cmd.ActiveConnection = objConnection
 Set rs = New ADODB.Recordset
 rs.CursorLocation = adUseServer
 rs.CursorType = adOpenKeyset
 rs.LockType = adLockReadOnly
 rs.Open cmd
 Set cmd = Nothing
 grdCardData.HoldFields
 grdCardData.HoldSortSettings = True
 Set grdCardData.ADORecordset = rs
 ...
Код работает, грид отображает данные.
Есть другая форма, открываемая из основной. В ней тоже есть грид и используется такой код:
- Код: Выделить всё
- Private Sub RefreshGrid()
 Dim rs As ADODB.Recordset, cmd As ADODB.Command
 If varCardID = 0 Then
 grdDetails.HoldFields
 grdDetails.HoldSortSettings = True
 Set grdDetails.ADORecordset = Nothing
 Else
 Set cmd = New ADODB.Command
 cmd.CommandType = adCmdStoredProc
 cmd.CommandText = "qCardData_GetByID"
 cmd.Parameters.Append cmd.CreateParameter("varCardID", adInteger, adParamInput, , varCardID)
 Set cmd.ActiveConnection = objConnection
 Set rs = New ADODB.Recordset
 rs.CursorLocation = adUseClient
 rs.CursorType = adOpenKeyset
 rs.LockType = adLockReadOnly
 rs.Open cmd
 Set cmd = Nothing
 Set rs.ActiveConnection = Nothing
 grdDetails.HoldFields
 grdDetails.HoldSortSettings = True
 Set grdDetails.ADORecordset = rs
 grdDetails.LoadEntireRecordset
 Set rs = Nothing
 End If
 RefreshTotals
 End Sub
Этот код тоже работает и отображает данные.
Глюк тут в следующем.
После того, как я из основной формы открыл вспомогательную, код в основной форме выдает ошибку:
Код ошибки: -2147467259 ( 0x80004005 ) , 0 ( 0x00000000 )
Неопознанная ошибка
Источник ошибки: Microsoft JET Database Engine
Состояние SQL: 3219
Код ошибки: -2147467259 ( 0x80004005 ) , -85919008 ( 0xFAE0FAE0 )
Недопустимая операция.
Источник ошибки: Microsoft JET Database Engine
Состояние SQL: 3219
Код ошибки: -2147467259 ( 0x80004005 ) , -85919008 ( 0xFAE0FAE0 )
Недопустимая операция.
Источник ошибки: Microsoft JET Database Engine
Состояние SQL: 3219
Причем, эта ошибка постоянная, т.е. после перезапуска программы она не исчезает.
Она исчезает только если этот параметрический запрос выполнить в Access.
После запуска запроса из Access код из основной формы снова работает, до тех пор, пока не вызовется вспомогательная форма.
В чем собака зарыта?
Виноват наверняка ЯнусГрид, но не пойму, что ему не нравится.



 
  
