2017-11-13 1 views
1

Ich habe TQuery mit berechnetem Feld N.
Wie Zahlen im Beispiel zu erhöhen (N beginnt mit 5):Wie erhöht man Zahlen im berechneten Feld von TQuery?

enter image description here

Ich versuchte dies aber nichts:

procedure TForm1.Query1CalcFields(DataSet: TDataSet); 
var i:integer; 
begin 
    i := strtoint(edit2.Text); 
    Query1['N'] := inttostr(i+1); 
end; 

Ergebnis:

N 
2 
2 
2 
2 
. 
. 

Hinweis: Foxpro Datenbank, ich benutze BDE, um mit zu verbinden, es muss kein berechnetes Feld sein, ich will das In created value, um es im Ausdruck von Quickreports zu verwenden, wie eine einzelne Referenz für jede Seite (nicht Seitennummer).

+0

Nichts? Gar nichts? Kein Fehler, kein Wert, nichts? Wenn ja, können Sie überprüfen, ob dieser Code überhaupt aufgerufen wird? Wenn du etwas bekommen hast, aber nicht das, was du erwartet hast, kannst du bitte erklären, was du hast? – GolezTrol

+0

Berechnetes Feld? Berechnet wie? – Dsm

+2

Wenn Sie "Nichts" sagen, vermute ich, dass Ihre "N" -Werte für alle Datensätze gleich sind? BTW, welche Datenbank? welcher Anbieter? Muss es ein berechnetes Feld sein? – kobik

Antwort

0

Dies ist eine einfache Art und Weise, dass ich es testen:

1- eine globale Variable deklariert für das Speichern von Auto-Nummer

2- Set es in FormShow-5

3- In OnCalcFields zuweisen global Variable auf das neue Feld

4- Zuwachs globale Variable

Hinweise: verwenden Sie TEdit nicht oder jede thi ng, um das Ergebnis des Berechnungsfeldes anzuzeigen, weil es nur das erste Ergebnis anzeigt. aber das ganze Ergebnis wird in der Tabelle oder Abfrage korrekt gespeichert.

Codes

Globale Variable:

var 
    Form1: TForm1; 
    i : Integer; 

Formular anzeigen:

procedure TForm1.FormShow(Sender: TObject); 
begin 
    i := 5; 
end; 

Calc Filed:

procedure TForm1.adoqry1CalcFields(DataSet: TDataSet); 
begin 
    adoqry1['n'] := i; 
    //OR adoqry1N.AsInteger := i; 
    //OR adoqry1.FieldByName('n').AsInteger := i; 

    i := i + 1; 
end; 

Am Ende teste ich es mit ADOQuery.

+1

Dies funktioniert nicht beim Scrollen des Datensatzes. Ich habe eine ähnliche Antwort gepostet, aber gelöscht, nachdem ich es getestet habe. – kobik

+0

es funktioniert für mich, Aber diese Methode ist nicht prägnant, setzen Sie einfach diesen Code, wenn CalcFields: 'Query1.RecNo + strtoint (edit2.Text) -1', die Tedit zu Kostüm die Startnummer –

+0

und für prägnanter in Druck TQRLabel Ich füge diesen Code und no benötigt, um das berechnete Feld: 'Prozedur TForm1.QRLabel1Print (Absender: TObject; var Wert: Zeichenfolge); Beginne Wert: = inttostr (Query1.RecNo + strtoint (edit2.Text) -1); ende; ',, die tedit, um die Startnummer in Laufzeit zu kostümieren. –

1

fand ich diese Lösung mit Hilfe von @kobik

für Druck von TQRLabel ich diesen Code hinzufügen und Nein zu den Berechnete benötigt Feld Or Other Varible:

procedure TForm1.QRLabel1Print(sender: TObject; var Value: string); 
begin 
value:=inttostr(Query1.RecNo+strtoint(edit2.Text)-1); 
end; 
  • Das Tedit To Kostüm Die Startnummer zur Laufzeit.
Verwandte Themen