Fehler beim Anlegen neuer Felder-ISC 335544569

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
Vegeta
Beiträge: 106
Registriert: Di Nov 02, 2004 1:35 pm

Fehler beim Anlegen neuer Felder-ISC 335544569

Beitrag von Vegeta »

Hallo @ all,

habe versucht neue Felder in die Tabelle BSAST einzufügen. Habe die Felder in der Datenbank definiert und auch in der View eingetragen (Mit InterBase Manager). Soweit so gut. Habe danach den AvERP-Admin gestartet und die neuen Felder und Views geladen. Hat auch noch funktioniert.
Doch jetzt bekomme ich immer eine Fehlermeldung wenn ich im AvERP die Tabelle aufrufe (Arbeitsgangdefinitionen).
Fehlermeldung:

ISC Fehlernr. 335544569
Dynamic SQL-Error
SQL Error code =-206
Colum unknown
Bemerkung_1


Bemerkung_1 ist eines der neuen Felder. Wurde als D Alpha 40null definiert. Ist noch ein weiters Feld d Alpha 40null definiert und noch 3 mal YesNoNotNull. Auch wenn ich die Sache weiter führe --> Felder in die Maske von BSAST mit AvERP-Designer und danach die Trigger bearbeiten in der Datenbank --> Fehlermeldung kommt trotzdem. Auch wenn ich nur das Feld Bemerkung_1 anlege, ohne die anderen Felder, kommt die Meldung.

Das komische daran ist: Habe in der selben Datenbank mit den selben Werkzeugen ein Testfeld zu Übungszwecken angelegt, natürlich in einer Kopie der Datenbank. Hat alles funktioniert, ohne Probleme, konnte das Feld einfügen und sogar über AvERP Daten eingeben die auch in die Datenbank geschrieben wurden. Nur jetzt geht es nicht mehr... :cry:

Irgendeine Idee was das sein kann???

Gruß
Vegeta
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Bitte komplettes DDL für Tabelle, View und Trigger posten.

Wenn möglich auch die Einträge aus A_TABELLEN und A_Felder.
Vegeta
Beiträge: 106
Registriert: Di Nov 02, 2004 1:35 pm

Beitrag von Vegeta »

DLL Table BSAST:

/* Tabelle: BSAST */

CREATE TABLE BSAST (
ID D_ID,
MASKENKEY D_ALPHA5NOTNULL,
ARBSTBEZ D_ALPHA40NOTNULL,
BKST_ID_KST D_ID,
BLGR_ID_LGR D_ID,
BLOGM_ID_MARBGR D_ID,
BSMT_ID_MASCHTYP D_IDNULL,
RUESTZEIT D_ZAHL4KOMMANULL,
STCKZEIT D_ZAHL4KOMMANULL,
BENUTZER D_BENUTZER,
GESPEICHERT D_GESPEICHERT,
ARBSTBEZ_FL D_ALPHA40NULL COLLATE DE_DE,
PROD_AVG D_ZAHL4KOMMANOTNULL NOT NULL,
"Bemerkung_1" D_ALPHA40NULL COLLATE DE_DE,
"Bemerkung_2" D_ALPHA40NULL COLLATE DE_DE,
"PruefUM" D_YESNONOTNULL NOT NULL COLLATE DE_DE,
"PruefMA" D_YESNONOTNULL NOT NULL COLLATE DE_DE,
"PruefLR" D_YESNONOTNULL NOT NULL COLLATE DE_DE);



/* Primary keys definition */

ALTER TABLE BSAST ADD CONSTRAINT PK_BSAST PRIMARY KEY (ID);


/* Unique keys definition */

ALTER TABLE BSAST ADD CONSTRAINT UK_BSAST UNIQUE (MASKENKEY);


/* Foreign keys definition */

ALTER TABLE BSAST ADD CONSTRAINT REF_BSAST_BKST_KST FOREIGN KEY (BKST_ID_KST) REFERENCES BKST (ID);
ALTER TABLE BSAST ADD CONSTRAINT REF_BSAST_BLGR_LGR FOREIGN KEY (BLGR_ID_LGR) REFERENCES BLGR (ID);
ALTER TABLE BSAST ADD CONSTRAINT REF_BSAST_BLOGM_MARBGR FOREIGN KEY (BLOGM_ID_MARBGR) REFERENCES BLOGM (ID);
ALTER TABLE BSAST ADD CONSTRAINT REF_BSAST_BSMT_MASCHTYP FOREIGN KEY (BSMT_ID_MASCHTYP) REFERENCES BSMT (ID);

SET TERM ^ ;

/* Triggers definition */



/* Trigger: BSAST_AU0 */
CREATE TRIGGER BSAST_AU0 FOR BSAST ACTIVE
AFTER UPDATE POSITION 0
AS
BEGIN
/* LETZTER STAND: 21.02.2003 07:58:41 GK */
/* PROTOKOLLIEREN, DAS AKTION HIER DURCHGELAUFEN IST */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BLGR_AU0');

