Как увеличить числа в вычисляемом поле 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,

Другие вопросы по тегам