Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FastReport Barcode (https://www.delphipraxis.net/166757-fastreport-barcode.html)

t0mmy 28. Feb 2012 11:32

FastReport Barcode
 
Also ich habe einen FastReport mit einem Barcode dem ich eine Variable (varBarcode) zuweise.
In meinem Programm übergebe ich nun den Barcode A1181002:

Beim Ausführen erscheint folgender Fehler:

BarCode_varBarcode: BarCode_varBarcode: Fehler im Ausdruck 'A1181002': Undefinierter Bezeichner: 'A1181002'
BarCode_varBarcode: Fehler im Ausdruck 'A1181002': Undefinierter Bezeichner: 'A1181002'

mkinzler 28. Feb 2012 11:35

AW: FastReport Barcode
 
Und wie?

t0mmy 28. Feb 2012 12:07

AW: FastReport Barcode
 
Delphi-Quellcode:
frxReport_PrintLabel.Variables['varBarcode'] := Main.Edit_PrintBarcode.Text;

RWarnecke 28. Feb 2012 12:39

AW: FastReport Barcode
 
Hast Du die Komponente TfrxBarCodeObject mit auf der Form, wo Dein Fast-Report liegt ? Welchen Wert hat die Eigenschaft BarType von Deinem Object Barcode vom Report ?

t0mmy 28. Feb 2012 12:42

AW: FastReport Barcode
 
Jap hab ich.
Der BarType Wert ist bcCode39.

haentschman 28. Feb 2012 12:51

AW: FastReport Barcode
 
und wie weist du die Variable dem Barcode Objekt zu ?

t0mmy 28. Feb 2012 12:56

AW: FastReport Barcode
 
Also Beim Objektinspektor steht da unter Expression <varBarcode>

Ich hab die Variable aber über rechtsklick auf Barcode --> Bearbeiten --> unter Code den Button fx gedruckt und dann auf Variablen und Doppelklick auf varBarcode und dann OK und nochmal OK

haentschman 28. Feb 2012 13:03

AW: FastReport Barcode
 
versuche mal folgendes:
Delphi-Quellcode:
frxGlobalVariables['varBarcode'] := Main.Edit_PrintBarcode.Text;
statt
Delphi-Quellcode:
frxReport_PrintLabel.Variables['varBarcode'] := Main.Edit_PrintBarcode.Text;

Sir Rufo 28. Feb 2012 13:08

AW: FastReport Barcode
 
Zitat:

Zitat von t0mmy (Beitrag 1153368)
BarCode_varBarcode: Fehler im Ausdruck 'A1181002': Undefinierter Bezeichner: 'A1181002'

Noch deutlicher kann doch eine Fehlermeldung nicht sein ;)

Der übergebene String wird eben als Ausdruck interpretiert, soll heißen, dass FastReport den Inhalt nochmals durch einen Interpreter schickt und der kann diesen nicht verarbeiten, denn A1181002 ist ihm gänzlich unbekannt.

Versuch es mal mit
Delphi-Quellcode:
frxReport_PrintLabel.Variables['varBarcode'] := QuotedStr( Main.Edit_PrintBarcode.Text );
// oder
frxReport_PrintLabel.Variables['varBarcode'] := '"' + Main.Edit_PrintBarcode.Text + '"';

t0mmy 28. Feb 2012 13:18

AW: FastReport Barcode
 
@haentschman:
Delphi-Quellcode:
frxGlobalVariables['varBarcode'] := Main.Edit_PrintBarcode.Text;
das hab ich nicht und so eine Komponente finde ich auch nicht.


@Sir Rufo
Danke für deine Antwort aber deine Vorschläge geben mir auch so einen ähnlichen Fehler wieder aus.

RWarnecke 28. Feb 2012 13:21

AW: FastReport Barcode
 
Zitat:

Zitat von t0mmy (Beitrag 1153390)
Jap hab ich.
Der BarType Wert ist bcCode39.

Ich glaube dieser BarType akzeptiert nur Zahlen, wenn ich es richtig weiß.

Gollum 28. Feb 2012 13:26

AW: FastReport Barcode
 
Zitat:

Zitat von RWarnecke (Beitrag 1153401)
Ich glaube dieser BarType akzeptiert nur Zahlen, wenn ich es richtig weiß.

Das ist falsch. Der Barcodetyp kann Alphnumerische Zeichen darstellen.

t0mmy 28. Feb 2012 13:30

AW: FastReport Barcode
 
Jap da stimm ich dem oben zu.. also kanns am Barcodetyp nicht liegen, zudem hab ich einige andere auch ausprobiert und es kommt trotzdem der Fehler.

