2017-11-13 11 views
1

私にはTQuery計算されたフィールドNがあります。例の中の数字をインクリメントする方法
N 5で始まる):TQueryの計算フィールドの数値をインクリメントする方法は?

enter image description here

私はこれを試してみましたが、何も:

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を使用する、それは計算されたフィールドである必要はありません、私は(ページ番号ではなく)各ページの単一の参照のようなクイックレポートの印刷でそれを使用するための拡張された値。

+0

何もありません。何もない?エラーも、価値も、何もない?もしそうなら、このコードがまったく呼び出されているかどうか確認できますか?あなたが何かを得たが、あなたが期待したものではないなら、あなたが得たものをかなり説明できますか? – GolezTrol

+0

計算フィールド?計算された方法? – Dsm

+2

"Nothing"と言うと、あなたの 'N'値はすべてのレコードで同じであると思われますか?ところで、どのデータベース?どのプロバイダですか?それは計算フィールドでなければならないのですか? – kobik

答えて

0

これは私はそれをテストする簡単な方法である:グローバル割り当てるOnCalcFieldsにおいて3-

5に FormShowオート番号

2-セットを保存するためのグローバル変数を宣言

1-新しいフィールドに変数

、4-インクリメントグローバル変数

注:TEDITまたは任意のTHIを使用しないでください計算フィールドの結果を表示するには、最初の結果が表示されます。すべての結果はテーブルまたはクエリで正しく保存されます。

コード

グローバル変数:

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でそれをテストします。

+1

これはデータセットをスクロールするときは機能しません。同様の回答を投稿しましたが、テストした後に削除しました。 – kobik

+0

それは私のために働いていますが、このメソッドは簡潔ではありません.CartFields: 'Query1.RecNo + strtoint(edit2.Text)-1'を入力するだけで、開始番号 –

+0

を飾るためのteditとTQRLabel私はこのコードを追加し、計算されたフィールドには必要ありません: 'procedure TForm1.QRLabel1Print(送信者:TObject; var値:文字列); begin 値:= inttostr(Query1.RecNo + strtoint(edit2.Text)-1); end; '、実行時に開始番号をコスチュームにするように調整します。 –

1

私はこのコードを追加、ノー計算フィールドまたはその他のVaribleするために必要なTQRLabelの印字で@kobik

の助けを借りて、この解決策を見つけた:

procedure TForm1.QRLabel1Print(sender: TObject; var Value: string); 
begin 
value:=inttostr(Query1.RecNo+strtoint(edit2.Text)-1); 
end; 
  • 実行時にスタート番号を衣装にTeditします。
関連する問題