[gelöst] RunFormLink

19. Dezember 2007 11:05

Hallo,

ich habe eine Tabelle in der wir Gewichte speichern mit folgenden
Feldern

Scale, Date, Time, Weight, orderno

Der Primär index ist
scale,date,time

weiterer index auf orderno.

Hier ein Beispiel der daten

1, 01.12.2007, 10:20:30, 10.2, 12541
2, 01.12.2007, 10:20:33, 5.2, 12542
1, 02.12.2007, 10:20:36, 6.8, 12542
1, 02.12.2007, 10:20:30, 9.12, 12541
1, 04.12.2007, 10:20:31, 1.25, 12541

Nun möchte ich zu den ordnerno Bemerkungen erfassen.

Hierzu habe ich mir angeschaut wie NAV es zb: den Debitoren macht

Ich habe mir eine Tabelle "Comment Weight" angelegt.

Bei der Action eines Button habe ich die "Comment Weight" als RunObjekt angegeben.

RunFormLink : Table Name=CONST(WeightSystem),No.=FIELD(No.)

Jetzt bekomme ich aber eine Fehlermeldung
Konstante muss in Typ und Länge mit Feld Scale übereinstimmen.

Ich vermute das rührt daher das das Feld orderno nicht der Primärindex ist.

Wie kann ich nun trotzdem Bemerkungen pro Auftrag erfassen ?


Vielen Dank
Jörg
Zuletzt geändert von Jörg Nissen am 27. Dezember 2007 12:52, insgesamt 1-mal geändert.

19. Dezember 2007 11:18

Wie sieht denn deine Tabelle Comment Weight aus?

Was für ein Datentyp ist dein Feld "Table Name"? Ich hätte an der Stelle CONST(WeightSystem) eher ein CONST("Comment Weight") erwartet.

19. Dezember 2007 13:57

Hallo Natalie,

die Tabelle ist genauso aufgebaut wie die von NAV ( 97 - Comment line )

Ich habe mir das abgeschaut bei der Debitoren Karte und versucht das umzusetzen.

Den einzigen unterschied den ich festgestellt habe ist der, das das Feld No. in der Customer Tabelle der primärindex ist ( Logisch, die Debitoren nummer gibt es ja nur einmal ). Das Feld OrderNo kann nicht der Primärschlüssel sein. Es gibt mehrere zeile pro orderno.

Deshalb ist mein Primärschlüssel Scale,date,time.

Ich vermute das die Fehlermeldung damit was zutun hat.


Jörg

19. Dezember 2007 14:17

Korrekt.
Also, deine Bemerkungstabelle muss einen Schüssel haben, der genauso aufgebaut ist wie deine Tabelle, mit der du verknüpfen möchtest.

Grundregel:
Schlüsselfelder Bemerkungstabelle = Alle Schlüsselfelder Bezugstabelle + Feld "Line No.".

Was du allerdings machst, widersetzt sich allen Regeln: Du möchtest nicht auf den Customer gehen, sondern auf die Auftragsnr.

Wenn du also einer deiner Gewichtszeilen einen Kommentar hinzugefügst und diese hat die Auftragsnr 123 - soll der Kommentar bei allen Zeilen aufzurufen sein, die die Auftragsnr. 123 haben?

Wenn ja, muss deine Bemerkungstabelle (mind). folgenden Primärschlüssel haben:
Auftragsnr. + "Line No.".
Dann spielen nämlich die anderen Felder keine Rolle mehr.

Das hieße dann, dass du auch die Standard-Kommentar-Tabelle 97 benutzen kannst:
Erweitere "Table Name" um die Option "Gewichtsauftragsnr." (o.ä.), Nr. ist Auftragsnr. et voilà.

19. Dezember 2007 14:37

Hallo Natalie,
das Problem sehe ich nur die Lösung, da happert es noch.

Die Tabelle "WeightSystem" ( Da wo die Daten drin sind ) hat folgende indexe

Enabled Key SumIndexFields
Yes Scale,Date,Time
Yes OrderNo
Yes No. ( wie orderno nur Typ code20 )

Meine "Comment" Tabelle folgende indexe

