Вот есть у меня основная форма, на форме размещен 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 код из основной формы снова работает, до тех пор, пока не вызовется вспомогательная форма.
В чем собака зарыта?
Виноват наверняка ЯнусГрид, но не пойму, что ему не нравится.