DEF VAR Firma AS CHAR NO-UNDO INIT '1000'. DEF VAR AdFirma AS CHAR NO-UNDO INIT '1000'. DEF VAR Knr AS INT NO-UNDO INIT 0. DEF TEMP-TABLE tDateien FIELD Datei AS CHAR FIELD Firma AS LOG. DEF TEMP-TABLE tBesko LIKE Besko INDEX tBesko-k1 AS PRIMARY Firma Knr. EMPTY TEMP-TABLE tDateien. FOR EACH _Field WHERE _Field._Field-Name BEGINS 'Knr' NO-LOCK: FIND _File OF _Field NO-LOCK. IF _File._File-Name = 'Benutzer' THEN NEXT. FIND FIRST tDateien WHERE tDateien.Datei = _File._File-Name NO-ERROR. IF AVAILABLE tDateien THEN NEXT. CREATE tDateien. ASSIGN tDateien.Datei = _File._File-Name tDateien.Firma = FALSE. END. FOR EACH _Field WHERE _Field._Field-Name BEGINS 'Firma' NO-LOCK: FIND _File OF _Field NO-LOCK. FIND FIRST tDateien WHERE tDateien.Datei = _File._File-Name NO-LOCK NO-ERROR. IF NOT AVAILABLE tDateien THEN NEXT. tDateien.Firma = TRUE. END. FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Knr NO-LOCK NO-ERROR. IF AVAILABLE Adresse THEN RUN LOESCHEN. PROCEDURE LOESCHEN: DEF VAR bHandle AS WIDGET-HANDLE NO-UNDO. DEF VAR dHandle AS WIDGET-HANDLE NO-UNDO. DEF VAR qHandle AS WIDGET-HANDLE NO-UNDO. DEF VAR sSelektion AS CHAR NO-UNDO. DEF VAR fErst AS LOG NO-UNDO. DEF VAR iRecid AS RECID NO-UNDO. DEF VAR cFirma AS CHAR NO-UNDO. DISABLE TRIGGERS FOR LOAD OF Aufze . DISABLE TRIGGERS FOR LOAD OF ArtLager. DISABLE TRIGGERS FOR LOAD OF ArtLief . DISABLE TRIGGERS FOR LOAD OF Aufko . DISABLE TRIGGERS FOR LOAD OF BesEing . DISABLE TRIGGERS FOR LOAD OF ArtLief . DISABLE TRIGGERS FOR LOAD OF Besze . DISABLE TRIGGERS FOR LOAD OF Debst . DISABLE TRIGGERS FOR LOAD OF Liefst . DISABLE TRIGGERS FOR LOAD OF AufLot . DISABLE TRIGGERS FOR LOAD OF RuestAuf. CREATE QUERY qHandle. FOR EACH Steuer NO-LOCK WHERE Steuer.AdFirma = AdFirma: MESSAGE Steuer.Firma Steuer.AdFirma knr VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. cFirma = Steuer.Firma. FOR EACH tDateien NO-LOCK BY tDateien.Datei: IF tDateien.Datei = 'Adresse' THEN NEXT. IF tDateien.Datei = 'HoReLager' THEN NEXT. IF tDateien.Datei = 'Artbw' AND Knr = 0 THEN NEXT. IF tDateien.Firma = FALSE AND cFirma <> AdFirma THEN NEXT. CREATE BUFFER bHandle FOR TABLE tDateien.Datei. qHandle:SET-BUFFERS(bHandle). IF tDateien.Firma = TRUE THEN DO: sSelektion = 'FOR EACH ' + tDateien.Datei + ' WHERE ' + tDateien.Datei + '.Firma = "' + cFirma + '" AND ' + tDateien.Datei + '.Knr = ' + STRING(Knr). END. ELSE DO: sSelektion = 'FOR EACH ' + tDateien.Datei + ' WHERE ' + tDateien.Datei + '.Knr = ' + STRING(Knr). END. qHandle:QUERY-PREPARE(sSelektion). qHandle:SKIP-DELETED-RECORD = TRUE. qHandle:QUERY-OPEN(). fErst = TRUE. REPEAT TRANSACTION: IF fErst THEN qHandle:GET-FIRST(EXCLUSIVE-LOCK, NO-WAIT). ELSE qHandle:GET-NEXT (EXCLUSIVE-LOCK, NO-WAIT). IF qHandle:QUERY-OFF-END THEN LEAVE. fErst = FALSE. dHandle = qHandle:GET-BUFFER-HANDLE(). IF dHandle:LOCKED THEN NEXT. DO WHILE TRUE: IF bHandle:NAME <> 'Aufko' THEN LEAVE. iRecid = dHandle:RECID. FIND Aufko WHERE RECID(Aufko) = iRecid NO-LOCK NO-ERROR. FOR EACH AufGebKo OF Aufko: DELETE AufGebKo. END. FOR EACH AufGKon OF Aufko: DELETE AufGKon. END. FOR EACH AufRabSu OF Aufko: DELETE AufRabSu. END. FOR EACH AufSpRab USE-INDEX AufSpRab-k1 WHERE AufSpRab.Firma = Aufko.Firma AND AufSpRab.Aufnr = Aufko.Aufnr: DELETE AufSpRab. END. FOR EACH Aufze OF Aufko: DELETE Aufze. END. FOR EACH AufLot OF Aufko: DELETE AufLot. END. FOR EACH RuestAuf OF Aufko: DELETE RuestAuf. END. RELEASE Aufko. LEAVE. END. DO WHILE TRUE: IF bHandle:NAME <> 'Besko' THEN LEAVE. iRecid = dHandle:RECID. FIND Besko WHERE RECID(Besko) = iRecid NO-LOCK NO-ERROR. FOR EACH BesGebKo OF Besko: DELETE BesGebKo. END. FOR EACH Besze OF Besko: DELETE Besze. END. RELEASE Besko. LEAVE. END. DO WHILE TRUE: IF bHandle:NAME <> 'Savko' THEN LEAVE. iRecid = dHandle:RECID. FIND Savko WHERE RECID(Savko) = iRecid NO-LOCK NO-ERROR. FOR EACH SavGebKo OF Savko: DELETE SavGebKo. END. FOR EACH SavGKon OF Savko: DELETE SavGKon. END. FOR EACH SavRabSu OF Savko: DELETE SavRabSu. END. FOR EACH SavSpRab USE-INDEX SavSpRab-k1 WHERE SavSpRab.Firma = Savko.Firma AND SavSpRab.Aufnr = Savko.Aufnr: DELETE SavSpRab. END. FOR EACH Savze OF Savko: DELETE Savze. END. FOR EACH SavLot OF Savko: DELETE SavLot. END. FOR EACH RuestSav OF Savko: DELETE RuestSav. END. RELEASE Savko. LEAVE. END. dHandle:BUFFER-DELETE(). END. qHandle:QUERY-CLOSE(). DELETE OBJECT bHandle. END. REPEAT TRANSACTION: FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Knr NO-ERROR. IF AVAILABLE Adresse THEN DELETE Adresse. LEAVE. END. END. DELETE OBJECT qHandle. END PROCEDURE.