Enabled Key SumIndexFields
Yes Table Name,No.,Line No.
Yes No.,Line No.

Ja, der Kommentar der bei einer Zeile mit der Auftragsnummer 123 angezeigt wird soll bei allen Aufträgen mit der Nummer 123 angezeigt werden.

Leider hat sich die Fehlermeldung nicht verändert.

Jörg

19. Dezember 2007 15:26

Du hast in der Tabelle WeightSystem die Felder OrderNo UND No.? Wofür das eine, wofür das andere?

19. Dezember 2007 15:39

Hallo,
Das Feld Oderno ist Typ Integer und das Feldnr. ist von Typ Code20.

Die Tabelle wird schon länger genutzt. Und soll um die Bemerkungen erweitert werden.

Da die Typen für die Schlüsselfelder gleich sein müssen habe ich das Feld No dazu bauen müssen.

Über einen Trigger wird das Feld mit dem gleichen Inhalt wie Ordnerno gefüllt - nur halt Code20

Ist dirty, weis ich. Aber ändern ist nicht so Ohne.


Gruß
Jörg

19. Dezember 2007 15:41

Hallo Jörg,

kannst Du mal die Properties Deines Actionbuttons posten und zusätzlich die Felder Deiner neuen Kommentartabelle (incl. Datentyp und Optionstrings)?
Scheinbar passt doch hier etwas nicht zusammen.

19. Dezember 2007 16:00

Hallo,
ich habe mal alle Betroffenen Elemente angängt.

WeightSystem Form

ist die Startform

Jörg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

19. Dezember 2007 16:19

Hallo Jörg,

das Problem dürfte die TableRelation für das Feld "No." in T50007 sein (TableRelation=IF (Table Name=CONST(WeightSystem)) WeightSystem;).
Hier versucht nun Navision das Feld No. mit dem Primärkey der Gewichtstabelle in Einklang zu bringen und das geht natürlich schief.

Vielleicht kannst Du hier ganz auf die TableRelation verzichten oder Du musst die Tabelle verwenden, in der die Auftragsnummer als Primärkey verwendet wird.

27. Dezember 2007 10:05

Hallo, vielen Dank für deine Antwort.
Nach ein paar Tagen Weihnachstsurlaub kam ich erst jetzt zum lesen deiner Antwort.

Wenn ich die TableRelation entferne geht es.

Wozu dient die Option TableRelation. Mit der online hilfe komme ich nicht so wirklich weiter ?


Jörg

27. Dezember 2007 11:22

Jörg Nissen hat geschrieben:Wozu dient die Option TableRelation. Mit der online hilfe komme ich nicht so wirklich weiter ?

Konsultiere zu sowas nicht die Onlinehilfe, sondern den ADG auf der Produkt-CD - fast alles, was es zu Eigenschaften gibt, findest du dort.

Ich fasse mal zusammen:

Mit der gesetzten TableRelation (hier als Beispiel TableRelation = Item)
  • wird automatisch ein Lookup auf das betroffene Feld realisiert, sofern für die Lookup-Tabelle eine Lookup-Form-ID gepflegt wurde.
    Klickst du also auf das Feld, öffnet sich ganz automatisch eine Lookup-Form für die Tabelle Item - ganz ohne extra Programmierung!
  • Zusammen mit der Eigenschaft TestTableRelation = Yes
    wird unter
    Datei --> Datenbank --> Prüfen geprüft, ob alle Einträge in diesem Feld dieser TableRelation entsprechen (z.B. kann es sein, dass in einem solchen Feld mit TableRelation = Item ein Artikel angegeben ist, den es gar nicht mehr gibt).
  • Zusammen mit der Eigenschaft ValidateTableRelation = Yes
    wird schon bei der Eingabe durch den Benutzer geprüft, ob es den Wert (hier Artikel) auch in der Tabelle Item wirklich gibt. Wenn nicht, erhält der Benutzer eine Fehlermeldung und seine Eingabe wird nicht übernommen.

27. Dezember 2007 12:52

Hallo Natalie,

vielen dank für die Antwort.
Mit deiner und wogers Hilfe ist das jetzt so wie ich das wollte.

Jörg