Ungültige Variant-Typumwandlung

Alles über Formulare, deren Erstellung und deren eventueller Austausch

Moderator: SYNERPY

Antworten
Christian E
Beiträge: 28
Registriert: Mi Mär 01, 2006 8:26 am

Ungültige Variant-Typumwandlung

Beitrag von Christian E »

Hallo!

Ich habe ein kleines Problem mit dem Druckformular für Lieferscheine. Im Band für 'AuftragsNr und Bestellnummer' ist dort eine Funktion hinterlegt, die anhand einer Kundenbestellnummer und einer Kunden-Kommissions-Nr auswählt, ob das Band für die Auftragsdaten angezeigt wird oder nicht.

Bsp:

Code: Alles auswählen

begin
   
AuftrNrAkt := [q_rep4."BAUF_KUAUFNR"]+[q_rep4."BAUFPO_KUNDEN_KOM1];

   if AuftrNrAkt <> [AuftrNr] then begin
        bdDD.visible := True;
        AuftrNr := AuftrNrAkt;
   end
   else bdDD.visible := False; 
end
Das funktioniert auch soweit, wie in einem der beiden Feldern ausschließlich numerische Werte stehen (z.B. 123 und 456). Sobald man jedoch auch andere Zeichen hinzufügt, bekommt man beim Ausdrucken eine Fehlermeldung mit Ungültiger Variant-Typumwandlung (z.B. A123 und 456 bzw. 123 und B456 oder ähnliches).

Meine Frage wäre, wie lässt sich nun der Code soweit verändern, dass auch Inhalte, die nicht nur aus numerischen Werten bestehen, verkettet und miteinander verglichen werden können :?:

MfG
Christian
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Die Variablen vorher initialisieren:

AuftrNr := 'a';
AuftrNrAkt := 'a';

Aber ganz am Anfang des Reports!
Christian E
Beiträge: 28
Registriert: Mi Mär 01, 2006 8:26 am

Beitrag von Christian E »

Ich habe die von Ihnen vorgeschlagene Änderung im Formular vorgenommen. Dennoch erhalte ich bei einem Ausdruck die schon oben erwähnte Fehlermeldung.

Nur um ganz sicher zu sein, alles korrekt eingetragen zu haben:
Wo genau im Formular muss diese Initialisierung stattfinden? Was genau bewirkt die Änderung in Bezug auf mein Problem?

Mit freundlichen Grüßen
Christian
Winfried
Beiträge: 36
Registriert: Di Jul 19, 2005 7:38 am
Wohnort: Böblingen bei Stuttgart

Beitrag von Winfried »

Hallo Christian,

auch ich kann von dieser Fehlermeldung ein Lied singen, jedoch nur mit der alten 2005er Datenbank (setzt du diese ein ?)

Wenn Du den LS manuell erstellst, wird du diesen Fehler auch nicht mehr sehen. So war es auf alle Fälle bei mir...
Viele Grüße

Winfried

HÄGELE GmbH

CD/DVD Produktionen
Business Open Source Software

www.haegelegmbh.de
www.schwabendisc.de
www.business-opensource.de
Christian E
Beiträge: 28
Registriert: Mi Mär 01, 2006 8:26 am

Beitrag von Christian E »

Im Einsatz ist die Version 2006B2. Im Prinzip weiss ich ja auch woran es liegt, dass diese Fehlermeldung erscheint, aber leider habe ich noch keine Lösung gefunden das Problem zu umgehen.

Allerdings hat mich Ihr Tipp mit der manuellen Änderung auf eine Idee gebracht, mit der ich den Fehler per Hand korrigieren kann, vielen Dank dafür! :D

Mit freundlichen Grüßen
Christan
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

So, habe jetzt einmal versucht, den Fehler in der B2 nachzuvollziehen. Ohne Erfolg. Im Lieferschein steht immer das Korrekte:

Auftrags.Nr. A70001167
Ihre Bestellnummer: 123 Neuer Lieferant

Auftrags.Nr. A70001167
Ihre Bestellnummer: a123 Neuer Lieferant

Bei den Auftragspositionen ist in beiden Fällen "12345" hinterlegt.



Mein erster Tipp sollte die Variablen initilisieren. Der Report arbeitet so, dass Variablen einfach verwendet werden können, ohne dass man sie vorher deklariert hat. Die Deklaration erfolgt durch die erste Zuweisung. Weist man eine Zahl zu ist (und bleibt) die Variable vom Typ "Ganzzahl", weist man hingegen erst einen Text zu, so wird die Variable alphanumerisch.
Christian E
Beiträge: 28
Registriert: Mi Mär 01, 2006 8:26 am

Beitrag von Christian E »

Wäre es möglich, dass Sie mir den Original-Code des BdDDChild - OnBeforePrint Ereignisses zukommen lassen? Ich habe dort wohl schon kleine Änderungen vorgenommen, welche dann zu dem Fehler führen.

Mit freundlichen Grüßen
Christian
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

meAuftragsnummer:

Code: Alles auswählen

begin
// AuftragsNr und Ihre Bestellnummer
   memo.clear;
   anr  := [trim([LB_Auftragsnummer.memo])];
   ibn  := [trim([LB_IhreBestellNr.memo])];
   auNr := [trim([q_Rep4."BAUF_MASKENKEY"])];
   kuNr := [trim([q_Rep20."KUAUFNR"]) + '       ' + trim([q_Rep4."BAUF_BEMERKUNG"])+ '       ' + trim([q_rep1."BADR_NAME"])];
   if [auNr] > '' then
      memo.add([anr]+' '+[auNr]);
   if [kuNr] > '' then
      memo.add([ibn]+' '+[kuNr]);
end
bdDDChild:

Code: Alles auswählen

begin
  // zusätzliche Texte für Artikel anzeigen
  bdArtikeltext.Visible := False;
  bdArtikeltext2.Visible := False;
  bdArtikeltext3.Visible := False;
  bdSeriennummern.Visible := False;
  bdNorm.Visible := False;
  // Auftragspos-Text bzw. Artikeltext falls nicht vorhanden
  // GK 11.12.02 Pos. nur einmal drucken -> BRRCP-Pos. müssen nach Auftrag+Pos. sortiert sein - bisher Normalfall
  if (MerkBAUFPO_ID <> [q_Rep4."BAUFPO_ID_AUFNRPOS"]) then
  if ([q_Rep7."ID"] > 0) then
    bdArtikeltext.Visible := True
  else
    if ([q_Rep12."BLOB_TEXT"] <> '') then
      bdArtikeltext2.Visible := True;
  MerkBAUFPO_ID := [q_Rep4."BAUFPO_ID_AUFNRPOS"];

  if ([q_Rep5."ID"] > 0) then
    bdArtikeltext3.Visible := True;
  if ([q_rep8."MASKENKEY"] <> '') then
    bdSeriennummern.Visible := True;
  if (([q_Rep4."BSA_Normart1"] <> '')or([q_rep17."MASKENKEY"]<>'')or([q_rep18."NORM2"]<>'')) then
    bdNorm.Visible := True;

  EGew :=  [q_rep4."MENGE"] * [q_rep4."BSA_GEWICHT"];
  GesamtGew := [GesamtGew] + [EGew];

  X := [q_rep4."ID"];
  Y := [q_rep15."ID"];
  Z := [q_rep20."ID"];
  Q := [q_rep21."ID"];
end
und des bdDD:

Code: Alles auswählen

begin
   AuftrNrAkt := [q_Rep4."BAUFPO_ID_LINKKEY"];
   if AuftrNrAkt <> [AuftrNr] then begin
        bdDD.visible := True;
        AuftrNr := AuftrNrAkt;
   end
   else bdDD.visible := False;      
end
Antworten