|
странная работа update()
|
|||
---|---|---|---|
#18+
царевич, Тогда придется вручную перед update городить огород наподобие: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2012, 17:57 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Должно быть так (в порядке действий с одной и той-же записью): 1. Вставили запись - New! (если тут вызвать Update() - ничего не произойдет) 2. Отредактировали запись (изменили содержимое полей), затем AcceptText() - NewModified! 3. Update() - вызывает INSERT ... и сбрасывает статус в NotModified!, автоматически заполняется поле, указанное в "identity column" 4. Снова отредактировали запись, затем AcceptText() - DataModified! 5. Update() - вызывает UPDATE ... и сбрасывает статус в NotModified! Примечание: Для указанного случая Update() вызывается БЕЗ параметров. Если вызывать с параметрами, то порядок операций может измениться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 12:40 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Поправлю немного, при New! уже будет генерится insert. Что-то с параметрами update datawindow, а без картинки замучишься гадать Может ключ не тот, может Delete then Insert стоит, да еще куча всего ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:15 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
2 spas2001 А Вы точно уверены, что при статусе строки = New! генерится INSERT? :) царевич выше описывал свое окно "Update Properties", там все как-бы Ок., но я согласен - лучше раз увидеть, чем сто раз услышать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 19:09 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Если все нормально - да, иначе пустые значения никогда бы в жизни не вставились:) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 20:18 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Попробуйте просто инсерт из Database painter-а сделать и проверить результат, может дело, как говориться, не в бобине? Хотя скорее всего у вас дело именно в параметрах обновления dw. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 20:24 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
1. Создал новую таблицу для тестов create table dbo.test20120423 ( id int identity, s1 varchar(4) not null UNIQUE NONCLUSTERED, s2 varchar(255) null, status char(1) not null default 'A', CONSTRAINT PK_test PRIMARY KEY (id) ) 2. Добавил в нее 1 запись, вот селект из табл id s1 s2 status ----------- ---- ----------------------- ------ 1 test A ------------------------------------------------ 3. Создаю dw грид в PB паинтере по этой таблице 4. Выставляю update_properties(выкладываю скриншот), ставлю на s1 свойство empty is null 5. Добавляю новую строку. Ввожу в поле s1 = test. Пытаюсь сохранить, получаю ошибку Violation of UNIQUE KEY constraint 'UQ__test20120423__'. Cannot insert duplicate key in object 'dbo.test20120423'. No changes made to database. INSERT INTO dbo.test20120423 ( s1 ) VALUES ( 'test' ) 6. Очищаю s1, перевожу курсор в s2, пытаюсь сохранить, ошибки не выдает, но и ID не появляется. 7. Ввожу s2=test, пытаюсь сохранить, получаю ошибку Row changed between retrieve and update. No changes made to database. UPDATE dbo.test20120423 SET s2 = 'test' WHERE id IS NULL Почему на 6 этапе не возникает ошибки? и почему PB на 7 этапе начинает делать update а не insert? Выяснил опытным путем, что 6 этап успешно сохраняется(без ошибок имею виду,но в БД ничего нет) только именно после ошибки дублирования ключа, ломает она в чтоли что-то?! Может есть у кого соображения на этот счет? спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 14:35 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
файл скриншота не прикладывается но вот что в нем: where clause: key columns key modification: use update updateble columns: все кроме ID identiti column: ID unique key column: ID ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 14:39 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Я уже не помню где, но видел, что Micro-софтовский Autoincrement как-то по особому надо описывать в коннекте или где-то еще ... Просто так (как будто-бы) DW его не читает. Но, могу и ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 16:17 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Включите в update колонку id раз выбран вариант key in place Коннект к БД настроен как? Через OLEDB? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 16:58 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Прикольно читается. Потратить неделю на хрень вместо того, чтобы за полдня переписать эту халтуру на Embedded SQL и решить проблему раз и навсегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 18:26 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Вот это тоже мешается s1 varchar(4) not null UNIQUE NONCLUSTERED Вы убираете значение из s1? Но честно говоря, вы просто что-то не то делаете ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 19:22 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Dim2000, что вы предлагаете переписать на Embedded SQL?Вставку в БД?в 50 окнах. spas2001, 1. в update колонку id добавил, ничего не изменилось 2. коннект к БД через mss microsoft sql server 3. чем мешает колонка s1?Да я удаляю введенное в нее значение. что не то я делаю? объясните, пожалуйста, подробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 10:14 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Драйвер MS SQL может неверно отрабатывать, попробуйте через OLEDB Колонка мешает тем, что not null, а вы удаляете значение, попробуйте пока без лишних ограничений ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 10:23 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
spas2001, Без лишних ограничений я пробовал, все работает хорошо. Но я ведь не могу отказаться от использования not null полей и уникальных индексов ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 10:57 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
24.04.2012 11:14, царевич написал: > Dim2000, что вы предлагаете переписать на Embedded SQL?Вставку в БД? Да. > в 50 окнах. Для начала - там, где глючит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 11:32 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
царевич, А не пробовали в окошке "Specify update properties" указывать: Identity Column Specify an identity column. An identity column is one whose value in a new row is automatically assigned by the DBMS. If an identity column is specified, PowerBuilder displays its value for a new row after an insert in the DataWindow object. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 12:00 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Тогда при инсерте не забывайте их заполнять:) А серьезно, у меня на 9-ке кажется встречалась подобная проблема для MS SQL 2005, на OLEDB она пропала ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 12:08 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Dim2000Прикольно читается. Потратить неделю на хрень вместо того, чтобы за полдня переписать эту халтуру на Embedded SQL и решить проблему раз и навсегда. это ^^^^^^^^ уж точно прикольнее читается. НИКОГДА не следуйте таким жутким советам... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 19:05 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
В папке .../Shared/PowerBuilder есть файлик pbodb90.ini. Там куча параметроыв для работы с различными базами. На сколько я знаю, то DW кое что оттуда подчитывает. Может это поможет ... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 19:15 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
24.04.2012 20:05, Филипп написал: > это ^^^^^^^^ уж точно прикольнее читается. НИКОГДА не следуйте таким > жутким советам... И что тут жуткого? Если уж топикстартер не может сделать через DW, пусть пробует более простой вариант (а если и его не потянет - гнать в шею, ибо безнадёжен). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 19:31 |
|
странная работа update()
|
|||
---|---|---|---|
#18+
Dim200024.04.2012 20:05, Филипп написал: > это ^^^^^^^^ уж точно прикольнее читается. НИКОГДА не следуйте таким > жутким советам... И что тут жуткого? Если уж топикстартер не может сделать через DW, пусть пробует более простой вариант (а если и его не потянет - гнать в шею, ибо безнадёжен). Я в шею гоню тех, кто Embedded SQL в РВ использует :-)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2012, 20:34 |
|
|
start [/forum/topic.php?fid=15&msg=37759806&tid=1335555]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
123ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 494ms |
0 / 0 |