5. Januar 2011 12:37
5. Januar 2011 13:51
5. Januar 2011 13:54
5. Januar 2011 14:48
HattrickHorst hat geschrieben:NAV ist wohl der Grund dafür, daß der SQL Server ziemlich schnell von Datensatzsperren auf Datensetsperren und dann auf Tabellensperren geht. In diesem Dokument http://www.sql-server.de/de/SQLNAVPorsche.pdf ist auf Seite vier ein Weg beschrieben, das zu umgehen. Aber ob das nun in deinem Fall hilfreich und der Weisheits letzter Schluß ist, wage ich zu bezweifeln.
5. Januar 2011 15:13
IF SingleInsMgt.GetPostingUpdateBatch THEN BEGIN
CurrDateTime := CURRENTDATETIME;
PostingInfo.RESET;
PostingInfo.INIT;
PostingInfo."User ID" := USERID;
PostingInfo."Posting Update Agr." := TRUE;
PostingInfo.DocumentNo := "Sales Header"."No.";
PostingInfo."DateTime PostingReq" := CurrDateTime;
PostingInfo.INSERT;
COMMIT;
postnow := FALSE;
REPEAT
Testwindow.OPEN('#1##########');
Testwindow.UPDATE(1,'WARTEN');
SLEEP(1000);
CLEAR(GenFunMgt);
postnow := GenFunMgt.CheckIfPostable(CurrDateTime);
Testwindow.CLOSE;
UNTIL postnow;
END;
PostingInfoLoc.RESET;
PostingInfoLoc.SETCURRENTKEY("DateTime PostingReq");
PostingInfoLoc.SETFILTER("DateTime PostingReq",'<%1',PostingDateTime);
IF PostingInfoLoc.FINDFIRST THEN BEGIN
EXIT(FALSE);
END ELSE BEGIN
EXIT(TRUE);
END;
5. Januar 2011 15:30
stryk hat geschrieben:Man bedenke, dass das was Kollege D. dort schreibt über 8 Jahre alt ist und schon damals mit SQL 2000 nur bedingt funktioniert hat; heutzutage ist dass eher "Käse".
5. Januar 2011 15:41
cdziewas hat geschrieben:Wenn ich den Code unten ausführe bleibt der Report in einer Endlosschleife hängen, auch wenn ich in einer anderen Anmeldung den Eintrag in der Tabelle lösche. Im Debugger findet der Server immer noch den von mir gelöschten Datensatz.
5. Januar 2011 16:02
IF SingleInsMgt.GetPostingUpdateBatch THEN BEGIN
CurrDateTime := CURRENTDATETIME;
PostingInfo.RESET;
PostingInfo.INIT;
PostingInfo."User ID" := USERID;
PostingInfo."Posting Update Agr." := TRUE;
PostingInfo.DocumentNo := "Sales Header"."No.";
PostingInfo."DateTime PostingReq" := CurrDateTime;
PostingInfo.INSERT;
COMMIT;
SELECTLATESTVERSION;
postnow := GenFunMgt.CheckIfPostable(CurrDateTime);
IF NOT postnow THEN BEGIN
REPEAT
SELECTLATESTVERSION;
Testwindow.OPEN('#1##########');
Testwindow.UPDATE(1,'WARTEN');
SLEEP(50);
CLEAR(GenFunMgt);
postnow := GenFunMgt.CheckIfPostable(CurrDateTime);
Testwindow.CLOSE;
UNTIL postnow;
END;
END;
6. Januar 2011 00:09
cdziewas hat geschrieben:
- Code:
PostingInfoLoc.RESET;
PostingInfoLoc.SETCURRENTKEY("DateTime PostingReq");
PostingInfoLoc.SETFILTER("DateTime PostingReq",'<%1',PostingDateTime);
IF PostingInfoLoc.FINDFIRST THEN BEGIN
EXIT(FALSE);
END ELSE BEGIN
EXIT(TRUE);
END;
EXIT(NOT PostingInfoLoc.ISEMPTY)
IF PostingInfoLoc.FINDFIRST THEN BEGIN
EXIT(FALSE);
END ELSE BEGIN
EXIT(TRUE);
END;
6. Januar 2011 00:16
EXIT(PostingInfoLoc.ISEMPTY);
6. Januar 2011 14:34