|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Пишу оболочку программы
Здравствуйте, уважаемые программисты. Пишу оболочку программы. В принципе уже все готово, кроме одного. У меня есть 3 таблицы: Заказы, Остаток и Поступления. Мне нужно, чтобы таблица Остаток заполнялась Автоматически, то есть из таблицы Заказы количество товара вычиталось из остатка, а из таблицы Поступления количество прибавлялось к остатку. Таблица Остаток состоит из Артикула и Количества. И в таблице Остаток должен быть фильтр по Артикулу, то есть Артикул не должен повторяться. Использую ADOQuery, ADOConnection, DataSource и DBGrid. Таблица Заказы (ADOQuery1, DataSource1, DBGrid1), таблица Остаток (ADOQuery2, DataSource2, DBGrid2), таблица Поступления (ADOQuery3, DataSource3, DBGrid3). БД написана в Access. Попробовала для начала написать для таблицы Заказы-Остаток, вот что получилось:
Код:
procedure TForm1.ADOQuery2CalcFields(DataSet: TDataSet); var x,y:integer; begin ADOQuery2.Filter:='Артикул='+VarToStr(AdoQuery1['Артикул']); ADOQuery2.Filtered:=True; y:=0; while not ADOQuery2.Eof do begin x:=ADOQuery1['Количество']; y:=y-x; ADOQuery1.Next; end; ADOQuery2Количество.Value:=y; end; Выдает ошибку: Application Error Exception EOleException in module Project1.exe at 0026982C. BOF или EOF имеет значение True, либо текущая запись удалена. Для выполняемой операции требуется текущая запись. Нашла такой вариант на этом форуме, но видимо что-то не так поняла. Помогите, пожалуйста. Скрины оболочки вложены. Последний раз редактировалось Admin, 26.05.2015 в 19:53. |
#2
|
|||
|
|||
А зачем вообще физически эта таблица нужна?
Сделай вью и тогда все будет считаться автоматически. |