Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
Имеем Д7 + FireDAC примерно 2013г.

Вот такой простой код в рунтайме все равно выкидывает на экран эксепшн
qExec.insert;
....
    try
      qExec.Post;
    except
      inc(Errors);
    end;l
"Нарушение уникальности ключа при вставке".
Допустим так надо. Но хочется полностью проигнорировать ошибку и продолжить работу.
Внутрь except оно заходит.

Манипуляции с обработчиком OnPostError и TDataAction у датасета ничего не дали.

Задача - проимпортировать только новые (по значению ключа) записи у произвольной таблицы.
Как подавить сообщение ?
15 май 19, 12:52    [21885179]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10857
L_argo
Как подавить сообщение ?
Запустить без отладчика
15 май 19, 13:39    [21885227]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
_Vasilisk_
L_argo
Как подавить сообщение ?
Запустить без отладчика
Чистый рунтайм. Без среды и отладчика.
15 май 19, 13:47    [21885245]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
Kast2K
Member

Откуда: Санкт-Петербург
Сообщений: 471
L_argo
Задача - проимпортировать только новые (по значению ключа) записи у произвольной таблицы.


if not (select null from tbl where a=aa) 
 begin
insert into tblMain
(a,b,c)
values
(aa,bb,cc)
  end
15 май 19, 13:57    [21885260]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
Kast2K
L_argo
Задача - проимпортировать только новые (по значению ключа) записи у произвольной таблицы.


if not (select null from tbl where a=aa) 
 begin
insert into tblMain
(a,b,c)
values
(aa,bb,cc)
  end
Не годится. Нужно много телодвижений для получения валидного SQL. Проще уж делать подзапрос на существование ключа.
И то, состав полей ключа еще нужно получить. Не то, чтобы сложно, но опять таки телодвижения.
15 май 19, 14:36    [21885332]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
merge там есть?

Быстрее залить всё без индексов во временную таблицу и дернуть его, чем дро дергать каждую строчку в ожидании чуда.
15 май 19, 14:39    [21885336]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10857
L_argo
Чистый рунтайм. Без среды и отладчика.
Не верю. Приведенный вами код никакого сообщения без отладчика показывать не должен
15 май 19, 15:25    [21885412]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
vavan
Member

Откуда: Казань
Сообщений: 3261
_Vasilisk_, это если нет явного или неявного обработчика к-й это делаетКартинка с другого сайта.
15 май 19, 15:42    [21885440]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
Кароч сделал заливку во времянку и вставку в пост. таблицу по not exists()

Попутно оказалось, что выполнить ExecSQL

select * into #MyTmp from ......

не так просто. :)
ФайрДАК понимает его как селект-запрос. Команда тупо игнорилась.
Добавил впереди IF 1=1 и заработало :)

Тема эксепшена не раскрыта, но цель достигнута: импорт новых строк работает.
15 май 19, 18:02    [21885650]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
L_argo
select * into #MyTmp from ......

MS SQL? Там есть merge.
16 май 19, 07:53    [21885834]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4465
wadman
L_argo
select * into #MyTmp from ......

MS SQL? Там есть merge.

Там много чего есть, в том числе и Хранимые процедуры и Транзакции и Try...Catch...
16 май 19, 09:04    [21885878]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4465
L_argo
Кароч сделал заливку во времянку и вставку в пост. таблицу по not exists()

Попутно оказалось, что выполнить ExecSQL

select * into #MyTmp from ......

не так просто. :)
ФайрДАК понимает его как селект-запрос. Команда тупо игнорилась.
Добавил впереди IF 1=1 и заработало :)

Тема эксепшена не раскрыта, но цель достигнута: импорт новых строк работает.

Зачем это делать через клиента?!
16 май 19, 09:05    [21885879]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
Gerasimenko
Зачем это делать через клиента?!
1. Не понял вопроса.
2. Потому что все равно выйдет Динамический SQL.
3. Все нужно сделать внутри приложения без применения сторонних средств и для максимально низкой версии МССКЛ. Хотя бы с 2005.

Задача: из произвольной базы извлечь некие срезы данных и накатить их одним файлом в другую такую же базу. Например отобрать новые карточки товара и залить их в другую пустую иди непустую БД.
16 май 19, 09:26    [21885896]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
L_argo
Gerasimenko
Зачем это делать через клиента?!
1. Не понял вопроса.
2. Потому что все равно выйдет Динамический SQL.
3. Все нужно сделать внутри приложения без применения сторонних средств и для максимально низкой версии МССКЛ. Хотя бы с 2005.

Задача: из произвольной базы извлечь некие срезы данных и накатить их одним файлом в другую такую же базу. Например отобрать новые карточки товара и залить их в другую пустую иди непустую БД.

Это был намек на dts/ssis - на встроенные средства, которые надежнее и быстрее.
16 май 19, 09:50    [21885922]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
wadman
Это был намек на dts/ssis - на встроенные средства, которые надежнее и быстрее.
Встроенные куда ? В комп клиента ?
Эти встроенности - говно. Что они умеют ? Подсунь туда дату чуть не в том формате и оно адово зафейлит.

Недавно пробовал импортировать CSV. Пока настроил - запарился. :)

А как работать CSV для таблиц с БЛОБами/binary() ?
Как-то не сталкивался, но думаю, что там тоже будет АДъ. :)
16 май 19, 12:40    [21886119]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
L_argo
В комп клиента ?

