Как увеличить числа в вычисляемом поле TQuery?
Я имею TQuery
С рассчитанным полем N
,
Как увеличить числа в примере (N
начинается с 5):
Я пробовал это, но ничего:
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
var i:integer;
begin
i := strtoint(edit2.Text);
Query1['N'] := inttostr(i+1);
end;
результат:
N
2
2
2
2
.
.
Примечание: База данных Foxpro, я использую BDE для подключения, это не обязательно должно быть вычисляемое поле, я хочу, чтобы значение Incremented использовало его в распечатке быстрого отчета, как отдельная ссылка на каждую страницу (не номер страницы).
2 ответа
Я нашел это решение с помощью @kobik
При печати TQRLabel я добавляю этот код и не требуется в вычисляемое поле или другую переменную:
procedure TForm1.QRLabel1Print(sender: TObject; var Value: string);
begin
value:=inttostr(Query1.RecNo+strtoint(edit2.Text)-1);
end;
- Тедит для определения начального номера во время выполнения.
Это простой способ, которым я проверяю это:
1 - объявить глобальную переменную для сохранения авто номера
2- Установите его в FormShow
до 5
3- В OnCalcFields
назначить глобальную переменную новому полю
4- инкрементная глобальная переменная
Примечания: Не используйте TEdit или что-либо еще для отображения результата поля вычисления, потому что оно просто покажет первый результат. но все результаты будут сохранены в таблице или запросе правильно.
коды
Глобальная переменная:
var
Form1: TForm1;
i : Integer;
Форма Шоу:
procedure TForm1.FormShow(Sender: TObject);
begin
i := 5;
end;
Calc подал:
procedure TForm1.adoqry1CalcFields(DataSet: TDataSet);
begin
adoqry1['n'] := i;
//OR adoqry1N.AsInteger := i;
//OR adoqry1.FieldByName('n').AsInteger := i;
i := i + 1;
end;
В конце я проверяю это с ADOQuery
,