View Full Version : Query Problem ändern eines Textfeldes in DEC
Hallo zusamen,
ich bemötige ein wenig Hilfe:
Um eine Query zu schreiben muss ich zunächst einen String zerlegen:
421060105077401
dieser bildet den Buchhaltungsschlüssel ab
zerlegt sieht dieser nun so aus
42 = t01.office
16 = t01.verkehr
507740 = t01.jobclock
das sind die felder ich ich benötigt um das entsprechende record zu finden
soweit sogut
speicher ich das nun und verknüpfe diese Date mit der datei in der sich das record befindet
also:
t02.crgicd eq t01.office
t02.crwuch eq t01.verkehr
und
t02.crrqrn= t01.jobclock
bekomme ich bei der letzten verknüpfung
eine Fehlermedung da das field t01.jobclock nicht numeric ist
ich muss also bei dem zerlegen und speichern das field t01.jobclock als numeric speichern.
nur wie geht das oder geht das überhaupt
Gruß
Alfred
das Problem habe ich auch immer mal wieder.
Meines Wissens kann Query aus char nicht dec machen.
Ich löse solche Probleme andersrum, aus dem Dec Feld in der einen Datei (mittels Quey) ein char machen (Zwischendatei) und dann kann ich char mit char verknüpfen.
Was besseres ist mir bis jetzt nicht eingefallen.
kh
Am Besten legt man sich eine View an, die das Ergebnis korrekt liefert und führt das Query auf die View aus:
STRSQL
create view MyView as (
select ... dec(substr(field, 1, 3), 3, 0) numf1, ...
from ...
)
Am Besten legt man sich eine View an, die das Ergebnis korrekt liefert und führt das Query auf die View aus:
STRSQL
create view MyView as (
select ... dec(substr(field, 1, 3), 3, 0) numf1, ...
from ...
)
wenn ich das richtig verstehe kann ich das nicht im bereich "define Result Fields" machen oder?
Dein Problem ist, dass Du über das Feld verknüpfen musst.
Im Bereich Define Result Fields kannst Du nur Ausgabe-Felder definieren.
Du hast nur zwei Möglichkeiten:
1. Wie Baldur vorschlägt, Du erstellst entweder selber oder lässt von jemand eine SQL View erstellen, die nicht nur das Feld aufsplittet und konvertiert, sondern auch noch gleich mit der zweiten Datei verknüpft. Diese SQL View kannst Du dann wie jede andere Datei im Query/400 verwenden.
2. Wie kh vorschlägt, du generierst mit Query/400 zwischen Dateien, in denen die Felder aufgesplittet sind, bzw. eine Spalte für das numerische join-Feld (mit DIGITS(NumFld)) gebildet wurde. Diese Dateien verknüpfst Du dann in einem weiteren Query.
(Mit Trick 17 bzw. Konvertierung in Milisekunden ist es auch möglich alpha Felder in numerische Werte zu konvertieren, aber der andere Weg mit Digits aus numerischen Werten alphanumerische Werte zu generieren ist wesentlich einfacher.)
Birgitta
Mir blebt nur der weg 2.
Sorry aber ich habe sehr viel verlernt da ich das über 4 Jahre nicht mehr gemacht habe....
dabei bin ich dann wieder im defeine result fileds da ich hier wohl das feld (das neue ausgabefeld) definiren muss um eine kopie der datei zu bekommen.
soweit richtig?
in field nehm ich einen neuen namen
aber was kommt dann ins feld expression rein?
das Problem habe ich auch immer mal wieder.
Meines Wissens kann Query aus char nicht dec machen.
Ich löse solche Probleme andersrum, aus dem Dec Feld in der einen Datei (mittels Quey) ein char machen (Zwischendatei) und dann kann ich char mit char verknüpfen.
Was besseres ist mir bis jetzt nicht eingefallen.
kh
nur wir mache ich das?
Wenn du es mit Query und Ausgabedateien benötigst, kannst du aus Dec-Feldern Char-Felder mit der Funktion DIGITS machen.
Per SUBSTR kannst du aus Char-Feldern neue Teilfelder generieren.
Allerdings werden deine Abfragen nicht performant werden, da du ja zwei Ausgabedateien miteinander verknüpfst, die jedoch keinen Index aufweisen.
Versuche es besser per SQL z.B. mit QM-Query.
Per QM-Query kannst du deinen Select stricken und in eine Datei ausgeben, die du dann nur noch per Query/400 schön formatierst.
porblem gelöst
besten dank!
danke & gruß
alfred