IF (USER <> 'WORSTCASE') THEN
BEGIN
/* Kettenreaktion in Kalkulation */
IF ((NEW.BLGR_ID_LGR <> OLD.BLGR_ID_LGR) OR (NEW.BKST_ID_KST <> OLD.BKST_ID_KST)) THEN
UPDATE BSAPG SET ID = ID
WHERE BSAST_ID_ARBST = OLD.ID AND BESTJN = 'N';
END
END
^


/* Trigger: BSAST_BI2 */
CREATE TRIGGER BSAST_BI2 FOR BSAST ACTIVE
BEFORE INSERT POSITION 2
AS
BEGIN
/* Letzter Stand 18.11.2004 14:30:50 RW */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BSAST_BI2');

IF ((NEW.ID IS NULL) OR (NEW.ID = 0)) THEN NEW.ID = GEN_ID(GEN_BSAST,1);
NEW.BENUTZER = USER;
NEW.GESPEICHERT = 'NOW';
IF (NEW.BSMT_ID_MASCHTYP = 0) THEN NEW.BSMT_ID_MASCHTYP = NULL;
IF (NEW.BKST_ID_KST = 0) THEN NEW.BKST_ID_KST = NULL;
IF (NEW.BLGR_ID_LGR = 0) THEN NEW.BLGR_ID_LGR = NULL;
IF (NEW.BLOGM_ID_MARBGR = 0) THEN NEW.BLOGM_ID_MARBGR = NULL;
IF (NEW.RUESTZEIT IS NULL) THEN NEW.RUESTZEIT = 0.0;
IF (NEW.STCKZEIT IS NULL) THEN NEW.STCKZEIT = 0.0;
IF (NEW.PROD_AVG IS NULL) THEN NEW.PROD_AVG = 0.0;
END
^


/* Trigger: BSAST_BU0 */
CREATE TRIGGER BSAST_BU0 FOR BSAST ACTIVE
BEFORE UPDATE POSITION 0
AS
BEGIN
/* Letzter Stand 18.11.2004 14:30:30 RW */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BSAST_BU0');

IF (NEW.GESPEICHERT <> OLD.GESPEICHERT) THEN EXCEPTION KEINE_AENDERUNG;
NEW.BENUTZER = USER;
NEW.GESPEICHERT = 'NOW';
IF (NEW.BSMT_ID_MASCHTYP = 0) THEN NEW.BSMT_ID_MASCHTYP = NULL;
IF (NEW.BKST_ID_KST = 0) THEN NEW.BKST_ID_KST = NULL;
IF (NEW.BLGR_ID_LGR = 0) THEN NEW.BLGR_ID_LGR = NULL;
IF (NEW.BLOGM_ID_MARBGR = 0) THEN NEW.BLOGM_ID_MARBGR = NULL;
IF (NEW.RUESTZEIT IS NULL) THEN NEW.RUESTZEIT = 0.0;
IF (NEW.STCKZEIT IS NULL) THEN NEW.STCKZEIT = 0.0;
IF (NEW.PROD_AVG IS NULL) THEN NEW.PROD_AVG = 0.0;
END
^


SET TERM ; ^


DLL View BSAST


CREATE VIEW V_BSAST (
ID,
MASKENKEY,
ARBSTBEZ,
BKST_ID_KST,
BLGR_ID_LGR,
BLOGM_ID_MARBGR,
BSMT_ID_MASCHTYP,
RUESTZEIT,
STCKZEIT,
PROD_AVG,
BENUTZER,
GESPEICHERT,
"Bemerkung_1",
"Bemerkung_2",
"PruefUM",
"PruefMA",
"PruefLR",
BKST_MASKENKEY,
BKST_KSTBEZ,
BLGR_MASKENKEY,
BLGR_BEZ,
BLGR_LGRF,
BLOGM_MASKENKEY,
BLOGM_G_BEZ,
BLOGM_LOHNGK,
BSMT_MASKENKEY,
BSMT_TYPBEZ)
AS
SELECT A.ID,
A.MASKENKEY,
A.ARBSTBEZ,
A.BKST_ID_KST,
A.BLGR_ID_LGR,
A.BLOGM_ID_MARBGR,
A.BSMT_ID_MASCHTYP,
A.RUESTZEIT,
A.STCKZEIT,
A.PROD_AVG,
A.BENUTZER,
A.GESPEICHERT,
A."Bemerkung_1",
A."Bemerkung_2",
A."PruefUM",
A."PruefMA",
A."PruefLR",
B.MASKENKEY,
B.KSTBEZ,
C.MASKENKEY,
C.BEZ,
C.LGRF,
D.MASKENKEY,
D.G_BEZ,
D.LOHNGK,
E.MASKENKEY,
E.TYPBEZ
FROM BSAST A
LEFT OUTER JOIN BKST B ON A.BKST_ID_KST = B.ID
LEFT OUTER JOIN BLGR C ON A.BLGR_ID_LGR = C.ID
LEFT OUTER JOIN BLOGM D ON A.BLOGM_ID_MARBGR = D.ID
LEFT OUTER JOIN BSMT E ON A.BSMT_ID_MASCHTYP = E.ID
;


