|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
|
Связанные таблицы, присвоение значений30.07.2019, 09:22. Показов 2722. Ответов 39
Метки нет (Все метки)
Здравствуйте! Из за нехватки опыта, сильно парюсь со следующей проблемой! Может кто нибудь на пальцах объяснить?
Не могу присвоить значения ключей. Есть 3 таблицы. Ttypedoc(id, namedoc), tdoc(id,idtypedoc, data, numdoc), tsklad(id, iddoc, idkompl, quantity, price) Таблицы связаны ttypedoc.id - tdoc.idtypedoc, tdoc.id - tsklad.iddoc Вот как при создании документа сделать так чтобы tdoc.idtypedoc принимал значение нужного id таблицы ttype, и tsklad.iddoc id этого документа
0
|
|
| 30.07.2019, 09:22 | |
|
Ответы с готовыми решениями:
39
Связанные таблицы Связанные таблицы
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 30.07.2019, 09:33 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
|
| 30.07.2019, 09:35 [ТС] | |
|
Бд postgresql, в базе связаны ключами. А как в Делфи это сделать?!
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
|
| 30.07.2019, 09:38 [ТС] | |
|
Чтобы он записывал эти значения !?
Например создаю документ приход: И при этом чтобы в таблицу tdoc.idtypedoc запивалась 1 - Id значения приход таблицы ttypedoc
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|||||||
| 30.07.2019, 09:57 | |||||||
|
Остальные способы зависят от СУБД. Например, в Oracle часто используется способ формирования в триггере с выборкой очередного значения из последовательности. Для получения этого значения в клиентской программе существует инструкция
Что для этого существует в PostgreSQL - лучше спросить на соответствующем форуме.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||
| 30.07.2019, 11:09 [ТС] | ||
|
0
|
||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 30.07.2019, 11:28 | |
|
PK - primary key (главный ключ). Уникальный идентификатор записи в таблице, может быть только один для таблицы. В качестве такого идентификатора может использоваться одно поле или группа полей. Очень хорошо для создания PK подходит поле - счетчик, т.к. всегда создает уникальный для таблицы номер 1,2,3...1000000, но вполне допустима последовательность значений для PK - 1,150,76,10000. Абсолютно не важен разрыв между числами и порядок этих номеров - системе так удобнее работать
Поэтому такое поле считается системным и обычный смертный его видеть вообще не должен.
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
|
| 30.07.2019, 11:30 [ТС] | |
|
А! Это вручную задавал!
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|
| 30.07.2019, 12:32 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||||||
| 30.07.2019, 13:12 [ТС] | ||||||
0
|
||||||
|
|
||||||
| 30.07.2019, 14:51 | ||||||
|
мы сейчас о вставке говорим???
я уже не в первый раз удивляюсь нежеланию читать доки даже на русском https://postgrespro.ru/docs/po... -returning если главная таблица имеет автоинкрементный ID а подчиненная ссылается на нее полем MASTER_ID
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
|
| 30.07.2019, 15:32 [ТС] | |
|
Спасибо, что поясняете! Буду пробовать! А читал я много, не ленюсь! До того, что каша в голове! Попробую, отпишусь потом
0
|
|
|
|
|
| 30.07.2019, 16:37 | |
|
что там придумывать
вам надо, чтобы в одной таблице был код из другой таблицы отсюда алгоритм надо сначала получить этот код в главной таблице, потом его использовать при вставке в подчиненную и помнить, что кроме автоинкремента, никаких других авто там нет) все программировать
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||
| 30.07.2019, 19:06 [ТС] | ||
|
Да я понимаю что все программировать, много примеров смотрел. Пока получается dblookupcombobox привязать. Он чётко вставляет значения. Dbedit. И обновляю таблицу. Получилось странным образом связать документы, но мне не нравится. Пробую ещё
Добавлено через 2 часа 8 минут посмотрел пример, хорошо.... По факту у меня таблица ttypeDoc, в ней 2 значения, Приход и Реализация. И больше туда ничего не вставляю. есть таблица tdoc, в ней поле id, idtypeDoc, datadoc, numDoc. Мне надо при нажатии на кнопку, при которой откроется форма - если это приход, то idtypeDoc = 1, если реализация, то idtypeDoc = 2, и они свяжутся. Я все читал что Вы скинули и про returning и т.п. Но я в таблицу typeDoc ничего не вставляю. Если по тупому взять значение id и при отображении формы присвоить это значение idtypedoc? Так делают вообще? Просто я смотрел что ставят элементы dbedit и через них связывают - на форме они не отображаются.... но это мне кажется странный вариант Добавлено через 51 секунду Я по этому и интересуюсь тут! Хочется мнение людей которые практически кодят, а то у меня заборы какие то....
0
|
||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||||||
| 30.07.2019, 21:19 [ТС] | ||||||
|
вообщем пока только так получилось....
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||||||
| 30.07.2019, 22:07 [ТС] | ||||||
|
В целом схема выглядит так:
у меня тупик с таблицами в нижней части. По моей логике: есть форма документы: на ней dbgrid с таблицей документов, приходы, реализация. так же 2 кнопки 1) Добавить приход и 2) Реализация По моей задумке, при нажатии на Приход открывается форма(уже этой записи присвоено значение из ttypedoc) на ней дата, номер документа (по идее должен быть id этой записи) и DBgrid со связанными таблицами tdoc и tsklad
Но как это реализовать в коде я уже 3 день выдумываю.... Вроде не сложно выглядит, но и не получается.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||||||
| 30.07.2019, 22:07 [ТС] | ||||||
|
В целом схема выглядит так:
у меня тупик с таблицами в нижней части. По моей логике: есть форма документы: на ней dbgrid с таблицей документов, приходы, реализация. так же 2 кнопки 1) Добавить приход и 2) Реализация По моей задумке, при нажатии на Приход открывается форма(уже этой записи присвоено значение из ttypedoc) на ней дата, номер документа (по идее должен быть id этой записи) и DBgrid со связанными таблицами tdoc и tsklad
Но как это реализовать в коде я уже 3 день выдумываю.... Вроде не сложно выглядит, но и не получается.
0
|
||||||
|
|
||||||
| 31.07.2019, 10:04 | ||||||
|
1. по поводу #16
эти проверки уж точно должны проверять не компоненты на экране а значения нужных вам полей поэтому лучше это делать в событии датасета например OnBeforePost 2. там же. строка else не нужна. она просто путает, потому что по смыслу должно стоять else begin ..... end; 3. зачем вообще вам ttypedoc если приход количество >0 расход <0 ?? учитывая, что вы работаете с датасетами, что является не самой удобной и устарешей концепцией, но... вам придется открыть форму, ввести количество, и после закрытия формы, умножить это количество на -1 если это расход. подробнее тут 4. уже не первый раз пишу, что никакую сумму никуда писать не надо. сумма это количество*цена 5. таблица склад тоже не нужна. если у вас несколько складов, то либо добавьте поле в таблицу движение товаров, либо сделайте привязанную таблицу движению товаров, 1-1, которая будет хранить, на какой склад перемещен товар. 6. про комплектующие и остальное - непонятно ТЗ. если у вас есть "производство", т.е. ваш товар не пришел от поставщика, а вы его сами сделали из комплектующих, то логично иметь таблицу "строки счета", которая пойдет в строки выставляемого счета, и таблицу комплектования, которая будет подчиненной к строкам счета. тогда логично сделать форму, где в верхней части будет список строк счета, а в нижней список комплектации для каждой строки счета. обе части редактируются. Тут хитрость будет в обработчике OnNewRecord у каждого датасета в нем будет подставляться значение поля для связи с мастер таблицей прямо из мастера. типа такого
в целом, ваш вопрос несколько более объемный, чем можно описать в одном посте. тут нужно целую статью писать(( надеюсь, про комплектацию я понятно описал?
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
|
||
| 31.07.2019, 12:24 [ТС] | ||
|
На чем писали бы Вы подобную задачу? ttypeDoc - это для названия документа. по ТЗ ситуация следующая - мы берем комплектующие, есть производство, на одну готовую продукцию есть только одна комплектующая, которых пять видов. Мне как то надо сделать так(это последний этап), что Реализация я выбираю готовую продукцию из справочника, которая привязана к своим комплектующим, указываю количество готовой продукции и это значение вычитается из каждой комплектующей - это и будет расход. Самое главное контролировать кол-во пришло, и кол-во сколько затратили. Поле сумма нужно, так как я ценой будет среднее значение ..... хотя Ваша правда есть!
0
|
||
| 31.07.2019, 12:24 | |
|
Помогаю со студенческими работами здесь
20
Вставка в связанные таблицы QReport связанные таблицы ADOQery + связанные таблицы В Excel - связанные таблицы Добавление в связанные таблицы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|