Доступ к COM-серверу Visual FoxPro из VB 6.0 - PullRequest
0 голосов
/ 08 марта 2012

Проблема связана с использованием VFP COM-сервера из Visual Basic 6.0 (SP 6).

Код (актуально)

Private moVFPServer As f_vfpsvr.VFPServer

В разделе:

Dim oRec As f_vfpsvr.VFPRecord 
Set oRec = moVFPServer.NewRecord("LoanMstr")    
With oRec    
  .SetField "ssn", sSSN    
  .SetField "awdyr", sAwardYear    
  .SetField "tran_date", Format(Now, "mm/dd/yyyy")    
  .Commit    
End With

Метод «NewRecord» из moVFPServer возвращает объект, который представляет новую пустую запись в таблице VFP «LoanMstr».

Код следует для заполнения свойств / полей и сохранения данных.

Все это работает, если VFP COM-сервер построен с использованием VFP 8.0 и не работает при построении с использованием VFP 9.0 .

В частности, ошибки приложения VB в строке кода:

Set oRec = moVFPServer.NewRecord("StdMstr")

COM-сервер выдает исключение: ошибка автоматизации -2147417851.

Это происходит на той же машине.

1 Ответ

1 голос
/ 08 марта 2012

COM-объекты, созданные в VFP, могут иногда вести себя немного странно, особенно когда дело доходит до появления ошибок в резервной копии стека

Но кажется очень странным, что это проявляется только при встроенном VFP9. Я полагаю, что между 8 и 9 произошли какие-то серьезные изменения в базе данных, возможно, вы попали в одну из них?

Есть ли у вас ошибка в коде VFP? Если нет, попробуйте установить некоторые свойства ошибок и опросить их в VB, когда вы получите ошибку?

Т.е. у нас есть что-то вроде

FUNCTION ERROR(nError, cMethod, nLine)
    THIS.cErrDesc = "Error Number: " + TRANSFORM(nError) + CRLF + "Message: " + MESSAGE() + CRLF  + "Method: " + cMethod + CRLF  + "Line #: " + TRANSFORM(nLine)

    COMRETURNERROR(cMethod, THIS.cErrDesc)

ENDFUNC
...