Trigger before insert

CREATE TRIGGER V_BSAST_BI0 FOR V_BSAST ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
/* Letzter Stand 18.11.2004 15:46:47 RW */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('V_BSAST_BI0');

INSERT INTO BSAST (
GESPEICHERT,
STCKZEIT,
RUESTZEIT,
BSMT_ID_MASCHTYP,
BLOGM_ID_MARBGR,
BLGR_ID_LGR,
BKST_ID_KST,
ID,
ARBSTBEZ,
MASKENKEY,
BENUTZER,
bsast."Bemerkung_1",
bsast."Bemerkung_2",
bsast."PruefLR",
bsast."PruefMA",
bsast."PruefUM")
VALUES (
NEW.GESPEICHERT,
NEW.STCKZEIT,
NEW.RUESTZEIT,
NEW.BSMT_ID_MASCHTYP,
NEW.BLOGM_ID_MARBGR,
NEW.BLGR_ID_LGR,
NEW.BKST_ID_KST,
NEW.ID,
NEW.ARBSTBEZ,
NEW.MASKENKEY,
NEW.BENUTZER,
new."Bemerkung_1",
new."Bemerkung_2",
new."PruefLR",
new."PruefMA",
new."PruefUM");
END

Trigger before update

CREATE TRIGGER V_BSAST_BU0 FOR V_BSAST ACTIVE
BEFORE UPDATE POSITION 0
AS
BEGIN
/* Letzter Stand 18.11.2004 15:46:42 RW */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('V_BSAST_BU0');

UPDATE BSAST
SET GESPEICHERT = NEW.GESPEICHERT,
STCKZEIT = NEW.STCKZEIT,
RUESTZEIT = NEW.RUESTZEIT,
BSMT_ID_MASCHTYP = NEW.BSMT_ID_MASCHTYP,
BLOGM_ID_MARBGR = NEW.BLOGM_ID_MARBGR,
BLGR_ID_LGR = NEW.BLGR_ID_LGR,
BKST_ID_KST = NEW.BKST_ID_KST,
ID = NEW.ID,
ARBSTBEZ = NEW.ARBSTBEZ,
MASKENKEY = NEW.MASKENKEY,
BENUTZER = NEW.BENUTZER,
bsast."Bemerkung_1" = new."Bemerkung_1",
bsast."Bemerkung_2" = new."Bemerkung_2",
bsast."PruefLR" = new."PruefLR",
bsast."PruefMA" = new."PruefMA",
bsast."PruefUM" = new."PruefUM"
WHERE ID = OLD.ID;
END


Insert von A_FELDER
Hoffe das hilft :?

Gruß
Vegeta
Vegeta
Beiträge: 106
Registriert: Di Nov 02, 2004 1:35 pm

Beitrag von Vegeta »

Hat das nicht gereicht? Oder weiß niemand wo der Fehler liegen könnte??

Gruß
Vegeta
Vegeta
Beiträge: 106
Registriert: Di Nov 02, 2004 1:35 pm

Beitrag von Vegeta »

Hallo @ all,

nach etlichen Stunden habe ich den Fehler nun behoben.
Habe die Namen, die in der Maske als Beschreibung für die Felder angezeigt werden sollen umbenannt.
Lag offenbar an den ""... :evil:
Bin mir nicht sicher ob das der Fehler war :?: , aber jetzt funktioniert es. :D

Gruß
Vegeta
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Auf den ersten Blick sind das einzig Seltsame die doppelten Anführungszeichen bei den Feldern. Das ist ein anderer Datenbankdialekt (1) als der, den wir verwenden (3).

Bringt es etwas, wenn man überall die Zeichen wegnimmt?

Auch im Trigger sind BSAST.xxx überflüssig.

Tipp: Einfach an dem vorhandenen Code orientieren.
Zuletzt geändert von admin am Mi Sep 28, 2005 1:58 pm, insgesamt 1-mal geändert.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Tagelang keine Antwort und dann synchron :)
Vegeta
Beiträge: 106
Registriert: Di Nov 02, 2004 1:35 pm

Beitrag von Vegeta »

Hallo Admin,
waren ja offenbar die "", jetzt läuft es ja ohne Probleme.
Und die Tabellennamen.XXX (z.B. BSAST.XXX) habe ich nur drin, weil ich nach Tabellenname. eine Liste mit den Spalten angezeigt bekomme. So brauche ich mir die Namen nicht alle merken und die Gefahr das ich mich verschreibe wird geblockt :wink: Die stören ja anscheinend auch nicht, die Tabellennamen.
Wie auch immer, viellen Dank für die Mühe :D

Gruß
Vegeta
Antworten