powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите разобраться с Update Datawindow
20 сообщений из 20, страница 1 из 1
Помогите разобраться с Update Datawindow
    #32464797
blackman_odessa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема заключается в том, что не сохраняются изменения в базу данных (ASA8). Скрипт таков:
CurDW=Parent.dw_Catalogs
CurDW.of_SetUpdateable(True)
ll_newrow = CurDW.InsertRow(0)
CurrID=CurDW.SetItem(ll_newrow, "CatalogParentID", targetid)
CurrID=CurDW.SetItem(ll_newrow, "CatalogName", targetname)
CurrID=CurDW.SetItem(ll_newrow, "CatalogLevel", targetlevel)
rtn = CurDW.of_Update(True,True)
IF rtn = 1 AND SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA;
CurrID=CurDW.GetItemNumber(ll_newrow,"CatalogID")
ELSE
ROLLBACK USING SQLCA;
END IF

Update и все SetItem проходят успешно, а вот SQLNRows возвращает ноль в любом случае. Если все же применить Commit , то в базу попадает лишь CatalogName. UpdateProperties выставлены верно.
Использование в том же месте следующего скрипта успешно.
Insert into Subjects
(SubjectParentID,SubjectLevel,SubjectName,
SubjectIsVisible)
VALUES (:TargetID,:TargetLevel,:TargetName,1)
USING SQLCA ;
IF SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA ;
END IF

В чем моя ошибка? Где покопать?
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32464799
blackman_odessa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, опечатка вышла...
Insert into Catalogs
(CatalogParentID,CatalogLevel,CatalogName)
VALUES (:TargetID,:TargetLevel,:TargetName)
USING SQLCA ;
IF SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA ;
END IF
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465010
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по
авторв базу попадает лишь CatalogName
Могу сделать предоложение :
У колонок есть свойство DbName . По моему , нужно его проверить.
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465111
blackman_odessa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С dbname все в норме
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465160
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может тогда все же посмотреть на соответствие типов данных для DW колонок и параметров ?
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465311
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот точно не помню, какие влаги выствляются при такой вставке данных, но можно попробовать с помощью SetItemStatus явно поменять статус вставленных данных, чтобы они были новыми. Ну, типа, чтобы PB знал, что это новые данные, после этого можно будет смело запускать Update .
Попробуй, может поможет...
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465405
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в DW Painter в Update Properties какие колонки отмечены как
"Updateable Columns"
?
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465698
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
авторrtn = CurDW.of_Update(True,True)
IF rtn = 1 AND SQLCA.SQLNRows > 0 THEN

Функция DW Update() не меняет состояние свойств объекта транзакции. Поэтому это условие не имеет смысла. Используй событие updateend для проверки кол-ва задействованных строк, и событие dberror для обработки ошибок.

2)
автор Если все же применить Commit , то в базу попадает лишь CatalogName. UpdateProperties выставлены верно.

Т.е. запись вставляется, но в остальных полях - NULL ?
Какой запрос генерится при update() (событие sqlpreview) ?
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32465958
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это случаем не первоапрельская шутка ?
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32466205
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а проверить слабо? :))
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32466331
blackman_odessa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не шутка( по крайней мере я это не планировал, правда в Одессе шутки этим и отличаются!!!)))))
Событие SQLPREVIEW показывает следующий результат sqlsyntax
INSERT INTO "catalogs" ( "catalogname", "catalogownerid", "cataloglevel", "catalogparentid" ) VALUES ( ?, ?, ?, ? )
и результат вставки 1!!

Updateable columns - все кроме catalogid(primary key)

и типы данных проверпены и перепроверены...
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32466419
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай Export DW и пришли мне на пошту vmv_gaz@yahoo.com полученый файлик
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467122
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если "...catalogid(primary key)... " не является автоинкрементом - то правильно на тебя матюкается SQL :)

Ежели автоинкремент - то выложи скрипт генерации данной таблицы и скрипт описания DW (Edit source).
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467184
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз...

попробуй убрать из условия SQLNRows. ну например так
автор.................
IF rtn = 1 /*AND SQLCA.SQLNRows > 0 */THEN
COMMIT USING SQLCA;
CurrID=CurDW.GetItemNumber(ll_newrow,"CatalogID")
ELSE
ROLLBACK USING SQLCA;
END IF
..................

Тогда все коммититься и сохраняется. SQLNRows - специфично работает для каждой конкретной СУБД.

Ну это по быстрому... :)
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467188
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
use function: dw_1.of_SetTransObject(<sqlca - transaction>) or dw_1.SetTransObject(<sqlca-transaction>)
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467211
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело не в транзакции. SQLNRows действительно возвращает всегда 0 под АСА 8.02. Это может лечится настройками коннекта (а может и нет...).

Предлагаю просто на флаг не смотреть ентот.
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467219
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторSQLNRows Long

The number of rows affected (the database vendor supplies this number, so the meaning may not be the same in every DBMS).
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467806
blackman_odessa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отвечу всем:
1) catalogid автоинкремент
2) на SQLnrows уже и не обращал внимания, т.к. действительно читал за его поведение. Я ж не зря написал, шо когда комитил его насильно, то получал вставку с незаполненными полями. Причина, собственно говоря, была в том, что я первоначально создавал объект DW без полей CatalogLevel и CatalogParentID. Затем я их добавил и они оказались невыбранными в Updateable Columns. Позже я это увидел и исправил, но самое противное, шо PB этого не заметил!!!! А я то этого не знал... Вот я и продолжал веселиться со всякой ерундой, пока не тронул шо-то, шо заставило его обновить свою информацию. В итоге все работает, хотя с моей точки зрения ничего и не менялось. Может я просто перезапустил комп... (у меня ноут и я его обычно не выключаю совсем).
Единственное шо меня смущает - это почему в SQLPreviw все же прописано
INSERT INTO "catalogs" ( "catalogname", "catalogownerid", "cataloglevel", "catalogparentid" ) VALUES ( ?, ?, ?, ? ) при полностью правильной отработке?
Впрочем это меня просто смущает - готов об этом забыть до следующей проблемы...
Как всегда всем спасибо за участие!
PS. Если это и была шутка, то скорее всего PBuildera!!! Видать среди разработчиков немало комиков!
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467833
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕдинственное шо меня смущает - это почему в SQLPreviw все же прописано
INSERT INTO "catalogs" ( "catalogname", "catalogownerid", "cataloglevel", "catalogparentid" ) VALUES ( ?, ?, ?, ? ) при полностью правильной отработке?
Тебя что именно смущает, вопросительные знаки, что ли?
Тогда в хелпе про DisableBind DBParm parameter почитай...
...
Рейтинг: 0 / 0
Помогите разобраться с Update Datawindow
    #32467884
blackman_odessa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все стало предельно ясно! Жду новых проблем!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите разобраться с Update Datawindow
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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