|
|
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Подскажите, не обнавляются данные на сервере, хотя если посмотреть через броуз КА - то данные в курсоре изменены. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 14:30 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. TABLEUPDATE(.T.) - это ф-ия кот. возвращает статус операции сохранения, а ф-ия AERROR показывает почему операция не прошла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 14:33 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
TABLEUPDATE(.T.) возвращает .T. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 14:33 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
SQLEXEC обновляет, т.е. проблем с правами нет. После обновления и вызова lo_CA.CursorRefresh() - смотрю, данные остались прежними, т.е. не изменились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 17:29 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 18:01 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Имена полей и таблиц были измененм,т.е. тут очепятка :-) похоже причина в именах полей, они с пробелами. Т.е. вид: table1."my fields" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 18:24 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Вот примерно как у меня формируется КА. Вся проблема в том, что в именах полей есть пробелы. Имена таких полей, в коммандах отправляемых на сервер, должны быть заключены в двойные кавычки, т.е. иметь такой вид material."material number", иначе сервер не поймет, что это поле таблицы. Т.е. [] и ' ' не прокатят. Пока не понял, как это можно обойти. Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2008, 10:17 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Еще кой чего нарыл, если я ставлю свойство lo_CA.UseCursorSchema=.T. то ругается на ключевое поле на комманде update, но если перед update сделать brows, тогда ошибки нет, но все равно не обновляет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2008, 11:58 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Так и не победил пробелы в названиях полей БД. Пришлось на серваке создавать временную таблицу, через КА заливать туда данные и дальше обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2008, 17:22 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
lo_CA.UpdatableFieldList="idTable, organisation" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2008, 23:23 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
По ходу вообще надо отказываться от КА, очень медленно работает :( Придется менять логику работы, еще протестю прокситаблицы либо лок.базы использовать и обновлятся раз в недельку/месяц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 12:12 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
GoshaSПо ходу вообще надо отказываться от КА, очень медленно работает :( Правильно настроенный адаптер работает достаточно шустро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 12:14 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. Если убрать проверку: lo_CA.ConflictCheckType=3 то разницы никакой нет по времени. Работа через ODBC с Sybase SQL ASA 8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 12:29 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
авторПо ходу вообще надо отказываться от КА, очень медленно работает :( http://fox.wikis.com/wc.dll?Wiki~CursorAdapterOrNot~VFP не верю Основное новшество, появившееся в VFP8 и затем доработанное в VFP9 – это базовый класс - курсорадаптер. Цитата из статьи Chuck'а Urwiller'а: "Класс уникален тем, что это первый базовый класс в VFP, который обеспечивает преобразование между природными курсорами VFP и разными источниками данных, в одном, единичном классе, или, другими словами, способностью транслировать потоки данных ODBC, ADO recordsets и документов XML в курсоры Visual FoxPro." Курсорадаптер – это визуальный класс, который облегчает разработку клиент-серверного приложения, позволяет создать абстрактный классы, которые автоматически производят преобразование типов данных, изменение данных в таблицах на MS SQL сервере. Курсорадаптер позволяет получать буферизованные (обновляемые) курсоры, с пом. данного класса легко и логично строятся алгоритмы работы с сервером. Курсорадаптер позволяет создать библиотеки визуальных классов и перейти к объектно-ориентированному программированию. В 9-й версии появилось свойство курсорсхема, с пом.которого появилась возможность возложить все функции по конвертации данных на класс (именно большое количество ошибок, связанных с конвертацией обнаруживается в процессе эксплуатации ...) и появилась возможность произвести автоматическое обновление отдельных записей в курсоре (иметь обновляемые данные с удаленного источника данных после того, как произойдут операции Insert/Update). Курсорадаптер проще и быстрее работает с данными! Позволяет избежать ошибок при разработке приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 15:16 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Я и не заставляю верить :-) 10 минут через КА и 5 секунд средствами БД. Ладно, незачем больше разбирать тему. Если имя ключ.поля с пробелами - то КА не обновляемый и создавать то его, по большому счету уже не имеет смысла, легче создать временную таблицу на сервере и залить dbf средствами самого сервака, и потом передавать комманды через SQLEXEC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 17:48 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
автор10 минут через КА и 5 секунд средствами БД. завтра на тестах покажу обратное. посмотрите внимательно на триггера и отключите. при массовой заливке средствами сервера триггера не работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 18:33 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
[quot автор]Ладно, незачем больше разбирать тему[./quot] не нужно делать голословные утверждения. большого труда стоит объяснять преим-ва КАДов, а у Вас все просто... я с sybase не работал, но покажу тесты для ms sql, которые также подтверждаются тестами в привед-й выше ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 18:43 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
[quot автор]Ладно, незачем больше разбирать тему[./quot] не нужно делать голословные утверждения. большого труда стоит объяснять преим-ва КАДов, а у Вас все просто... я с sybase не работал, но покажу тесты для ms sql, которые также подтверждаются тестами в привед-й выше ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 19:21 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Возможно нужно указать не " а '. Может быть это критично для сервера. lo_CA .UpdateNameList=[MATERIAL_NUMBER material.'material number', ORGANISATION material.organisation] Ключевое поле включить в обновляемые lo_CA .UpdatableFieldList="'material number',ORGANISATION" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 20:24 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. пример, демонстрируйщий скорость работы КАДа 5000 записей улетают на сервер MS SQL 2000 за 1,6 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 09:40 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
ранее занимался тестированием скорости выгрузки на MS SQL сервер больших объемов данных загрузка dbf файла размером 5,6 МБт - команда BCP bulk insert - 48 сек, - загрузка с пом.курсорадаптера – 1 мин 05 сек нет данных, но по опыту : - загрузка пакетами строк через sqlexec - соспоставима по времени с КАД - загрузка в цикле одиночными командами sqlexec - самый медленный способ конечно-же при росте объемов тест BCP bulk insert будет показывать преимущ-во, но данный способ применим только при наличии доступного каталога на сервере, что иногда нереализуемо при опред-х требованиях безопасности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 09:53 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
TEXT TO l_sql NOSHOW PRETEXT 15 create table #myTempTable ( organisation numeric(4,0), ncrd char(16) ) ENDTEXT IF SQLEXEC(_nCH,l_sql)<=0 AERROR(a_er) MESSAGEBOX('Ошибка N '+CAST(a_er(1) as varchar(6))+CHR(13)+a_er(2), 16) RETURN .F. ENDIF ENDIF lo_CA=CREATEOBJECT("CursorAdapter") lo_CA.Alias="c_TestCA" lo_CA.DataSourceType="ODBC" lo_CA.DataSource=_nCH lo_CA.SelectCmd='select ncrd, organisation from #myTempTable' lo_CA.CursorSchema = "ncrd C(16), ORGANISATION N(4, 0)" lo_CA.UseCursorSchema=.T. lo_CA.Tables="#myTempTable" lo_CA.KeyFieldList="ncrd" lo_CA.UpdateNameList=[ncrd #myTempTable.ncrd, ORGANISATION #myTempTable.organisation] lo_CA.UpdatableFieldList="ncrd, ORGANISATION" *** lo_CA.UpdateCmdDataSourceType="ODBC" lo_CA.UpdateCmdDataSource=_nCH lo_CA.AllowUpdate=.T. lo_CA.UpdateType=1 lo_CA.InsertCmdDataSourceType="ODBC" lo_CA.InsertCmdDataSource=_nCH lo_CA.AllowInsert=.T. **** lo_CA.BufferModeOverride=5 lo_CA.AllowSimultaneousFetch=.T. lo_CA.BatchUpdateCount=150 lo_CA.MaxRecords=150 lo_CA.BreakOnError=.T. lo_CA.ConflictCheckType=3 llCursorFilled=lo_CA.CursorFill() IF llCursorFilled=.F. AERROR(a_er) MESSAGEBOX('Ошибка N '+CAST(a_er(1) as varchar(6))+CHR(13)+a_er(2), 16) RELEASE lo_CA RETURN .F. ENDIF lnPredpr=thisform.comboboxsearch1.Value LOCAL ltStart1,ltEnd1 ltStart1=DATETIME() INSERT INTO c_TestCA (ncrd,organisation) SELECT ncrd, lnPredpr FROM c_MyLocalCursore **** loCheck=Newobject("custom_check","C:\foxprg\Class\my\pcb_otchet.vcx") IF loCheck.data_update('c_TestCA')=1 WAIT WINDOW 'Этап 2' NOWAIT TIMEOUT 10 ELSE RELEASE lo_CA USE IN c_TestCA RETURN .F. ENDIF ltEnd1=DATETIME() MESSAGEBOX(CAST(INT((ltEnd1-ltStart1)/60) as varchar(3)) +':'+; CAST((ltEnd1-ltStart1)-INT((ltEnd1-ltStart1)/60)*60 as varchar(2))) IF loCheck.data_update('c_TestCA')=1 WAIT WINDOW 'Этап 3' NOWAIT TIMEOUT 10 ELSE RELEASE lo_CA USE IN c_TestCA RETURN .F. ENDIF RELEASE lo_CA RETURN .T. [/src]Так 11:20 Если буферизацию сделать 3-ю, тогда 9:45. Возможно проблема не в КА, а в совместимости :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 14:07 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
сорри за предыдущий пост, потерял тэг Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. Если буферизацию сделать 3-ю, тогда 9:45. Возможно проблема не в КА, а в совместимости :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 14:15 |
|
||
|
Курсор адаптер не обновляет данные
|
|||
|---|---|---|---|
|
#18+
авторВозможно проблема не в КА, а в совместимости тогда необходим ответ, работающего с sybase с исп-ем КАДов. приложенный Вами пример я смоделировать и проверить не смогу, т.к. sybase не владею для ms sql я Вам показал, что такой проблемы нет, а наоборот существует рост производительности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35398903&tid=1587591]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 425ms |

| 0 / 0 |
