Anmelden

View Full Version : SQL und Displayfile



Seiten : [1] 2

Xanas
11-01-10, 12:36
Hallo,

ich hab eine Displayfile, in der ich auf ein Feld in einer mit DDL erzeugten Tabelle referenzieren möchte.

Das Problem, bei kompilieren haut mit der Kompiler "Länge der Schlüsserlwortwertes ungültig" um die Ohren.
Das liegt an einem zu langem Feldnamen, den die Displayfile sich als Alias zu gute machen will. Wenn ich das Alias selbst angebe kommt der gleiche Fehler.

Was kann man da gegen tun.

Gruß
Xanas

Fuerchau
11-01-10, 13:00
Wie gibts du die Referenz an ?
DDS verwendet ausschließlich 10-stellige Namen, ALIAS-Namen werden nicht berücksichtigt.

Ggf. hast du ja das "R" vergessen ?

Xanas
11-01-10, 13:14
Ne die Referenz angabe ist definitiv richtig, denn kürze ich den langen SQL-Feldnamen, wird die Displayfile erstellt.

andreaspr@aon.at
11-01-10, 14:42
ich bin mir nicht sicher ob ich dich korrekt verstanden habe.

ich habe selbst mal eine tabelle mit sql ersellt:

create table test1 (Das_ist_nur_ein_Test char(50))

und diese spalte über F10 im sda hinzugefügt. beim erstellen des bildschirms gabs kein problem.
oder meinst du was ganz anderes?

lg andreas

Xanas
11-01-10, 14:45
dann mach mal

create table test (verladedokumentation_kategorie_id bigint)

Gruß
Xanas

andreaspr@aon.at
11-01-10, 15:15
stimmt, mit bigint hab ich den gleichen fehler bekommen.
scheinbar kann im dspf keine referenzierung mit bigint feldern erzeugt werden.

mit numeric gehts:
create table test (verladedokumentation_kategorie_id numeric (18, 0))

das gleiche problem hatte ich schon mal in RPG, als ich testhalber eine sql-tabelle mit einer spalte anlegte, von der die art in RPG gar nicht unterstüzt wurde. entweder ändert der prekompiler die art oder es kommt ein fehler.

Fuerchau
11-01-10, 15:24
Nicht alle Feldtypen werden von DDS unterstützt!
Das hat mit dem langen Namen nichts zu tun.
Man muss wohl die Fehlermeldung genau interpretieren ;) "Länge ...".

Xanas
12-01-10, 07:04
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 9"><meta name="Originator" content="Microsoft Word 9"><link rel="File-List" href="file:///C:/DOKUME%7E1/internet/LOKALE%7E1/Temp/msoclip1/01/clip_filelist.xml"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:DoNotOptimizeForBrowser/> </w:WordDocument> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 70.85pt 2.0cm 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> Komisch nur, dass wenn ich den Feldnamen kürze

create table test (verladedokumentation_kat_id bigint)

dann wird der kram erstellt.

Ich habe auch noch eine andere ID in der Datei die verladedokumentation_api_id auch als BIGINT und das Feld wird ohne Problem akzeptiert.

Und das hat doch was mit den langen Feldnamen zu tun, die legt die DDS nämlich als ALIAS an.
Das stellt man dann fest, wenn auf Felder aus zwei verschiedenen Dateien referiert und die zufälligerweise beide ID heißen, dann muss man eins der beiden Felder mit den Schlüsselwort ALIAS umbenennen.

B.Hauser
12-01-10, 08:04
Versuch mal folgends:


CREATE TABLE Test
(verladedokumentation_kat_id For VDKID bigint)

Referenziere auf VDKID (oder wie immer der kurze Name sein soll, er darf nur maximal 10 Stellen enthalten).

Für SQL erstellte Tabellen mit Feldnamen länger als 10 Stellen wird automatisch ein System-Name erstellt (Stelle 1-5 des langen Namens + 5-stelliger laufender Zähler z.B. VERLA00017), es sei denn man gibt wie oben gezeigt einen kurzen Namen vor (LangerName FOR SystemName). Für die Referenzierung, wie auch für den Native I/O muss immer der (kurze) System-Name verwendet werden.

Birgitta

Fuerchau
12-01-10, 08:08
SQL-Namen können max. (ich glaube) 120 Stellen umfassen, DDS-ALIAS aber nur 30 Stellen.
Das wird wohl der Grund sein.