![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильное сохранение при Мастер- Детаил [D7, FireBird]
Xmen © (2009-03-26 07:16:00)Привет мастерам.
Делаю программу для склада. Сделал таблицы для прихода товара. Установил связь мастер - детаил. Вопрос в том что если создать форму и поместит в нем 2 грида, один мастер другой детаил то при вводе мастер все нормально но в детаил таблицу ввод не получается изза того что не сохранен данные в мастер таблице. Как можно сохранит сразу и мастер и детаил без commit таблицы мастера?
Сергей М. (2009-03-27 13:22:00) [21]
> Xmen (27.03.09 12:34) [52]
Смысл каждой записи в "книге движения" - тогда-то там-то на основании такого-то документа осуществлена такая-то операция над такой-то номенклатурно-учетной единицей в таком-то количестве для такой-то единицы измерения по такой-то учетной стоимости на такую-то сумму.
Sergey13 (2009-03-27 13:11:00) [22]> [52] Xmen (27.03.09 12:34)
> Правильно ли я создал?
Если таблицы создались - значит синтаксически правильно. Единственно не указаны внешние ключи, что важно.
Если по смыслу, то много недоработок.
> Таблица движение товаров.
Это товары в документе на движение, а не то что ты написал. Это принципиальная разница.
> N_DOG INTEGER,
> SUMMMA_DOC NUMERIC(15,2),
> PRINIAL VARCHAR(50),
> SDAL VARCHAR(50),
> ORG VARCHAR(100),
> TYPE_DOC INTEGER
Это что и зачем?
> ID_OPER INTEGER
Это относится к документу, а не к товару.
> DATE_OPER DATE
Это вообще зачем? Это маленький справочник, никаких дат там не нужно.
Ну и про то что я писал тебе в письме. Что и как учитывать будешь, определился? Без этого проектировать структуру бесполезно.
Игорь Шевченко (2009-03-27 13:11:00) [23]
> Правильно ли я создал?
Нет
Xmen (2009-03-27 12:34:00) [24]почитав ваши ответы изменил структуру таблиц.
Таблица движение товаров.
CREATE TABLE TOVAR (
ID INTEGER NOT NULL,
ID_DOC INTEGER,
NAME VARCHAR(100),
ED_IZ INTEGER,
SENA NUMERIC(15,2),
KOL INTEGER,
ID_OPER INTEGER
);
ALTER TABLE TOVAR ADD CONSTRAINT PK_TOVAR PRIMARY KEY (ID);
Таблица документов(приход/расход)
CREATE TABLE DOCUMENT (
ID INTEGER NOT NULL,
N_DOC INTEGER,
N_DOG INTEGER,
DATE_DOC DATE,
SUMMMA_DOC NUMERIC(15,2),
PRINIAL VARCHAR(50),
SDAL VARCHAR(50),
ORG VARCHAR(100),
TYPE_DOC INTEGER
);
ALTER TABLE DOCUMENT ADD CONSTRAINT PK_DOCUMENT PRIMARY KEY (ID);
Операции по товарам
CREATE TABLE OPERATION (
ID INTEGER NOT NULL,
ID_TOVAR INTEGER,
TYPE_OPER INTEGER,
DATE_OPER DATE
);
ALTER TABLE OPERATION ADD CONSTRAINT PK_OPERATION PRIMARY KEY (ID);
Правильно ли я создал?
Сергей М. (2009-03-27 09:14:00) [25]
> Скупой платит дважды
А бездумно щедрый четырежды)
Anatoly Podgoretsky (2009-03-27 09:08:00) [26]Не нужно, особенно с такими знаниями.
Xmen (2009-03-27 06:46:00) [27]А что тепер и написать программу ненужно?
Игорь Шевченко (2009-03-27 02:31:00) [28]Потянуло 90-ми годами, когда каждый писал свои склад, бухгалтерию и отдел кадров, преимущественно на клиппере. Я думал, за 15 лет весь этот глючный зоопарк благополучно вымер вместе с носителями идей, ан нет, кому-то лавры старины покоя не дают, когда кажется, что написать свое много дешевле, чем купить готовое.
MsGuns (2009-03-26 22:22:00) [29]>Сергей М. © (26.03.09 17:43) [46]
>Но уж больно дорог этот "топор" оказывается в приобретении, саппорте и >эксплуатации.
Скупой платит дважды (с)
Сергей М. (2009-03-26 17:43:00) [30]
> MsGuns © (26.03.09 16:51) [45]
А, ну вот теперь понятно, с какой стороны "топор" рассматривается)
В целом согласен.
Но уж больно дорог этот "топор" оказывается в приобретении, саппорте и эксплуатации.
MsGuns (2009-03-26 16:51:00) [31]>Сергей М. © (26.03.09 16:02) [43]
>Что-то тебя не понять)
>То на "топорность" одноэсины сетуешь, то агитируешь народ за одноэсину как "лучшее решение")
Что поделаешь - 1с так заполонила наш мир, что приходится искать к ней подходы.
А заполонила потому еще, что над нею очень немало потрудились НЕпрограммисты (бухгалтеры, экономисты, товароведы и проч). Ей очень трудно отказать в том, что предметная область представлена очень даже полно и понятно, а схема документооборота максимально приближена к реальной. Поэтому бухгалтеры так ее полюбляют :)
Anatoly Podgoretsky (2009-03-26 16:48:00) [32]> Сергей М. (26.03.2009 16:02:43) [43]
Чего странного то, ведь по знаниям, кому то умные программы, кому то тупые.
Сергей М. (2009-03-26 16:02:00) [33]
> MsGuns © (26.03.09 15:48) [40]
Что-то тебя не понять)
То на "топорность" одноэсины сетуешь, то агитируешь народ за одноэсину как "лучшее решение")
Sergey13 (2009-03-26 15:58:00) [34]> [40] MsGuns © (26.03.09 15:48)
Да ладно тебе. 8-)
Мы все учились понемногу
Чему-нибудь и как-нибудь.
(с) Пушкин
ЗЫ: только наверное надо в соответствующий раздел переносить топик
Виталий Панасенко (2009-03-26 15:57:00) [35]Я так и не понял, почему тебе так мучительно первоначально записать мастер запись? Получишь ИД и используй его уже в детали...
MsGuns (2009-03-26 15:48:00) [36]>Xmen (26.03.09 13:59) [29]
С ума застрелиться !
Товарысч не только писать, но и читать не умеет.
[19] вообще, а абзац про 1с в частности для кого писан был ?
Опять-таки прежде чем садиться писать всякие "мастер-деталы" неплохо бы поиметь какое-никакое представление о ПРЕДМЕТНОЙ ОБЛАСТИ ибо судя по ветке у автор в торговле не ухом, не рылом. Неплохо также подчитать что-нибудь по проектированию БД вообще, например про нормализацию (это к вопросу про "наименования" и т.д.)
Короче, лучшее решение - это 1С. Иначе это будет что-то страшное, а не прогроамма.
Ну а если нужно "поскорее" или "для папы", то эксель в зубы и вперед с песней
Виталий Панасенко (2009-03-26 15:39:00) [37]при CashedUpdates=True НИКАКИЕ ДАННЫЕ НЕ ПИШУТСЯ В БД ДО ВЫЗОВА ApplyUpdates соответствующего НД... сделай в OnNewrecord мастер НД получение ИД (отдельным реальным запросом, который "дергает" генератор (select gen_id(gen_name, 1) from rdb$database)
begin
GenQry.Open;
Master.FieldByName('ID').AsInteger := GetQry,FieldByName('GEN_ID_NAME').AsInteger;
end;
типа такого
Виталий Панасенко (2009-03-26 15:33:00) [38]
> Xmen (26.03.09 15:19) [35]
>
>
> > Виталий Панасенко (26.03.09 14:54) [33]
>
> Но для этого нужно сохранить мастер таблицу
Я такого не говорил.
Виталий Панасенко (2009-03-26 15:32:00) [39]
> Xmen (26.03.09 15:23) [36]
>
>
См.
> Виталий Панасенко (26.03.09 09:40) [17]
Xmen (2009-03-26 15:23:00) [40]
> Sergey13 © (26.03.09 14:58) [34]
> > [30] Xmen (26.03.09 14:05)> Вед id генерируется после
> сохранения поля в мастере.ИД не генерируется. Генерируется
> значение генератора (тафтология однако 8-) которое прописывается
> в ИД. Когда генерируется - тебе решать.
А как можно это сделать