Fehler Anwesenheitserfassung

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
next
Beiträge: 8
Registriert: Fr Aug 13, 2004 8:23 am

Fehler Anwesenheitserfassung

Beitrag von next »

Hallo

Bei der manuellen Zeiterfassung (AvERP 2005 A3) durch die Mitarbeiter (nicht SYSDBA) tritt ein Fehler im Gegensatz zur Version A1 auf:
ParamByName für IB_StoredProc ist falsch
StoredProc-Name: StP_Universal
IB-PROCEDURE-Name: P_BSM_STDINFO
Name von ParamByName: BSM_ID
SQL-Anweisung: EXECUTE PROCEDURE P_BSM_STDINFO

Aufruf erfolgte von: BTN_KOMMENOnClick
IB-Exception: Meldung von der AVERP-Datenbank
Errcode: 335544569
ErrorMessage: ISC Fehlernummer:335544569

ISC Fehlermeldung:
Dynamic SQL Error
SQL error code = -204
Procedure unknown
P_BSM_STDINFO
Liegt das ein der lokalen Installation/Konfiguration oder gibt es dazu ein Update-Skript?

Freundliche Grüsse

next
prodesse
Beiträge: 74
Registriert: Mi Jan 12, 2005 10:19 am
Wohnort: Aachen

Beitrag von prodesse »

Sehr geehrter "Next",

mit freundlicher Empfehlung von Herrn W. der Fa. Synerpy kann ich Ihnen folgendes Skript zur Verfügung stellen.

Dieses Skript über den Ibexpert einspielen und die fehlende Funktion ist vorhanden.

Code: Alles auswählen

SET TERM ^ ;

 

SET TERM ^;

CREATE PROCEDURE P_BSM_STDINFO(
    BSM_ID INTEGER)
RETURNS (
    GESAMT NUMERIC(15,2),
    SOLLSTD NUMERIC(15,2),
    SALDO NUMERIC(15,2),
    SALDOZEIT VARCHAR(6),
    BSMUK_URLAUB NUMERIC(15,2),
    BSMB_ISTKZ VARCHAR(1),
    BSMB_DATUM TIMESTAMP)
AS
DECLARE VARIABLE BDATUM DATE;
DECLARE VARIABLE EDATUM DATE;
DECLARE VARIABLE TEMPSALDO INTEGER;
DECLARE VARIABLE PLUSMINUS VARCHAR(1);
DECLARE VARIABLE NTEMP INTEGER;
DECLARE VARIABLE MYDATUMZEIT TIMESTAMP;
BEGIN
  /* LETZTER STAND: 30.05.2005 13:33:41 GERD KROLL */
 
  /* wird z.B. aus Maske FRMV_BSMBMAN aufgerufen */
 
  /* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BSM_STDINFO');
 
  IF (BSM_ID IS NULL) THEN EXIT;
 
  BSMUK_URLAUB = 0;
  SOLLSTD = 0;
  SALDO = 0;
  SALDOZEIT = '';
  BSMUK_URLAUB = 0;
  BSMB_ISTKZ = ' ';
  BSMB_DATUM = NULL;
 
  EDATUM = CURRENT_DATE -1; /* immer nur abgeschlossene Tage erten */
  /* Monatsersten definieren */
  BDATUM = '01.' || CAST(EXTRACT(MONTH FROM EDATUM) AS VARCHAR(2)) || '.' || CAST(EXTRACT(YEAR FROM EDATUM) AS VARCHAR(4));
 
 /* Anfang Stundensaldo ermitteln */
  SELECT GESAMT, SOLLSTD
  FROM P_CZEITIST(:BSM_ID,:BDATUM,:EDATUM,1,1)
  INTO :GESAMT, :SOLLSTD;
 
  SALDO = GESAMT - SOLLSTD;
 
  /* GESAMT (Plus/Minus) in Stunden (3 Stellen) und Minutenanzeige ( 2 tellen) errechnen */
  SALDOZEIT = '+00000';
  if (SALDO <> 0.0) then
  BEGIN
    TEMPSALDO = F_TRUNCATE(ABS(SALDO) * 60);
    if (SALDO < 0) then PlusMinus = '-'; ELSE PlusMinus = '+';
    SALDOZEIT = PlusMinus;
    nTemp = F_TRUNCATE(TEMPSALDO / 60);
    if (nTemp > 999) then nTemp = 999;
    /* Stunden */
    SALDOZEIT = SALDOZEIT || F_PADLEFT(CAST(nTemp AS VARCHAR(3)),'0',3);
    /*Minuten*/
    SALDOZEIT = SALDOZEIT || F_PADLEFT(CAST(F_MODULO(TEMPSALDO,60) AS VARCHAR(2)),'0',2);
    /*SALDOZEIT = PlusMinus || F_PADLEFT(CAST((F_TRUNCATETEMPSALDO / 60)) AS VARCHAR(3)),'0',3) || F_PADLEFT(CAST(F_MODLO(TEMPSALDO,60) AS VARCHAR(2)),'0',2);*/
  END
  /* Ene Stundensaldo ermitteln */
 
  /* Anfang Urlaubsspruch ( Resturlaub ) bestimmen */
  SELECT VA.SUMMURL
  FROM BSMUK VA
  WHERE VA.BSM_ID_LINKKEY = :BSM_ID AND VA.MASKENKEY = CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS VARCHAR(4))
  INTO :BSMUK_URLAUB;
  /* Ende   Urlaubsspruch ( Resturlaub ) bestimmen */
 
  /* Anfang letzten Ist-Buchungsdatensatz ermitteln */
  MYDATUMZEIT = NULL;
  SELECT MAX(VB.DATUM)
  FROM BSMB VB
  WHERE VB.BSM_ID_PER_NR = :BSM_ID AND VB.ISTKZ IN ('K','G') AND VB.PLANKZ = ' '
  INTO :MYDATUMZEIT;
  IF (MYDATUMZEIT IS NOT NULL) THEN
    SELECT VB.ISTKZ, VB.DATUM
    FROM BSMB VB
    WHERE VB.BSM_ID_PER_NR = :BSM_ID AND VB.DATUM = :MYDATUMZEIT AND
          VB.ISTKZ IN ('K','G') AND VB.PLANKZ = ' '
    INTO :BSMB_ISTKZ, :BSMB_DATUM;
 
  /* Ende letzten Ist-Buchungsdatensatz ermitteln */
  SUSPEND;
END
^
 
SET TERM ; ^ 

DESCRIBE PROCEDURE P_BSM_STDINFO

'Aktuelle Zeitinfo (Std, Url etc.) fuer Mitarbeiter';

 

GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BSM_STDINFO;

 

GRANT EXECUTE ON PROCEDURE P_CZEITIST TO PROCEDURE P_BSM_STDINFO;

 

GRANT SELECT ON BSMUK TO PROCEDURE P_BSM_STDINFO;

 

GRANT SELECT ON BSMB TO PROCEDURE P_BSM_STDINFO;

 

GRANT EXECUTE ON PROCEDURE P_BSM_STDINFO TO "PUBLIC";

GRANT EXECUTE ON PROCEDURE P_BSM_STDINFO TO SYSDBA;


Mit freundlichen Grüßen

Hendrik Hackmann
Bild
Welcome@Prodesse.de
Tel.: +49 700 500 11000
Fax: +49 241 963 1269
next
Beiträge: 8
Registriert: Fr Aug 13, 2004 8:23 am

Beitrag von next »

Vielen Dank, hat bestens geklappt!

Grüsse, next
Antworten