Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
На сервере MSSQL 2000 DE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В Visual FoxPro 8 SP1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. В profiler'e наблюдаю это Код: plaintext 1. PS> VFP 8 SP1 даже не может нормально распарсить параметры в caADOTypeDS.SelectCmd! И это платформа для Client-Server Development'а? Ну тогда Билл - испанский летчик :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 09:47 |
|
||
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
2funikovyuri Ну это вы зря... Скорее всего что в коде не так... Например добавить exec в SelectCmd. К сожалению сам по ряду причин не использую CA ( У нас трехзвенка и данные передаются через Adodb.Recordset или его xml, а потом этот xml парситься через XmlAdapter) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 11:06 |
|
||
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
Crip , родной, я б очень хотел чтоб ошибка была в моем коде - но где? Я с этим CursorAdapter+ADO уже замучался - то одно то другое... Говоришь сменить sp_select_employee на exec sp_select_employee - не помогает - да и не могло... в документации //mk:@MSITStore:c:\program%20files\microsoft%20visual%20foxpro%208\dv_foxhelp.chm::/html/folrfcursorfillmethod.htm сказано что The ADO Command object must have its ActiveConnection property set to the appropriate and already open ADO Connection object. When an ADO Command object is passed to Source, Visual FoxPro sets the ADO Command CommandText property to value of the CursorAdapter SelectCmd property. Visual FoxPro parses any parameters in SelectCmd, and creates and sets parameter values in the ADO Command object. CursorFill method then executes in the following manner: CursorAdapter.DataSource.Open( Source,,,,Options ) Поэтому он просто отправляет SelectCmd в ADODB.Command.Text и все - ему параллельно что там написано :( PS> А если написать в SelectCmd что-то типа sp_select_employee;1 - то в trace вообще вот это Код: plaintext Т.е. он вроде как номер процедуры убрал - вот только в sp_procedure_params_rowset отправил его как 0 !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 11:18 |
|
||
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
необходимо создать объект параметр присвоить значение и все работает ПРИМЕР ИЗ HELP Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. .... и только время боится пирамид! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 12:21 |
|
||
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
Pavel_t Спасибо конечно - но у меня CursorFill() выполняеться на основе ADODB.Command, а не RecordSet - а это не одно и тоже. Я так же действую в рамках документации. У вас работа с параметрами целиков лежит на ADO - ясно что у ADO таких проблем как у VFP нет... :( PS> к стати, где в help'e вы нашли такой пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 14:24 |
|
||
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
Я использую связку ADODB.Command -- RecordSet -- CursorAdapter работает быстрее чем через odbc если работать через ADO то RecordSet всеравно создается Код: plaintext CLEAR LOCAL loConn AS ADODB.CONNECTION, ; loCommand AS ADODB.COMMAND, ; loParam AS ADODB.PARAMETER, ; loRs AS ADODB.Recordset,; loException AS EXCEPTION, ; loCursor AS CURSORADAPTER, ; lcCountry, ; laErrors[1] loConn = CREATEOBJECT('ADODB.Connection') WITH loConn .ConnectionString = [Provider=SQLOLEDB.1;Integrated Security=SSPI;PersistSecurity Info=False;Initial Catalog=Northwind;Data Source=.;] TRY .OPEN() CATCH TO loException MESSAGEBOX(loException.MESSAGE) CANCEL ENDTRY ENDWITH loCommand = CREATEOBJECT('ADODB.Command') loCommand.CommandText = ; "SELECT * FROM customers WHERE Country = ?" loParam = loCommand.CreateParameter("Country", 129, 1, 15, "") loCommand.PARAMETERS.APPEND(loParam) loCommand.PARAMETERS("Country") = "Brazil" loCommand.ActiveConnection = loConn loRs = loCommand.Execute() loCursor = CREATEOBJECT('CursorAdapter') WITH loCursor .ALIAS = 'Customers' .DATASOURCETYPE = 'ADO' llReturn = .CURSORFILL(.F., .F., 0, loRs) IF llReturn BROWSE loRs.ActiveCommand.PARAMETERS("Country") = "Canada" llReturn = .CURSORREFRESH() IF llReturn BROWSE ENDIF llReturn ELSE AERROR(laErrors) MESSAGEBOX(laErrors[2]) ENDIF llReturn ENDWITH .... и только время боится пирамид! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 16:30 |
|
||
|
Так жить нельзя (CursorAdapter)
|
|||
|---|---|---|---|
|
#18+
Я использую связку ADODB.Command -- RecordSet -- CursorAdapter И я тоже - только немного по другому. Я так понимаю - и тот и тот вариант рекомендованы документацией и в принципе эквивалентны. Буду сегодня экспериментировать. Просто не хотелось хостить еще и RecordSet - ведь по хорошему даже Command - тоже должен был быть реализован MS в составе самого CursorAdapter... То что RecordSet создается - это ясен пень - только не в результате работы Command. Т.е. можно создать RecordSet - сохранить его в CA.DataSource и забыть - т.е. далее руками только Command - в вашем же варианте рекордсет создается только как результат Execute() - что явно менее удобно :( Ну ничего - вроде workaraund найден - а от VFP я другого и не жду. PS> Насчет параметров Я создал таблицу cmd_parameters - и туда в design-time кидаю параметры от stored procedures (написано через ADOX), затем оттуда когда надо эту информацию загружаю - таким образом отпадает необходимость каждый раз писать всю эту муть для CreateParameter() . Если интересно могу сюда запостить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2004, 17:25 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1596010]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
4ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 431ms |

| 0 / 0 |
