powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / странная работа update()
22 сообщений из 47, страница 2 из 2
странная работа update()
    #37757746
Фотография PSmith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
царевич,

Тогда придется вручную перед update городить огород наподобие:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
if idw_master[11].getitemstatus(ll_row,0,Primary!) <> New! then
	idw_master[11].resetupdate()
	idw_master[11].setitemstatus(ll_row,'contract_number',Primary!,DataModified!)
end if
if this.getitemstatus(currentrow,0,Primary!) <> New! then
	this.resetupdate()
	this.setitemstatus(currentrow,'subject_code',Primary!,DataModified!)
end if
...
...
Рейтинг: 0 / 0
странная работа update()
    #37758870
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно быть так (в порядке действий с одной и той-же записью):
1. Вставили запись - New! (если тут вызвать Update() - ничего не произойдет)
2. Отредактировали запись (изменили содержимое полей), затем AcceptText() - NewModified!
3. Update() - вызывает INSERT ... и сбрасывает статус в NotModified!, автоматически заполняется поле, указанное в "identity column"
4. Снова отредактировали запись, затем AcceptText() - DataModified!
5. Update() - вызывает UPDATE ... и сбрасывает статус в NotModified!

Примечание:
Для указанного случая Update() вызывается БЕЗ параметров.
Если вызывать с параметрами, то порядок операций может измениться.
...
Рейтинг: 0 / 0
странная работа update()
    #37759081
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправлю немного, при New! уже будет генерится insert. Что-то с параметрами update datawindow, а без картинки замучишься гадать
Может ключ не тот, может Delete then Insert стоит, да еще куча всего
...
Рейтинг: 0 / 0
странная работа update()
    #37759806
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 spas2001
А Вы точно уверены, что при статусе строки = New! генерится INSERT? :)
царевич выше описывал свое окно "Update Properties", там все как-бы Ок., но я согласен - лучше раз увидеть, чем сто раз услышать.
...
Рейтинг: 0 / 0
странная работа update()
    #37759893
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все нормально - да, иначе пустые значения никогда бы в жизни не вставились:)
...
Рейтинг: 0 / 0
странная работа update()
    #37759899
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте просто инсерт из Database painter-а сделать и проверить результат, может дело, как говориться, не в бобине? Хотя скорее всего у вас дело именно в параметрах обновления dw.
...
Рейтинг: 0 / 0
странная работа update()
    #37766292
царевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 этап успешно сохраняется(без ошибок имею виду,но в БД ничего нет) только именно после ошибки дублирования ключа, ломает она в чтоли что-то?! Может есть у кого соображения на этот счет?
спасибо
...
Рейтинг: 0 / 0
странная работа update()
    #37766301
царевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
файл скриншота не прикладывается
но вот что в нем:

where clause: key columns

key modification: use update

updateble columns: все кроме ID

identiti column: ID

unique key column: ID
...
Рейтинг: 0 / 0
странная работа update()
    #37766529
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже не помню где, но видел, что Micro-софтовский Autoincrement как-то по особому надо описывать в коннекте или где-то еще ...
Просто так (как будто-бы) DW его не читает. Но, могу и ошибаться.
...
Рейтинг: 0 / 0
странная работа update()
    #37766651
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Включите в update колонку id раз выбран вариант key in place
Коннект к БД настроен как? Через OLEDB?
...
Рейтинг: 0 / 0
странная работа update()
    #37766861
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикольно читается. Потратить неделю на хрень вместо того, чтобы за полдня переписать эту халтуру на Embedded SQL и решить проблему раз и навсегда.
...
Рейтинг: 0 / 0
странная работа update()
    #37766952
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это тоже мешается
s1 varchar(4) not null UNIQUE NONCLUSTERED
Вы убираете значение из s1? Но честно говоря, вы просто что-то не то делаете
...
Рейтинг: 0 / 0
странная работа update()
    #37767572
царевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000, что вы предлагаете переписать на Embedded SQL?Вставку в БД?в 50 окнах.

spas2001,
1. в update колонку id добавил, ничего не изменилось
2. коннект к БД через mss microsoft sql server
3. чем мешает колонка s1?Да я удаляю введенное в нее значение. что не то я делаю? объясните, пожалуйста, подробнее?
...
Рейтинг: 0 / 0
странная работа update()
    #37767599
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Драйвер MS SQL может неверно отрабатывать, попробуйте через OLEDB
Колонка мешает тем, что not null, а вы удаляете значение, попробуйте пока без лишних ограничений
...
Рейтинг: 0 / 0
странная работа update()
    #37767694
царевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001,
Без лишних ограничений я пробовал, все работает хорошо. Но я ведь не могу отказаться от использования not null полей и уникальных индексов
...
Рейтинг: 0 / 0
странная работа update()
    #37767780
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24.04.2012 11:14, царевич написал:

> Dim2000, что вы предлагаете переписать на Embedded SQL?Вставку в БД?

Да.

> в 50 окнах.

Для начала - там, где глючит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
странная работа update()
    #37767847
Фотография PSmith
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
царевич,

А не пробовали в окошке "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.

?
...
Рейтинг: 0 / 0
странная работа update()
    #37767868
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда при инсерте не забывайте их заполнять:)
А серьезно, у меня на 9-ке кажется встречалась подобная проблема для MS SQL 2005, на OLEDB она пропала
...
Рейтинг: 0 / 0
странная работа update()
    #37769156
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000Прикольно читается. Потратить неделю на хрень вместо того, чтобы за полдня переписать эту халтуру на Embedded SQL и решить проблему раз и навсегда.

это ^^^^^^^^ уж точно прикольнее читается. НИКОГДА не следуйте таким жутким советам...
...
Рейтинг: 0 / 0
странная работа update()
    #37769187
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В папке .../Shared/PowerBuilder есть файлик pbodb90.ini. Там куча параметроыв для работы с различными базами. На сколько я знаю, то DW кое что оттуда подчитывает. Может это поможет ...
...
Рейтинг: 0 / 0
странная работа update()
    #37769225
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24.04.2012 20:05, Филипп написал:

> это ^^^^^^^^ уж точно прикольнее читается. НИКОГДА не следуйте таким
> жутким советам...

И что тут жуткого? Если уж топикстартер не может сделать через DW, пусть
пробует более простой вариант (а если и его не потянет - гнать в шею,
ибо безнадёжен).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
странная работа update()
    #37769326
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim200024.04.2012 20:05, Филипп написал:

> это ^^^^^^^^ уж точно прикольнее читается. НИКОГДА не следуйте таким
> жутким советам...

И что тут жуткого? Если уж топикстартер не может сделать через DW, пусть
пробует более простой вариант (а если и его не потянет - гнать в шею,
ибо безнадёжен).

Я в шею гоню тех, кто Embedded SQL в РВ использует :-))))
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / странная работа update()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]