dts/ssis это часть ms sql-сервера. Клиенту вообще должно быть всё равно на это.
С блобами нет проблем.
16 май 19, 12:54    [21886133]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4465
L_argo
wadman
Это был намек на dts/ssis - на встроенные средства, которые надежнее и быстрее.
Встроенные куда ? В комп клиента ?
Эти встроенности - говно. Что они умеют ? Подсунь туда дату чуть не в том формате и оно адово зафейлит.

Недавно пробовал импортировать CSV. Пока настроил - запарился. :)

А как работать CSV для таблиц с БЛОБами/binary() ?
Как-то не сталкивался, но думаю, что там тоже будет АДъ. :)

автор
Эти встроенности - говно. Что они умеют ? Подсунь туда дату чуть не в том формате и оно адово зафейлит.

Все, что нужно знать о ТС-е, пытающимся оказать помощь...
16 май 19, 13:23    [21886178]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
wadman
L_argo
В комп клиента ?

dts/ssis это часть ms sql-сервера. Клиенту вообще должно быть всё равно на это.
С блобами нет проблем.
Так уж нет... Ога...
Открываем ССМС. Запускаем мастер экспорта (в нестуктурированный файл) выбираем таблицу с БЛОБом и.....
SSMS
Сообщения
Ошибка 0xc0208030: Задача потока данных 1: входной столбец "ObjFileBody" (81) имеет тип данных DT_IMAGE, который не поддерживается. Используйте вместо него DT_TEXT или DT_NTEXT, выполняйте преобразования данных в тип DT_IMAGE или из него при помощи компонента преобразования данных.
(Мастер импорта и экспорта SQL Server)
Т.е. при наличии готового мастера нельзя сделать простую операцию. :)
И это экспорт, который казалось бы можно сделать однозначно просто.
Что уж про импорт говорить....
16 май 19, 14:14    [21886263]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
L_argo
Т.е. при наличии готового мастера нельзя сделать простую операцию. :)
И это экспорт, который казалось бы можно сделать однозначно просто.
Что уж про импорт говорить....

"Тут нужен программист". (с)
16 май 19, 14:30    [21886292]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
wadman
L_argo
Т.е. при наличии готового мастера нельзя сделать простую операцию. :)
И это экспорт, который казалось бы можно сделать однозначно просто.
Что уж про импорт говорить....

"Тут нужен программист". (с)
Ога... Один программист тут советует клиенту наставить "стандартные" SSMS/SSIS/SSDT и с помощью них импортировать произвольную инфу неподготовленному юзеру.
Из Вашего меседжа непонятно, как решить задачу произвольного экспорта/импорта при условии, что это должен делать юзер без подготовки и без установки доп. софта.

Мой импорт ориентирован на неподготовленного юзера. Который выделил строчки, сохранил в файл, отправил коллеге, а коллега втянул файл в другую БД одним кликом. Никакого стороннего софта.
16 май 19, 16:31    [21886442]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
L_argo
Один программист тут советует клиенту наставить "стандартные" SSMS/SSIS/SSDT и с помощью них импортировать произвольную инфу неподготовленному юзеру. Картинка с другого сайта.

Это:
1. Бардак, что импортом чего угодно занимается "юзер".
2. Ставить ничего не нужно "юзеру", это компоненты сервера.

В прочем, какая разница...
17 май 19, 07:49    [21886795]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
wadman
1. Бардак, что импортом чего угодно занимается "юзер".
2. Ставить ничего не нужно "юзеру", это компоненты сервера.
1. А кто должен этим заниматься ? Программист ? :)
2. Исполнителю передали файл для импорта. Как это выглядит для того, кто будет осуществлять импорт ? Что и куда он должен поместить и запустить ?

зы: Юзер - пользователь инф. системы. Возможно с повышенными правами, если речь про импорт.
17 май 19, 10:25    [21886939]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25344
L_argo
1. А кто должен этим заниматься ? Программист ? :)
2. Исполнителю передали файл для импорта. Как это выглядит для того, кто будет осуществлять импорт ? Что и куда он должен поместить и запустить ?

Первое не уровень компетентности программиста, второе - не (продвинутого) пользователя.
Это орг.вопросы, которые должны решаться тимлидом/руководителем/архитектором, которого, судя по всему, не хватает.
Да и тут они выходят за рамки темы и раздела.
17 май 19, 10:43    [21886980]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
L_argo
Member

Откуда:
Сообщений: 742
wadman
L_argo
1. А кто должен этим заниматься ? Программист ? :)
2. Исполнителю передали файл для импорта. Как это выглядит для того, кто будет осуществлять импорт ? Что и куда он должен поместить и запустить ?

Первое не уровень компетентности программиста, второе - не (продвинутого) пользователя.
Это орг.вопросы, которые должны решаться тимлидом/руководителем/архитектором, которого, судя по всему, не хватает.
Да и тут они выходят за рамки темы и раздела.
Это не ответы на вопросы. Это бла-бла.
17 май 19, 13:28    [21887198]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC, try except и ошибка при Post  [new]
ёёёёё
Member

Откуда:
Сообщений: 188
L_argo
Имеем Д7 + FireDAC примерно 2013г.

Вот такой простой код в рунтайме все равно выкидывает на экран эксепшн
qExec.insert;
....
    try
      qExec.Post;
    except
      inc(Errors);
    end;l
"Нарушение уникальности ключа при вставке".
Допустим так надо. Но хочется полностью проигнорировать ошибку и продолжить работу.
Внутрь except оно заходит.

Манипуляции с обработчиком OnPostError и TDataAction у датасета ничего не дали.

Задача - проимпортировать только новые (по значению ключа) записи у произвольной таблицы.
Как подавить сообщение ?

Посмотреть на исходники?
17 май 19, 13:36    [21887206]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить