Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Delphi6 Oracle DbExpress Помогите пожалуйста закончить транзакцию


KA3AK ©   (25.10.17 14:12

Имеется следующая конструкция
dmodule.SQLClientDataSet1.CommandText := 'Select * from bookkeep.reestr_payment'
dmodule.SQLClientDataSet1.Active := true;
dmodule.SQLClientDataSet1.Append;
dmodule.SQLClientDataSet1.FieldByName('LS').Value := a_csv;
dmodule.SQLClientDataSet1.Post;
а после выполнения
dmodule.SQLClientDataSet1.ApplyUpdates(10);
выскакиваеи сообщение "Таблица или представление не существует"
Подумал, что возможно нужно сделать так:
dmodule.SQLConnection1.StartTransaction(TransDesc: TTransactionDesc);
но не знаю как описать переменную TransDesc.
Момогите если можно пожалуйста.


rrrrrrr ©   (25.10.17 14:25[1]

транзакции здесь не при делах и ничем не помогут.
тем более что она там и так уже открывается, даже если не стартована явно.


KA3AK ©   (25.10.17 14:43[2]

На практике выглядит так.
Всё вроде работает.
Даже в DbGrid вывожу данные после добавления.
Они отражаются.
Но смотрю напрямую после на сервере, их там нет.
Как бы отмена или RollBack выполняется почему то.


rrrrrrr ©   (25.10.17 14:49[3]

окей. еще раз попробую.

транзакция (неявная) там уже есть.
и добавление явной транзакции через StartTransaction ничего в этой ситуации не изменит.


KA3AK ©   (25.10.17 14:51[4]

Есть же ещё метод Commit в SqlConnection.
Может как то по другому всё надо делать.


rrrrrrr ©   (25.10.17 15:01[5]

твой коммит был бы выполнен в любом случае, независимо от того, сам ты его вызываешь или не вызываешь сам.

но он не выполняется, так как генерируется исключение, после которого делается роллбэк.

а почему генерируется исключение - ты и сам видишь в сообщении


KA3AK ©   (25.10.17 15:31[6]

Чего то не понял.
Я не вижу почему делается ролбэк.


rrrrrrr ©   (25.10.17 15:52[7]

не видишь то, что сам же и написал.
бывает.
наверное ты робот.


KA3AK ©   (25.10.17 15:56[8]

Ну объясни пожалуйста.
Я действительно не понимаю.
Где, когда и почему делается этот ролбэк


rrrrrrr ©   (25.10.17 15:59[9]

для лайв запросов в оракле бывает важен регистр имени таблицы (зависит от движка доступа).
универсальный вариант - имя таблицы в апперкейсе


KA3AK ©   (25.10.17 16:05[10]

Я же по сути этот запрос
dmodule.SQLClientDataSet1.CommandText := 'Select * from bookkeep.reestr_payment'
dmodule.SQLClientDataSet1.Active := true;
в DbGrid показываю и он отражается.
Написать что ли всё большими буквами
'Select * from BOOKKEEP.REESTR_PAYMENT'  ???


KA3AK ©   (27.10.17 15:43[11]

Понял, что применение этих методов не целесообразно
как то не корректно всё работает.
Пришлось самому копать.
лучше это
   dmodule.SQLQuery1.SQL.Text :='Insert into Bookkeep.reestr_payment_tmp '+
           '(ls, summa, fio, ul, dom, kv, city, dat, kod_pl) ' +
           'values (....)';
а затем
   dmodule.SQLQuery1.ExecSQL(true);


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо