powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Работа метода POST
23 сообщений из 23, страница 1 из 1
Работа метода POST
    #39504842
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Столкнулся тут с одной темой, просто раньше по другому строил свои приложения, а тут решил сделать иначе
Вообщем организовал простой query выполнения хранимой процедуры, которая вытаскивает данные из нескольких таблиц (одна основная и к ней несколько джойнов подчиненных) этот запрос отображаю в гриде со всеми возможностями редактирования, так вот если я к примеру добавляю новую запись с определением связующих ключей, а затем выполняется Post, то запись добавляется в основную таблицу (что нормально), но также и добавляется запись и во все подчиненные таблицы (с одной стороны вроде логично, но по замыслу - неправильно) можно ли этого как-то избежать? Видимо вопрос банальный, просто с этим не сталкивался ранее. Заранее спасибо.
...
Рейтинг: 0 / 0
Работа метода POST
    #39504845
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968если я к примеру добавляю новую запись с определением связующих ключей, а затем выполняется Post, то запись добавляется в основную таблицу (что нормально), но также и добавляется запись и во все подчиненные таблицы (с одной стороны вроде логично, но по замыслу - неправильно) можно ли этого как-то избежать?
Конечно, можно. Код покажи. И текст запроса (свойства) InsertSQL, если он есть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа метода POST
    #39504857
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да запрос элементарный
SELECT dc.ID, dc.CLSID, dc.ISID, i.ISName
FROM dbo.DataConsumer dc join dbo.InfoSystems i on (i.ISID = dc.ISID)
WHERE dc.CLSID = @pCLSID
ORDER BY dc.ISID

а InsertSQL там нет, это ADOQuery
...
Рейтинг: 0 / 0
Работа метода POST
    #39504881
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968> a InsertSQL нет, это ADOQuery

А, до сих пор кто-то использует ADO...Читать MSDN:
http://msdn.microsoft.com/en-us/library/office/jj250169.aspx
И не задавать значения для связанных полей.

Но лучше, конечно, по-человечески редактировать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа метода POST
    #39504884
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать поля в датасете InternalCalc, чтобы они не передавались в запрос при сохранении?
...
Рейтинг: 0 / 0
Работа метода POST
    #39504889
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968Да запрос элементарный
SELECT dc.ID, dc.CLSID, dc.ISID, i.ISName
FROM dbo.DataConsumer dc join dbo.InfoSystems i on (i.ISID = dc.ISID)
с точки зрения SQL этот запрос не является "редактируемым", даже если бы обращения в нем были к таблицам, а не к процедурам или процедуре.
(собственно, любой запрос, превращающий физические записи в "виртуальные", не может быть отредактирован. Даже group by по одной таблице).
В SQL модифицировать одним оператором можно только один объект - insert,delete и update всегда относятся только к одной таблице.
Если же вам компоненты доступа каким-то образом превращают запрос в "редактируемый", это значит, что они (компоненты) сами конструируют запросы insert/update/delete, по отдельности для каждой таблицы.
Следовательно, если вы данное поведение считаете "неправильным", значит вас не устраивает то, что автоматически делает ADO, и вы должны самостоятельно формировать требуемые insert/update/delete только к требуемым (по вашим условиям) таблицам.
...
Рейтинг: 0 / 0
Работа метода POST
    #39505164
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжении темы, может кто подскажет, не помню уже, компонент TADOUpdateSQL вроде раньше поставлялся, а сейчас у меня RAD Studio XE 10 и что-то там его я не нахожу, просто в проекте ADO используется и на FireDAC переходить неохота, да и люди пишут, что ADO по-шустрее будет
...
Рейтинг: 0 / 0
Работа метода POST
    #39505189
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968> компонент TADOUpdateSQL вроде раньше поставлялся,
patrick1968> а сейчас у меня RAD Studio XE 10 и что-то там его я не нахожу

В поставку он никогда не входил.
В гугл (есть на delphikingdom и ещё много где).

> на FireDAC переходить неохота, да и люди пишут, что ADO по-шустрее будет

"ADO пошустрее" - это хорошая шутка, да. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа метода POST
    #39505453
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ado быстрее" очень сомнительно))
UpdateSQL было только для IBX
...
Рейтинг: 0 / 0
Работа метода POST
    #39505500
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinUpdateSQL было только для IBXВ зеосе тоже
...
Рейтинг: 0 / 0
Работа метода POST
    #39505507
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkin"ado быстрее" очень сомнительно))
UpdateSQL было только для IBX

