На самом деле задача стоит следующего плана. Сформирован запрос: sSQLText = _ "SHAPE {PARAMETERS prUserID LONG; SELECT * FROM Valuations WHERE UserID= prUserID;} AS Valuations" & _ "APPEND ({SELECT * FROM Metals} AS ValMetals RELATE MetalID TO ID) AS ValMetals" Тогда при открытии Recordset Dim db As ADODB.Connection Dim cmd As ADODB.Command Dim rsValuations As ADODB.Recordset Dim rsValMetals As ADODB.Recordset
Set db = New ADODB.Connection db.CursorLocation = adUseClient При открытии соединения, для использования Shape необходимо Указать Provider=MSDataShape.1; db.Open _ "Provider=MSDataShape.1;" & _ "Persist Security Info=False;" & _ "Data Provider=MICROSOFT.JET.OLEDB.3.51;" & _ "Data Source=" & gsDBFileName Set cmd = New ADODB.Command With cmd Set .ActiveConnection = db .CommandText = CReg("Valuations").CommandText .Parameters("prUserID").Value = gnUserID End With
Set rsValuations = New ADODB.Recordset With rsValuations .CursorLocation = adUseClient .Open cmd, , adOpenDynamic, adLockOptimistic и вот здесь возникает ошибка если rsValuations пуст !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! err.Number= 3021 err.Description="Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record." Set rsValMetals = .Fields("ValMetals").UnderlyingValue End With Set cmd = Nothing Set db = Nothing Естественно, Вы можете сказать, что не всегдаже recordset будет пуст, иначе зачем он нужен. Пробовал: With rsValuations .AddNew .............. !MetalID = DEFAULT_METALID и вот здесь возникает другая ошибка!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! err.Number= -2147217887 err.Description="Multiple-step operation generated errors. Check each status value." Set rsValMetals = .Fields("ValMetals").UnderlyingValue ............................................. End With
Ответить
|