powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / не отрабатывает Insert
22 сообщений из 22, страница 1 из 1
не отрабатывает Insert
    #36964474
dendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Помогите. У меня проблема - не отрабатывает Insert в теблицу. Т.е. ошибок нет, но в таблице ничего не происходит.


gd_date_vidach = Today()
dw_report.object.out_no_date[1] = gd_date_vidach


INSERT into F5_new (d)
values (:gd_date_vidach);
commit;

Update F5_new;
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36964491
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dendi,

Вышеприведенный скрипт просто не обрабатывает ошибки, это не означает, что их нет.
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36965307
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dendiUpdate F5_new;
Это что за ересь?
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36965395
maniac85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я канешно не то чтобы специалист, но скажу
dendigd_date_vidach = Today()
слово date уже содержится в сокращенном виде в аббревиатуре gd)
dw_report.object.out_no_date[1] = gd_date_vidach
лучше наверное использовать setitem, хотя к инсерту эта строка вообще не имеет отношения
INSERT into F5_new (d)
values (:gd_date_vidach);
commit;
писать sql запросы прямо в тексте программы обычно не нужно, работу с базой берет на себя datawindow
Update F5_new;ну это явно отчаянные попытки спасти положение)

Вообще конечно хотелось бы знать что этот скрипт должен делать, потому как выглядит довольно сомнительно
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36965414
Фотография shut-up-and-skate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй execute immediate
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36965456
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где анализ SQLCA.SQLCode (ну, хотя бы ...)
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36965510
Фотография shut-up-and-skate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кодdendiINSERT into F5_new (d)
values (:gd_date_vidach);
должен работать если ты добавиш using sqlca; или что там у тебя
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36965660
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
19.11.2010 11:12, shut-up-and-skate пишет:

> должен работать если ты добавиш using sqlca; или что там у тебя

Может, хватит безграмотных советов?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36967103
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну давайте все-таки разберем ошибки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
datetime gd_date_vidach
 gd_date_vidach = datetime(Today()) //необходимо явно привести к datetime
dw_report.object.out_no_date[ 1 ] = gd_date_vidach
//Теперь  2  пути - обновление через dw если оно обновляемое или вставка в таблицу напрямую
//Обновление через dw
dw_report.update()
if sqlca.sqlcode <>  0  then
      MessageBox('Внимание', 'Ошибка сохранения данных '+ sqlca.sqlerrtext)
      rollback;
else
      commit;
end if
//Или вставка через прямой инсерт
INSERT into F5_new (d) // а поле точно "d" называется?
values (:gd_date_vidach);
if sqlca.sqlcode <>  0  then
      MessageBox('Внимание', 'Ошибка сохранения данных '+ sqlca.sqlerrtext)
      rollback;
else
dw_report.ResetUpdate()
      commit;
end if

Не скажу что это верх совершенства, но примерно так. Используйте любой метод
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36967134
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001,

Если Вы думаете, что данный код получит текущие дату и время, то Вы ошибаетесь.
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36967429
armblg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001,

Имхо, после dw_report.update() проверять SQLCA.SQLCode бесполезно - там всегда 0, даже при ошибке, перехватывать которую нужно в событиях DW, но не суть.
Возможно автор (кстати, чего-то его не слышно) привел различные попытки записи в таблицу, которые не работают. Может ограничения на уровне БД?
Обработку ошибок нужно вставить обязательно, на крайняк включить trace и посмотреть логи.
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36967905
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пауэрбилдеровская переменная gd_date_vidach, насколько я понял, имеет тип date, а не datetime (иначе она бы именовалась gdt_date_vidach), а поле в таблице базы данных наверняка имеет тип date, который в базах данных хранит и время тоже и собсна говоря соответствует типу datetime в PB (т.е. поле одного типа, а значение вставляется другого). Я не утверждаю, что проблема именно в этом (и замечания по обработке ошибок поддерживаю), но можно попробовать передать INSERT-у переменную типа datetime чтоб выяснить здесь ли собака порылась:

Код: plaintext
1.
2.
3.
4.
5.
6.
datetime ldt_date_vidach

ldt_date_vidach = DateTime(Today()) // если нужно и время, то DateTime(Today(), Now())

INSERT into F5_new (d) 
values (:ldt_date_vidach);
commit;
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36968459
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
armblgspas2001,

Имхо, после dw_report.update() проверять SQLCA.SQLCode бесполезно - там всегда 0
Д-а-а??? Вы уверены?
При блобах может и бесполезно, а так - вполне жизнеспособный вариант

То Ursego
А я собственно зачем пример привел. Но скорее всего и поле в БД datetime если нормальный человек проектировал

Марк, время будет нулевое и я это прекрасно знаю:)
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36968474
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для самообразования:)
RTFMError handling in scripts

The scripts shown in the SQL examples above do not include error handling, but it is good practice to test the success and failure codes (the SQLCode attribute) in the transaction object after every statement. The codes are:

Value Meaning
0 Success.
100 Fetched row not found.
-1 Error; the statement failed. Use SQLErrText or SQLDBCode to obtain the detail.
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36968780
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001,

Функции DW retrieve(), update() не меняют состояние trans.SQLCode.
Ошибку можно увидеть только проверив, что вернула фунция (-1 в случае ошибки) или в событии dberror
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36969036
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Anatoly Moskovsky

Я это и имел ввиду:)
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36969040
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя может быть и не совсем так, если доступ к базе происходит в синхронном режиме, мы можем проверить состояние транзакции непосредственно после update. Если в асинхронном, то тогда необходимо ловить dberror
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36983033
dendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое всем за дельные советы! Вариантов было очень много предложено. Вышла из ситуации намного проще. Все отработало после того как INSERT и values поставила в одну строчку.

gd_date_vidach = Today()
dw_report.object.out_no_date[1] = gd_date_vidach


INSERT into F5_new (d) values (:gd_date_vidach);
commit;
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36983170
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dendi,

Что-то в это как-то слабо верится, если честно. А что за СУБД в которую делается вставка?
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36984990
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сказал робот Вертер, "это становится интересным"! Даже попахивает оккультизмом!

Думаю, INSERT и тогда прекрасно отрабатывался, или-же была какая-то другая проблема (например, в свЯзи с сервером), которая потом исчезла.
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36985005
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoКак сказал робот Вертер, "это становится интересным"! Даже попахивает оккультизмом!

Думаю, INSERT и тогда прекрасно отрабатывался, или-же была какая-то другая проблема (например, в свЯзи с сервером), которая потом исчезла.
Все может быть, в PB парсер embedded sql веселый :)

Например, когда-то давным-давно у меня запрос в PowerScript коде :
Код: plaintext
1.
2.
3.
select xxx into :v 
  from table -- comments
 where {filter};
на сервер передавался в виде одной строки (убраны переводы строк)
Код: plaintext
1.
select xxx from table -- comments where {filter}
и естественно where оказывался закомментированным.
Вот я намучался пока нашел это
...
Рейтинг: 0 / 0
не отрабатывает Insert
    #36985359
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

Вот и я о том же, зная такую склонность PB к склеиванию запроса я имею серьезные основания предполагать, что и в начальном случае запрос передавался на сервер в одну строку.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / не отрабатывает Insert
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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