verty писал(а):Я сделал так:
1) таблица рейсов:
1 рейс
2 откуда
3 куда
4 тип самолета
5 кол-во мест всего
2) таблица вылетов
1 рейс
2 дата вылета
3 время отправления
4 время прибытия
5 продано билетов
6 свободно билетов
И такие вот возникли вопросы:
Создал эти две таблицы, но почемуто в таблиу вылетов не возможно добавлять новые записи или редактировать?
Я думаю проданных билетов и свободных будут вычисляемыми полями , зависящими от общего кол-ва мест , а как это реализовать в коде?
Заранее благодарю .
Во первых для начало сделай правильные связи между таблицами.
Допустим у тебя: кол-во мест всего = 30
Тогда начальное значение "свободно билетов" = 30 (которое при каждом проданном билете будет уменьшаться на "1").
Продано билетов: = следовательно увеличиваться на "1".
Вы опять не написали какие компоненты используете для работы с БД.
Все данные беруться из БД.
В итоге получаем:
Код: Выделить всё
a:integer; // кол-во мест всего (начальное значение 30)
b:integer; // продано билетов (начальное значение 0)
c:integer; // свободно билетов (начальное значение 30) // т.е. у тебя всегда будет "a:=b+c;"
begin
//В зависимости от типа самолета.
//button.click (для примера)
c:=query.FieldByName('свободно билетов').AsInteger; //В зависимости от того как называется у тебя поле.
b:=query.FieldByName('продано билетов').AsInteger;
c:=c-1; // (свободно билетов:=29)
b:=b+1; // (продано билетов:=1)
//Затем загоняешь обратно в базу.
query.FieldByName('свободно билетов').AsString:=inttostr(c);
query.FieldByName('продано билетов').AsString:=inttostr(b);
query.open;
query.refresh;