Для BDE
...
Рейтинг: 0 / 0
Работа метода POST
    #39505559
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_krapotkinUpdateSQL было только для IBXВ зеосе тожеЕще в фиб-плюсах
...
Рейтинг: 0 / 0
Работа метода POST
    #39505580
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перешел на FireDac, вроде неплохо, один момент о котором придется немного задуматься: при записи данных в базу, надо проверять, чтобы не было повторяющихся записей, поэтому в секциях Insert и Update у FDUpdateSQL поставил соответствующую проверку, но тут при записи дублирующей строки возникает исключение FireDac, что мол запрашивается добавление 1 строки, а в реалиях добавляется 0 строк, что якобы неправильно, может кто сталкивался, как это обойти?
...
Рейтинг: 0 / 0
Работа метода POST
    #39505585
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968> при записи данных в базу, надо проверять, чтобы не было
patrick1968> повторяющихся записей, поэтому в секциях Insert и Update
patrick1968> у FDUpdateSQL поставил соответствующую проверку

Что за бред ?

> но тут при записи дублирующей строки возникает исключение FireDac,
> что мол запрашивается добавление 1 строки, а в реалиях добавляется 0 строк,
> что якобы неправильно, может кто сталкивался, как это обойти?

Создай новый топик с кодом и текстом сообщения об ошибке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа метода POST
    #39505595
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что же тут бредового, есть датасет простой 2 поля (2 кода), эти поля отображаются в гриде, пользователь может к примеру добавить 1 или несколько записей с одинаковыми кодами, что неверно, поэтому чтобы не заморачиваться с лишними проверками решил, что просто при сохранении отбрасывать неправильные записи, на форумах нашел, что можно свойство Dataset.UpdateOptions.CountUddateRecords установить в false и будет счастье, но не помогло
...
Рейтинг: 0 / 0
Работа метода POST
    #39505636
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968> пользователь может к примеру добавить 1 или
patrick1968> несколько записей с одинаковыми кодами, что неверно

Если неверно - получит сообщение об ошибке.
Которую можно выдать как есть или переведя
на русский "такая запись уже существует".

P.S. Программировать методом тыка и
"на форумах нашел" не очень эффективно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа метода POST
    #39505778
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про сообщение об ошибке всё ясно, его можно обработать и перевести если надо на любой язык, а если не надо ничего сообщать а просто эти записи игнорировать? А про программирование методом тыка, здесь ты не прав, методом тыка это когда человек сам не понимает, что пытается сделать, а это не тот случай. Только одного не ясно, если не знаешь толком, что посоветовать, зачем учить жизни
...
Рейтинг: 0 / 0
Работа метода POST
    #39505810
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968> если не надо ничего сообщать а просто эти записи игнорировать?

Если не надо сообщать о том, что пользователь сделал
ошибочное с т.з. бизнес-логики действие - то надо
ошибку не выдавать, т.е. перехватить и подавить.
Хотя само подобное желание обычно неправильно.

> зачем учить жизни

А, буйный... ОК, молчу, мучайся сам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа метода POST
    #39505825
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не буйный, всё излагаю достаточно вежливо и корректно, просто мне твоя реакция не понятна, я же спрашиваю у людей реально ли сделать определенное действие, а то как можно сделать слегка иначе, я знаю. А подавлять неправильные действия юзеров, я считаю, иногда правильно, а забрасывать их многочисленными сообщениями не всегда требуется, особенно если данное бизнес правило не слишком критичное.
...
Рейтинг: 0 / 0
Работа метода POST
    #39505844
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968подавлять неправильные действия юзеровpatrick1968забрасывать их многочисленными сообщениями
ИмхоНекузявая вилка. Спроектировать так, чтобы сократить количество таких моментов - перспективнее в плане поддержки: контроль ситуации остается у программиста, у юзеров меньше поводов для "странных" хотелок... Разве, что, если за строки платят...
...
Рейтинг: 0 / 0
Работа метода POST
    #39505890
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968,

желающие помочь тебе люди всего лишь просили привести оригинальный текст ошибки. Ты же начал спорить. Думаешь таким образом увеличить кол-во желающих тебе помочь? :)
...
Рейтинг: 0 / 0
Работа метода POST
    #39506094
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно, мы с людьми желающими помочь, неправильно друг друга поняли, я предположил, что мне советовали обработать исключение должным образом и выдать его пользователю, про оригинал сообщения я ничего не видел, а что касается его, вот он exact update affected 0 rows while 1 was requested
...
Рейтинг: 0 / 0
Работа метода POST
    #39506425
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968А подавлять неправильные действия юзеров, я считаю, иногда правильно, а забрасывать их многочисленными сообщениями не всегда требуется,Если мы говорим о том как удобнее пользователю, то пользователю удобнее дизейбл кнопки ОК с баллоном почему дизейблим. Т.е. не глотатать ошибки, а запрещать их делать. Иначе пользователь будет сильно удивляться, почему он все делает, а эффекта нет никакого

P.S. При многопользовательской работе заранее проверить все не удастся, но тут можно и об ошибке сказать
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Работа метода POST
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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