komischer BUG mit STR() ???

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

komischer BUG mit STR() ???

Beitrag von AUGE_OHR »

moin,

machmal glaub ich einfach nicht was Xbase++ so macht.
Also ich hab ein ganz einfaches numerisches Feld und das will ich
zu einem String machen. Eigendlich keine Problem und doch knallt
er weg wegen STR() ???

oError:args :
-> VALTYPE: C VALUE:
-> VALTYPE: N VALUE: 12
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Parameter hat falschen Typ
oError:filename :
oError:genCode : 2
oError:operation : str
oError:osCode : 0
oError:severity : 2
oError:subCode : 1025
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0

Code: Alles auswählen

...
// diese funktionieren
REPLACE ZOLLINET->Z35A WITH IF(EMPTY(ZOLLIPOS->Z35A)  
,"",STRTRAN(STR(ZOLLIPOS->Z35A,11,1),".",","))

REPLACE ZOLLINET->Z38A WITH IF(EMPTY(ZOLLIPOS->Z38A)  
,"",STRTRAN(STR(ZOLLIPOS->Z38A,11,1),".",","))

ALTD()

// so ab hier geht es los, vorher läuft STR() wie gewohnt

// das geht NICHT
* REPLACE ZOLLINET->Z37N  WITH IF(EMPTY(ZOLLIPOS->Z37N)  ,"",STR(ZOLLINET->Z37N,12) )

// so geht es
      IF EMPTY(ZOLLIPOS->Z37N)
         yyy := ""
      ELSE
         xxx := ZOLLIPOS->Z37N
         yyy := STR(xxx,12)
      ENDIF
      REPLACE ZOLLINET->Z37N        WITH yyy

// das geht NICHT
* REPLACE ZOLLINET->Z37O  WITH IF(EMPTY(ZOLLIPOS->Z37O)  ,"", STR(ZOLLINET->Z37O,13) )
// so geht es

      IF EMPTY(ZOLLIPOS->Z37O)
         yyy := ""
      ELSE
         xxx := ZOLLIPOS->Z37O
         yyy := STR(xxx,13)
      ENDIF
      REPLACE ZOLLINET->Z37O        WITH  yyy
...
die "umbrüche" sehen nur hier im Forum so aus.
ich weiss es ist kaum zu glauben aber es ist reproduzierbar.

Ich hab "vor" den beiden und "dahinter" die selbe Konstruktion und alle
ausser den beiden funktionieren ... dabei ist das Problem erst "plötzlich"
aufgetaucht nachdem die die Source erweitert habe (aber nicht an dem
Modul)

die ZOLLIPOS hat 38 Felder und die ZOLLINET 146 wobei es das 118
bzw 119 Feld ist was Probleme macht ...

mal sehen was Alaska dazu sagt ...

gruss by OHR
Jimmy
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo Jimmy,

Du schreibst in Deinem Code:

* REPLACE ZOLLINET->Z37N WITH IF(EMPTY(ZOLLIPOS->Z37N) ,"",STR(ZOLLINET->Z37N,12) )

und dann:

xxx := ZOLLIPOS->Z37N
yyy := STR(xxx,12)

"ZOLLINET->Z37N" und "ZOLLIPOS->Z37N" sind doch unterschiedliche Felder in verschiedenen DB's!? Ist "ZOLLINET->Z37N" mglw. gar kein numerisches Feld?

Vielleicht liegt's ja daran.

Sören
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Jimmy,
// das geht NICHT
* REPLACE ZOLLINET->Z37N WITH IF(EMPTY(ZOLLIPOS->Z37N) ,"",STR(ZOLLINET->Z37N,12) )
offensichtlich hast du hier ganz hinten ZOLLINET geschrieben, aber ZOLLIPOS gemeint, denn in deinem Ausweichcode holst du die numerischen Werte aus ZOLLIPOS und schreibst einen String nach ZOLLINET, somit kann ZOLLINET nie einen numerischen Wert liefern.
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hubert,
schön, dass Du auch wieder da bist (und dann auch gleich sooo aufmerksam, Respekt!!) - ich habe Dich hier schon vermisst! :D

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
offensichtlich hast du hier ganz hinten ZOLLINET geschrieben, aber ZOLLIPOS gemeint, denn in deinem Ausweichcode holst du die numerischen Werte aus ZOLLIPOS und schreibst einen String nach ZOLLINET, somit kann ZOLLINET nie einen numerischen Wert liefern
Jungs Ihr hab ja so Recht ... Ich hab mal wieder Tomaten auf den
Augen gehabt und das nicht gesehen, sorry.

danke, gruss by OHR
Jimmy
Antworten