|
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
|
||||||
RAD XE3+ Фильтр в Query и поиск совпадений06.12.2022, 12:20. Показов 2370. Ответов 40
Метки нет (Все метки)
добрый день, есть таблица
делаю фильтр по id_main, потом ищу в поле id_dsp - если есть значение 1 и 41 тотогда в строке з значением 41 в поле forma_ поставить другое значение, например букву "Б" вот что я написал, понимаю что примитивно, но не знаю как иначе
0
|
||||||
| 06.12.2022, 12:20 | |
|
Ответы с готовыми решениями:
40
Поиск совпадений и действия в зависимости от наличия совпадений ixsso.Query, поис частичных совпадений. Фильтр через query params |
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
||
| 11.12.2022, 14:03 | ||
|
0
|
||
| 11.12.2022, 14:28 | |
|
0
|
|
|
1048 / 489 / 41
Регистрация: 05.05.2022
Сообщений: 3,439
|
|
| 11.12.2022, 15:10 | |
|
Кем-то такие куски кода были названы заклинаниями.
Код все качают, особенно если он решает какую-то частную задачу, проблема, когда предметную область не учат.
0
|
|
|
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
|
|
| 11.12.2022, 21:06 [ТС] | |
|
D1973, уже несколько раз читаю упреки на счет этого кода, а аналогии поиска не предлагаешь
0
|
|
|
1048 / 489 / 41
Регистрация: 05.05.2022
Сообщений: 3,439
|
|
| 11.12.2022, 21:53 | |
|
Потому что никто до сих пор не понял, что именно ты хочешь сделать. Менять запись в базе для вручную выбранного id?
Ну а криво выбранная структура данных - это самый главный источник всех последующих проблем.
0
|
|
|
Модератор
|
||
| 12.12.2022, 04:19 | ||
|
MaryoLunga83,
1. Эти строки просто не нужны. Вообще! 2. 3. Так-то давным давно параметрические запросы придуманы... Это я про претензии к тому, кем-то придуманному коду. Логику же Вашего кода я понять совсем не могу...
0
|
||
|
|
|||||||
| 12.12.2022, 11:32 | |||||||
|
осталась непрочитанной? добавим вычисляемое поле forma_oplaty_txt и в OnCalcFields я правда, так и не понял окончательно глубинный смысл ТЗ, так что творчески домысливал: если id_dsp=1 или id_dsp=41 то в новом поле значения XXXX или YYYY иначе там копия поля forma_oplati
Master-Detail тогда нужно в обработчик OnAfterScroll мастер-датасета положить код, который переоткрывает дочерний датасет с параметрами но так как этого в вопросе не было, и это чисто мое вангование по предмету, то это совсем другая тема, которую лучше разбирать в другом треде Добавлено через 7 минут на всякий случай, читать https://www.cyberforum.ru/blog... g5254.html
1
|
|||||||
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
||
| 12.12.2022, 11:53 | ||
|
Если задача в том, чтобы подменять значения некоего поля, сравнивая по условию со значением в соседнем поле, то это наверняка можно сделать банальным SELECT запросом. И код на Дельфи вообще становится не нужен.
1
|
||
|
1048 / 489 / 41
Регистрация: 05.05.2022
Сообщений: 3,439
|
|
| 12.12.2022, 14:09 | |
|
Вот я бы на этот Select посмотрел, ибо ничего, кроме Left Join таблицы с самой собой на ум не приходит, и я точно не напишу такой сразу. Ну так поэтому я бы и структуру БД другой делал, чтобы такие ужасы не писать, тем более что этих самых услуг там может оказаться даже не два десятка, так что даже выделение под каждую битового поля может стать не самой плохой идеей.
0
|
|
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
||
| 12.12.2022, 18:03 | ||
|
С селф-джойном не совсем понял, зачем он тут, но автор никакого внятного объяснения задачи не дал (ни структуры БД, ничего), по начальным вводным таблица у него одна, т.е. просто одного запроса с селектом достаточно в примитивном варианте.
0
|
||
|
1048 / 489 / 41
Регистрация: 05.05.2022
Сообщений: 3,439
|
||
| 12.12.2022, 18:45 | ||
|
0
|
||
|
|
|
| 13.12.2022, 00:29 | |
|
древовидные структуры почти всегда основываются на ссылках записей друг на друга в одной таблице.
заказы, производные от исходных заказов, например на комплектацию, на транспортировку и т.д. тоже часто лежат в одной таблице, поэтому в целом нельзя сказать, что зависимость одной записи от другой в одной и той же таблице - что-то необычное в Oracle и Postgres есть даже специальные синтаксисы, позволяющие делать рекурсивные запросы про self-join что-то я пропустил? у автора вроде нет такого в запросе? или о чем-то другом речь?
0
|
|
|
1048 / 489 / 41
Регистрация: 05.05.2022
Сообщений: 3,439
|
|
| 13.12.2022, 00:44 | |
|
Заказ имеет такую особенность, что он формируется разово и потом фиксируется. Т. е. если я хочу сделать сложное условие, что при покупке товаров на 50000 р. покупатель может приобрести еще 1 товар ценой до 2000, а к некоторым товарам можно купить 3 и получить 4-ый бесплатно, я его сделаю до записи в БД, куда потом пойдет итоговая цена. И от того, что через месяц условия и цены поменяются, запись о заказе не изменится. Автору же, похоже, надо для конкретных User_Id высчитывать условия, получая их из БД.
Мои знания по основам реляционных БД включают в себя первичные и внешние ключи для связи с др. таблицами, но таблица рассматривается, как набор взаимно независимых кортежей. Может быть в конкретных БД есть механизмы для обхода этого, но это уже конкретная тема. Если механизмов нет, или не знаешь, как обойти, то может стоит подумать о др. структуре.
0
|
|
|
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
|
|
| 13.12.2022, 20:11 [ТС] | |
|
Beltar, я сделал, вы немного помогли, но всеже доработал свой же код
Добавлено через 9 минут D1973, логика в том, что я не программист, а по образованию финансист, но так сложилась судьба, что 17 лет работаю с базой на PervasiveSQL, готовая программа, в которой ограниченные возможности, а у начальства требований хоть отбавляй. со временем я из возможных списков которые выгружала программа в TXT и с помощью Фокспро делал то что от меня требовали... и тут судьба свела меня с одним человеком который предложил попробовать писать на Delphi, показав мне некие примеры.... и с помощью форума я коечто для себя и не только сделал, _ да Криво, да Не ГРАМОТНО, но до этого мои коллеги просто работали в Excele и не пойму как делились этими файлами и плодили их столько, что никто потом понять не мог, что и к чему пототму не судите строго, когда я задаю вопрос и не всегда понимаю о чем вы пишете и осуждаете мой код (потому что он не мой) , я просто леплю конструктор ЛЕГО из того что ктото выкинул когдато сюда.. собираю по деталькам
0
|
|
|
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
|
|
| 13.12.2022, 20:26 [ТС] | |
|
krapotkin,
опишу, что же я пишу за основу взята база ACCESS. есть гос программа по обслуживанию пристарелых людей или людей без ОМЖ. они собирают комплект доков, и обращаються с заявлением... (вся процедура которую проводят спецы после, делаеться вручную) потому я решил чтото наваять, когда я только начинал, не думал что все нкастолько сложно, и столько всяких нюансов.... потому у меня и стоьлько вопросов к форумчанам краткое описание функций программы: 1 - заносят основные данные по человеку 2 - выбор категории (пенсионер, инвалид ...) 3 - выбор услуг за какими обращаеться заявитель 4 - указываеться перечень документов 5 - добавляеться члены семьи, если таковы есть 6 - заносяться доходы (и здесь вот интересная штука, запросы делаю я ручками из тех списков что они мне дают, конвертирую в xml, отправляю в соответствующие органы и ответы потоми печатаю ) - это мне еще предстоит сделать в программе, выгрузку из базы в xml определенного формата) 7 - расчет услуг (в зависимости от дохода 1 - безплатно, 2 - платно, 3 - смешанно) и здесь как раз этот нюанс по которому я обратился... есть 2 услуги (домашний уход за ... и транспортные услуги), так вот, - если они одновременно назначены, то транспортные не зависимо не от чего - безплатное, если по отдельности, то тогда в зависимости от дохода 8 - выгрузка решений в печатные формы в WORD, почему именно сюда? не знаю ВОТ ТАКАЯ ВОТ БЕДА ниже скриншот формы
0
|
|
|
|
|
| 14.12.2022, 12:57 | |
|
ну, как ни крути, но если вы даже чуть чуть собираетесь разрабатывать, вам нужно знать базовые вещи
например, шаблоны проектирования БД если прямо совсем кратко - 1)таблица - это список неких примерно или точно однородных (обладающих схожими свойствами) сущностей 2)каждая сущность соответственно - запись таблицы 3)у каждой записи каждой таблицы должно быть УНИКАЛЬНОЕ поле - КЛЮЧ, по которому ОДНОЗНАЧНО можно найти эту запись в зависимости от используемой БД обычно такое поле имеет тип счетчик, автоинкремент, serial, или GUID. если автоматический тип, то БД сама заполняет его, если например GUID, то нужно написать немного кода, чтобы генерировать его, если значение не задано. 4)если какое-то свойство сущности может принимать несколько значений из списка, то эти значения скорее всего есть отдельная сущность, и требует своей таблицы - обычно ее называют справочник 5) если в какой-то таблице есть значение из справочника, то вместо самого значения в поле хранят ключ записи из справочника, ведь по ключу можно вытянуть всю нужную запись. Т.е. одной записи подходит только одна строка справочника. 6) Но если у вас есть таблица документов и таблица людей, то у каждого человека может быть несколько документов, и один документ может быть у нескольких людей. В этом случае вам нужна таблица связей - в каждой записи - код человека и код документа. поэтому по коду человека можно найти все документы и взять их уже из документов, и наоборот. 7) прочтите краткое введение в SQL любого автора. Оно хоть и краткое, но не на пару абзацев. Теперь на примерах - Если у вас есть категории пенсионер, инвалид - то это справочник категорий (пенсионер, инвалид, боярин и т.д.) - Если у вас есть услуги - то (см. пункт 6) нужен справочник услуг и таблица люди-услуги где перечисляется каждая пара человек+услуга при вставке записи в эту таблицу мы назначаем услугу конкретному человеку, в момент назначения нужно проверять, сколько у него теперь услуг и какие, и соответственно заполнять запись в таблице начислений+оплат нужной суммой все это должно происходить на сервере БД, не на клиенте - Если у вас есть члены семьи, то они лежат в той же таблице но существует таблица связей, где обе ссылки - на одну и ту же таблицу люди. и совет - скорее переносите все на другую БД. Access - это база для одного человека. Вашей информацией должны располагать много людей просто по характеру информации. Это может быть Firebird, Postgres или тот же MS SQL server но не Access точно. Когда вы уже сделаете слишком много, переезд будет все сложнее.
1
|
|
|
1048 / 489 / 41
Регистрация: 05.05.2022
Сообщений: 3,439
|
||
| 14.12.2022, 17:02 | ||
Проблема с вычислениями на сервере БД в том, что какой-то сложный код там реализовать сложнее. В случае Access как-то и смысла говорить о сервере нет. Ну и если подумать, то дельфовый TDataSet - это имитация SQL, например, лукап-поля, - это замена Left Join, а сам по себе факт вычислений чего-то там перед записью в БД означает лишь то, что какие-то данные вы хотите пересчитать 1 раз сразу, а не каждый раз при загрузке. Типовой пример, моя первая софтина, которая пошла в эксплуатацию, для ведения паспортов средств измерения, там были дата поверки и период поверки, дату след. поверки можно посчитать при сохранении, можно каждый раз при загрузке, а можно сразу. Где будет этот расчет, в принципе, неважно, если угроза того, что кто-то будет править данные напрямую в БД несущественна. Но, в принципе, можно пойти до конца, сделать трехзвенную архитектуру и работать с хранимыми процедурами. И гордиться тем, что все правильно. А в остальном программирование мне очень сильно напоминает древний номер команды КВН из Татарстана: - Как будет по-татарски "вперед"? - Алга. - А как "назад"? - У нас понятия "назад", мы разворачиваемся и алга! Какие-то чувачки, у которых Delphi и TDataSet не было, или они не хотели о них знать, т. к. писали только на Ц-плас-плас, в Вижуал Студио, не имели ничего, кроме SQL в базе, и потому делали так, как могли. У них такое "алга". По-другому, неправильно. До момента, когда MS скажет, что правильно, тогда разворачиваемся и "алга".
0
|
||
|
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
|
|
| 14.12.2022, 20:36 [ТС] | |
|
0
|
|
|
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
|
|
| 14.12.2022, 20:38 [ТС] | |
|
только вот я из справочников не записываю в основную базу идентификаторы данных, а сами данные
0
|
|
| 14.12.2022, 20:38 | |
|
Фильтр запроса Query по данным из ListBox
Error answering callback query: [400] Bad Request: query is too old and response timeout expired or query ID is invalid
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|