Hallo Admin,
admin hat geschrieben:
Wir haben das bei uns aufgenommen. Versprechen aber nichts

dafür verspreche ich, dass das Problem gelöst ist
Hier das Ergebnis bzw. Vorgehensweise:
In die Tabelle BKUNDEMAND das Feld BVERT_ID mit foreign key auf BVERT einfügen.
Die View V_BKUNDEMAND mit Triggern entsprechend anpassen.
Eine entsprechende Procedure bauen (P_BKUNDEMAND_VERTRETER), die ein entsprechendes Ergebnis liefert.
Code: Alles auswählen
SET TERM ^ ;
CREATE OR ALTER PROCEDURE P_BKUNDEMAND_VERTRETER (
MANDANT INTEGER,
KUNDEID INTEGER)
RETURNS (
VERTID INTEGER)
AS
begin
/* LETZTER STAND: 14.07.2009 08:37:52 BY KDP */
/* Mandantenabhängigen Vertreter zurückgeben */
/* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ( 'P_BKUNDEMAND_VERTRETER' );
select bvert_id from BKUNDEMAND
where bkunde_id_linkkey = :kundeid and bmand_id = :mandant
into
:VERTID
;
suspend;
end^
SET TERM ; ^
DELETE FROM RDB$USER_PRIVILEGES
WHERE (RDB$USER = 'P_BKUNDEMAND_VERTRETER') AND (RDB$USER_TYPE = 5);
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BKUNDEMAND_VERTRETER;
GRANT SELECT ON BKUNDEMAND TO PROCEDURE P_BKUNDEMAND_VERTRETER;
GRANT EXECUTE ON PROCEDURE P_BKUNDEMAND_VERTRETER TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BKUNDEMAND_VERTRETER TO SYSDBA;
PROC0015 der Maske frmv_bauf entsprechend anpassen,
..schnipp
Code: Alles auswählen
// Vertreter Mandantenabhängig
MyProc.StoredProcName := 'P_BKUNDEMAND_VERTRETER';
MyProc.ParamByName('MANDANT',AsInteger(q_1.FieldByName('BMAND_ID')));
MyProc.ParamByName('KUNDEID',AsInteger(q_1.FieldByName('BKUNDE_ID_KUNR')));
MyProc.Execute;
iBVERT_ID := AsInteger(MyProc.FieldByName('VERTID'));
If (iBVERT_ID > 0) Then Begin
M := q_1.FieldByName('BVERT_ID');
M.AsInteger := iBVERT_ID;
q_1.RelationIDFeld('BVERT_ID');
End;
:und schnapp
sich zurücklehnen und freuen
PS: Beim Schreiben dieses Beitrags ist mir aufgefallen das der Befehl

nicht mehr funktioniert.
Deshalb konnte ich das Bild der Maske nicht einfügen.
Könnten Sie da mal schauen
