Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с двумя таблицами выручайте


V.I.P ©   (2006-11-07 11:10:00) 

Есть таблица BDE с запчастями, такая:
ID | name | kol-vo | price

и с запчастями на заявку
ID | ID_3a9Bku | ID_3an4aCTu | kol-vo

все это через DBGrid и управление DBnavigator

Задача, чтобы при добавлении строки в последнюю таблицу, 3 штуки скажем, делалась проверка на наличие 3 шт на складе (верхняя таблица), и если они есть, то вычиталось со склада. И обратное, при удалении/изменении значения кол-во прибавлялось/удалялось.

ВЫРУЧАЙТЕ


ЮЮ   (2006-11-08 04:03:00) [1]


> ЮЮ поможешь?

Разница в часовых поясах слишком большая :)

В BeforeInsert не советовал бы. Пользователь может отказаться от сохранения в гриде заказа, да и пуста ещё запись заказа в этом обработчике.

В [10] я вроде все написал.
Единственно, в BeforePost можно проверить

> select kol-vo from table1 where ID=id => чем что?

>= DataSet.FieldByName['kolvo'].AsXXX
А в AfterPost ещё раз проверить, что >= 0. Иначе - конкуренция. Откатить изменения в таблице и DataSet-e

P.s. kol-vo я бы интерпретировал как разницу значений полей kol и vo. При именовании полей следует придерживаться тех же правил, что и для идентификаторов


V.I.P   (2006-11-07 22:11:00) [2]

такой вопрос, если писать BeforeInsert
то как должен выглядеть запрос?
select kol-vo from table1 where ID=id => чем что? (надо чтобы было больше/равно чем вводимое число в grid


V.I.P   (2006-11-07 13:55:00) [3]

ЮЮ поможешь?


V.I.P   (2006-11-07 12:30:00) [4]

ЮЮ

да ничего не мешает, я принцип не знаю...как программе указать. если изменили значение, то проверить склад и разрешить измнение, и при удалении вернуть запчасти на склад, а при добавлении строки, проверить склад, и добавить нужное


ЮЮ   (2006-11-07 12:20:00) [5]

Ну и что мешает тебе использовать язык SQL ну типа insert\updateсейчас?
в AfterScroll DataSet-а заявок запоминаешь ключ и значение
В AfterPost для вставленных и измененных и
в AfterDelete для удаленных выполняешь
 UDATE ... SET kolvo = kolvo + :Delta WHERE ...


V.I.P   (2006-11-07 12:08:00) [6]


> ЮЮ ©   (07.11.06 12:03) [8]
> Так как в этой субд нет триггеров, то подобная задача не
> решаема, т.к.
> 1) достут возможен не только из твоей программы
> 2) транзакций в БДЕ практически нет.
>
> Поэтому kol-vo в таблице с запчастями лучше не трогать.
> Обять же как ты намерян пополнять его?


через query и язык SQL ну типа insert\update


ЮЮ   (2006-11-07 12:03:00) [7]

Так как в этой субд нет триггеров, то подобная задача не решаема, т.к.
1) достут возможен не только из твоей программы
2) транзакций в БДЕ практически нет.

Поэтому kol-vo в таблице с запчастями лучше не трогать.
Обять же как ты намерян пополнять его?


Anatoly Podgoretsky   (2006-11-07 11:54:00) [8]


> ты лучше подскажи как обработчик напсать..

Нафиг здесь обработчик, тут запрос с Count нужен и возможно с Having


Anatoly Podgoretsky   (2006-11-07 11:54:00) [9]


> БД - BDE, paradox

Тогда тебе в LocalSQL


V.I.P   (2006-11-07 11:40:00) [10]

Percent
я себе даж не представляю как это сделать, чтобы предложить свое. Не хочешь помочь, как хочешь. Дело твое.

БД - BDE, paradox


Percent   (2006-11-07 11:37:00) [11]

ты лучше подскажи как обработчик напсать..

Ага... "ты не умничай, ты пальцем тыкни!" (С) Анекдот?
:-)

Ты так и не ответил, что у тебя за БД.
И, насколько я понял, ты даже и не брался писать сам.
Напиши код, как считаешь нужным.
Попробуй откомпилировать и выполнить.
Будут конкретные проблемы - тогда и спрашивай.
А запросы типа "дайте готовый код под мою задачу" - не проходят... понимаешь?


V.I.P   (2006-11-07 11:32:00) [12]

Sergey13

> Все, разумеется, крутится на Оракле?
> <Цитата>

Нет..

Percent

ты лучше подскажи как обработчик напсать..


Sergey13   (2006-11-07 11:22:00) [13]

> [0] V.I.P ©   (07.11.06 11:10)

Все, разумеется, крутится на Оракле?


Percent   (2006-11-07 11:13:00) [14]

Есть таблица BDE с запчастями

Смеялсо... :-)

Задача, чтобы при добавлении строки в последнюю таблицу, 3 штуки скажем, делалась проверка на наличие 3 шт на складе (верхняя таблица), и если они есть, то вычиталось со склада. И обратное, при удалении/изменении значения кол-во прибавлялось/удалялось.

Прибавление - "+"
Вычитание - "-".


Наверх

Титульная страница Поиск, карта сайта Написать письмо