|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
На SQL Server есть таблица “Zakaz” и три поля kod; kod_i,kol и табл. ni с полями kod; naim Создаю курсор адаптер lczayv_str="select ni.naim,zakaz.kol from zakaz left join ni on zakaz.kod_i=ni.kod " oca_zayav=CREATEOBJECT('CursorAdapter') WITH oca_zayav .ALIAS = 'zakaz' .DATASOURCETYPE = 'ODBC' .DATASOURCE = lnconnection2 .SELECTCMD = lczayv_str .CURSORSCHEMA = "naim C(40), kol I" .UPDATABLEFIELDLIST = 'naim, kol' .UPDATENAMELIST = 'naim ni.naim,kol zakaz.kol' ENDWITH SELECT 0 oca_zayav.CURSORFILL(.T.,.T.) DO FORM forms\zayavka На форме грид, и кнопка «сохранить изменения» oca_zayav.CURSORREFRESH This.parent.grid1.setfocus я делаю изменения кол-ва в гриде Нажимаю кнопку, а изменения не сохранились, почему?, и как сделать чтоб эти изменения зафиксировались в таблице SQL Server “Zakaz” ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:04 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
q1w1e1как сделать чтоб эти изменения зафиксировались в таблице SQL Server “Zakaz”Изучить и правильно настроить свойства адаптера UpdatebleFields, Tables, KeyFields и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:09 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
Спасибо, блин, как я сам не догадался об очевидном... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:19 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
вот пример. в примере скрипт для создания таблички и показан пример настройки св-в КАДа. Поиграйтесь - там все пока просто и понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:23 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
Спасибо, но у Вас простая таблица, а у меня курсор состоит из выборки двух таблиц... Извиняюсь, что-то я сильно загнул с SQL(ем) :-))...надо упростить задачу для понимания, и сделать базу данных на VFP9 состоящую из двух таблиц(tabl1 kod;naim и tabl2 kod; kod_t1,kol), и сделать КА с курсором получающимся из двух таблиц, и если я делаю изменения кол-ва, то как указать КА, чтоб он нашёл код именно второй таблицы и внёс изменения кол-ва второй таблицы.. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:38 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
Да и у меня тоже кстати Cursorrefresh() стоит, ну а изменений нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:41 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
автори сделать КА с курсором получающимся из двух таблиц, и если я делаю изменения кол-ва, то как указать КА, чтоб он нашёл код именно второй таблицы и внёс изменения кол-ва второй таблицы.. Вам нужно создать второй курсорадаптер, в который синхронизировать изменения и выполнять метод сохранения доп-го КАДа авторИзвиняюсь, что-то я сильно загнул с SQL(ем) Вам для какого источника нужен пример? для родных таблиц или ? авторДа и у меня тоже кстати Cursorrefresh() стоит, ну а изменений нет... покажите выражение селекткмд, изменяете(параметризуется) ли выражение? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:51 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
авторВам нужно создать второй курсорадаптер, в который синхронизировать изменения и выполнять метод сохранения доп-го КАДа к примеру имеется 1 КАД select * from table 1 left join table2 .... если Вы желаете вносить изм-я в table2 и ..., то должны создать доп. КАД для table2 с выражением селекдкмд: select * from table2 where ...=?table1.Key необходимо вносить изм-я в курсор КАД table2, сохранять изм-я, рефрешить курсор КАД table1 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:56 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
Всё преполнение памяти...буду разбираться... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 12:59 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
авторНажимаю кнопку, а изменения не сохранились, почему?, + чтобы сохранить изм-я, необходимо конечно проверить наличие изменений и позвать tableupdate() то, что Вы желаете реализовать называется - каскадное сохранение (создание каскадных КАДов) если желаете создать универс-ю библиотеку классов, позволяющих делать это автом-ки, как пример кода к дей-ю, возможно натолкнет на мысль (это метод сохр-я изм-й обратите внимание на блок сохр-я каскадов) Код: 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. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 13:03 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
авторВсё преполнение памяти...буду разбираться... с КАДами связываться стоит если Вы желаете создать библиотеку классов, чтобы быстро и без проблем решать задачи, иначе, если нет задачи создания универс.библиотек, то не стоит осуществлять погружение в изучение вышеобозначенных идей модули памяти остынут - приходите. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 13:30 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
Вот более или мене стандартная процедура для получения результата из хранимой процедуры. Совет: Получения данных и их отображения две разные вещи PROCEDURE MsSQLSpisok LPARAMETERS lc_Cursor,lc_BazaName,lc_ExecStr LOCAL lc_TempCursor lc_TempCursor=SYS(2015) IF VARTYPE(GN_ConSql)<>"N" OR GN_ConSql=0 GN_ConSql = SQLCONNECT(lc_BazaName) IF GN_ConSql < 0 MessageBox("Ошибка. Не удалось подсоединиться к SQL Server",0,"Работа с MSSQL") RETURN ENDIF ENDIF _Screen.MousePointer = 11 IF SQLEXEC(GN_ConSql,lc_ExecStr,lc_TempCursor) <> -1 IF USED((lc_Cursor)) USE IN (lc_Cursor) ENDIF IF USED((lc_TempCursor)) USE DBF(lc_TempCursor) IN 0 ALIAS (lc_Cursor) AGAIN SHARED USE IN (lc_TempCursor) endif =SQLDISCONNECT(GN_ConSql) GN_ConSql=0 _Screen.MousePointer = 0 ELSE =SQLDISCONNECT(GN_ConSql) _Screen.MousePointer = 0 MessageBox("Ошибка. Не удалось получить данные из хранимой процедуры",0,"Работа с MSSQL") ENDIF RETURN ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2009, 16:30 |
|
Курсор адаптер: не изменяются данные
|
|||
---|---|---|---|
#18+
авторВот более или мене стандартная процедура для получения результата из хранимой процедуры. Совет: Получения данных и их отображения две разные вещи 2gepard45 зачем Вы влезли и опубликовали Ваш код? изв., анализируя код, можно сделать вывод, что Вы на уровне неандертальца. Вопрос был изначально по использованию курсорадаптера. Что в данном контексте демонстрирует Ваш пример. авторПолучения данных и их отображения две разные вещи к чему эта фраза? вопрошавший получает данные и задумался над тем как без особых трудозатрат вносить изменения м автоматически сохранять результаты в источнике. каким образом Вы с SQLEXEC желаете помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2009, 19:49 |
|
|
start [/forum/topic.php?fid=41&msg=35867224&tid=1586673]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 470ms |
0 / 0 |