Gollum 28. Feb 2012 13:37

AW: FastReport Barcode
 
Hallo,

folgend ein Ausschnitt aus der Fastreport-Doku. Vielleicht hilfts:

Delphi-Quellcode:
Modifying the variable’s value

There are two ways to modify the value of a variable:

  frxReport1.Variables['My Variable 2'] := 10;

or

var
  Index: Integer;
  Variable: TfrxVariable;

{ search for the variable }
  Index := frxReport1.Variables.IndexOf('My Variable 2');
{ if it is found, change a value }
  if Index <> -1 then
  begin
    Variable := frxReport1.Variables.Items[Index];
    Variable.Value := 10;
  end;

It should be noted, that when accessing a report variable its value is calculated if it is of string type. That means the variable which value is 'Table1."Field1"' will return a value of a DB field, but not the 'Table1."Field1"' string. You should be careful when assigning a string-type values to report variables. For example, the next code will raise exception "unknown variable 'test'" when running a report:
 

frxReport1.Variables['My Variable'] := 'test';
 

because FastReport trying to calculate a value of such variable. The right way to pass a string values is:
 

frxReport1.Variables['My Variable'] := '''' + 'test' + '''';

In this case the variable value - string 'test' will be shown without errors. But keep in mind that:

- string should not contain single quotes. All single quotes must be doubled;

- string should not contain #13#10 symbols.

 
In some cases it is easier to pass variables using a script.

haentschman 28. Feb 2012 14:07

AW: FastReport Barcode
 
Zitat:

@haentschman:
frxGlobalVariables['varBarcode'] := Main.Edit_PrintBarcode.Text; das hab ich nicht und so eine Komponente finde ich auch nicht.
... das ist keine Komponente. Tausche doch einfach mal deinen Quelltext aus und guck was passiert. (Unit frxClass sollte eingebunden sein)

Zitat:

Der übergebene String wird eben als Ausdruck interpretiert, soll heißen, dass FastReport den Inhalt nochmals durch einen Interpreter schickt und der kann diesen nicht verarbeiten
...ich habe das hier mit einer frxGlobalVariable probiert in der ein stinknormaler String drin steht. (Ungequoted) Im Ausdruck steht <VariableBlubb>... und wird dargestellt.

t0mmy 28. Feb 2012 14:56

AW: FastReport Barcode
 
Habs probiert aber er schreibt mir trotzdem Fehlerhafter Ausdruck...
hmm bei reinen Ziffern gehts nur wenn ich einen Buchstaben drinnen habe nicht. :(

RWarnecke 28. Feb 2012 16:51

AW: FastReport Barcode
 
Ganz Dumm gefragt, hast Du Deine verwendete Variable varBarCode nur so in die Barcode-Komponente reingeschrieben oder im Report richtig deklariert und in der Barcode-Komponente ausgewählt. Hänge doch mal Deinen Fast-Report dran, wenn es nichts geheimes ist.

haentschman 28. Feb 2012 18:18

AW: FastReport Barcode
 
:zwinker: Beitrag #7
Zitat:

Also Beim Objektinspektor steht da unter Expression <varBarcode>

Ich hab die Variable aber über rechtsklick auf Barcode --> Bearbeiten --> unter Code den Button fx gedruckt und dann auf Variablen und Doppelklick auf varBarcode und dann OK und nochmal OK
...damit sollte die Variable im Report bekannt sein. Merkwürdig ist die Tatsache daß es mit Zahlen funktioniert, alphanumerisch nicht :gruebel:

t0mmy 29. Feb 2012 07:16

AW: FastReport Barcode
 
So hab das Problem gelöst, ich hab nicht so genau geschaut, da mein Report einiges an inhalt gehabt hat und ich den Barcode den ich übermittelt habe auch in ein Memofeld geschrieben habe und dort ist der Fehler dann auch erschienen.
Aber jetzt habe ich alle übergebenen Variablen mit ''''+Variable+'''' umprogrammiert.

Danke für eure Hilfe.

Sir Rufo 29. Feb 2012 08:54

AW: FastReport Barcode
 
Zitat:

Zitat von t0mmy (Beitrag 1153579)
Aber jetzt habe ich alle übergebenen Variablen mit ''''+Variable+'''' umprogrammiert.

Und wo ist da der Unterschied zu Delphi-Referenz durchsuchenQuotedStr?
Ok, es gibt einen, denn unter bestimmten Umständen bekommst du mit deiner Variante wieder einen Fehler.

Deine Variante:
Code:
Test's => 'Test's'
Mit QuotedStr
Code:
Test's => 'Test''s'


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz