Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
Добрый день! Может кто-нибудь подскажет где кроется решение проблемы! В БД 2 таблицы - мастер - Remont и детейл - Dannie_Komissia_Remont (список комиссии ФИО и должность), в делфи (Сиэтл) использую компоненты ADO, соединены по первичному ключу ID_Remont основной таблицы. В Делфи хочу, чтобы в детейл добавлялись поля из не связанной таблицы Sotrydnik (список персонала ФИО и должность). Вешаю на нажатие кнопки такой код: Код: pascal 1. 2. 3. 4. 5. 6. Работает не корректно - в первый раз когда создаешь новую запись всё нормально, в связанную таблицу заносятся записи (4шт.) с нужным ID и потом на форме всё отображается. Когда во вторую новую запись вставляю комиссию - в БД уже заносятся записи с текущим и предыдущим ID (8шт.) и так далее, все предыдущие записи обрабатываются, что ,естественно, не правильно - должны записываться только с текущим ID, на котором стоит курсор! Уже дня три понять не могу в чём проблема. Есть какие идеи в чем кроется проблема? В настройках компонент ADO или в базе что-то надо подкрутить? А может я опять всё не правильно сделал? Заранее спасибо сочуствующим )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 12:56 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
FOGOT-BAstA, какие еще ID? Вы выбираете все строки по условию ''Заместитель председателя комиссии'',''Член комиссии''. Добавьте в выражение фильтра WHERE and not exists (select ...), если не хотите выбирать существующие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 13:11 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
FOGOT-BAstA должны записываться только с текущим ID, на котором стоит курсор! так вы скажите об этом серверу базы данных. с помощью волшебного слова WHERE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 13:19 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
FOGOT-BAstA, Немного офф, для передачи значений в запрос используйте параметры. Собирать так запрос-дурной тон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 14:19 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! В менеджере SQL запрос выполняется правильно, в таблицу при указании конкретного ID_Remont в Dannie_Komissia_Remont добавляется необходимые 4 записи. Владислав КолосовFOGOT-BAstA, Я же их из Sotrydnik выбираю, там 4 записи таких! Можно EXISTS, а можно IN, который я и использую... какие еще ID? Вы выбираете все строки по условию ''Заместитель председателя комиссии'',''Член комиссии''. Добавьте в выражение фильтра WHERE and not exists (select ...), если не хотите выбирать существующие. StarikNavy, Код: sql 1. Вот тут я ведь указываю конкретный текущий ID из Датасета, который надо внести в те 4 строки, которые выбираются из Sotrydnik. Как-то по другому сделать можно средствами SQL? Странно, что при внесении записей из Delphi добавляет вновь созданные в сессии ID_Remont в выборку iiyama, С параметрами постоянный гемор, надо их определять правильно...дольше возиться, уж привык напрямую писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 08:10 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
FOGOT-BAstAС параметрами постоянный гемор, надо их определять правильно...дольше возиться, уж привык напрямую писать Really? А потом кто-нибудь из вредности заведет тебе в поле ID_remont значение Код: sql 1. и будешь ты по-старинке на форуме вопрошать "доколе?!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 11:14 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
FOGOT-BAstA, выбирайте по cdjtve фильтру, но исключите те ID которые уже перенесены, я об этом писал. Исключить можно использую not exists(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 12:41 |
|
||
|
Не могу понять, что влияет на ошибку
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, Успокойтесь, таких вопросов от меня пока не было и не будет. Тем более ID напрямую беру из DataSet'а, параметр тоже его брать будет оттуда же, так какая разница? Поле инкрементное, ключевое, числовое, пользователь его не видит и оно защищено от редактирования. Свои теоретические домыслы оставьте при себе. А если пользователь сможет в приложении каким-то образом написать SQL код с такими записями, то это уже не вопрос передачи параметров... Владислав Колосов, Спасибо, теперь вроде стало более понятно, что Вы имели ввиду. Но в таком случае думаю надо дописывать большой алгоритм считывания всех предыдущих ID, которые были введены в сессии. Я всё-таки грешил на компонент ADOQuery, в обработчике кнопки написал вот так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. и всё стало вводиться корректно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 09:44 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=122&tid=1688614]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 263ms |
| total: | 410ms |

| 0 / 0 |
