Selectlatestversion im CC

11. Juli 2014 20:55

Hallo Zusammen,

ich habe das Problem, dass ich seehhrr lange laufende Imports in die Datenbank habe. in den Version 2.00 und 2.60 habe ich den folgende Code entwickelt, der mir in folgender Situation weitergeholfen hat :
ich starte Client1, rufe den Import auf
ich starte Client2, rufe den nächsten Import auf, der aufgrund des Codes im OnInitTrigger erst mal brav wartet bis Client1 fertig ist.
insgesamt habe ich so bis zu 11 Clients brav am arbeiten gehabt.

Nun nutzte ich NAV 2009 mit demselben Code und .... Es funktioniert nicht.
Der Wartezustand wird eingenommen, aber Client2 stellt nicht mehr fest, dass Client1 den Datensatz "Importsperre" gelöscht hat.

Was mach ich falsch ?

Code:
BelastungAbwartenCounter   : integer
LockTabelle                         : Record 50001 (UserDefiniedTable)
BelastungAbwarten              : Dialog

BelastungAbwartenCounter := 0;
REPEAT
    IF LockTabelle.GET('Importsperre') THEN
    BEGIN
        BelastungAbwarten.OPEN('Belastung abwarten #1#####');
        WHILE LockTabelle.GET('Importsperre') DO
        BEGIN;
            BelastungAbwartenCounter := BelastungAbwartenCounter + 1;
            BelastungAbwarten.UPDATE(1,BelastungAbwartenCounter);
            SLEEP(1000);
            COMMIT;
            SELECTLATESTVERSION;
        END;
        BelastungAbwarten.CLOSE;
    END;
    LockTabelle.INIT;
    LockTabelle.Code := 'Importsperre';
    LockTabelle.Ort :=  'PP-Import:'+UPPERCASE(USERID)+' '+COMPANYNAME;
UNTIL LockTabelle.INSERT;


VG
Hans-Dieter

Re: Selectlatestversion im CC

15. Juli 2014 12:52

Nun habe ich den Quelltext schon umgebaut zu :
Code:
LockTabelle.LOCKTABLE(TRUE);
BelastungAbwartenCounter := 0;
REPEAT
    IF LockTabelle.GET('Importsperre') THEN
    BEGIN
        BelastungAbwarten.OPEN('Belastung abwarten #1#####');
        REPEAT
            COMMIT;
            BelastungAbwartenCounter := BelastungAbwartenCounter + 1;
            BelastungAbwarten.UPDATE(1,BelastungAbwartenCounter);
            SLEEP(1000);
            SELECTLATESTVERSION;
            CLEAR(LockTabelle);
        UNTIL NOT LockTabelle.GET('Importsperre');
        BelastungAbwarten.CLOSE;
    END;
    LockTabelle.INIT;
    LockTabelle.Code := 'Importsperre';
    LockTabelle.Ort :=  'PP-Import:'+UPPERCASE(USERID)+' '+COMPANYNAME;
UNTIL LockTabelle.INSERT;
COMMIT;


aber es geht immer noch nicht

HILFEEEEEE
Was mach ich falsch ?

Re: Selectlatestversion im CC

15. Juli 2014 13:41

Native oder SQL-DB?

Re: Selectlatestversion im CC

15. Juli 2014 13:53

SQL-Datenbank