datsetsort.i 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. DEF INPUT PARAMETER ipFeld AS CHAR NO-UNDO.
  2. DEF VAR cFields AS CHAR NO-UNDO.
  3. DEF VAR qBuffer AS HANDLE NO-UNDO.
  4. DEF VAR qbFeld AS HANDLE NO-UNDO.
  5. DEF VAR cTables AS CHAR NO-UNDO.
  6. cFields = DYNAMIC-FUNCTION('getDataColumns':U ) NO-ERROR.
  7. IF LOOKUP(ipFeld, cFields, ',') = 0 THEN RETURN NO-APPLY.
  8. cTables = DYNAMIC-FUNCTION('getQueryTables':U ) NO-ERROR.
  9. cTables = ENTRY(1, cTables, ' ') NO-ERROR.
  10. CREATE BUFFER qBuffer FOR TABLE cTables NO-ERROR.
  11. qbFeld = qBuffer:BUFFER-FIELD(ipFeld) NO-ERROR.
  12. IF NOT VALID-HANDLE(qbFeld) THEN DO:
  13. DELETE OBJECT qBuffer.
  14. RUN MELDUNG ( 8013 ).
  15. RETURN NO-APPLY.
  16. END.
  17. DELETE OBJECT qBuffer.
  18. IF ipFeld = cSort THEN fDesc = NOT fDesc.
  19. ELSE DO:
  20. ASSIGN cSort = ipFeld
  21. fDesc = FALSE.
  22. END.
  23. fData = TRUE.
  24. RUN dataAvailable ( INPUT 'SAME' ).
  25. FIND FIRST tRowObject NO-LOCK.
  26. FIND {&Tabelle}
  27. &IF '{&TabWhere}' NE ''
  28. &THEN {&TabWhere}
  29. &ELSE OF tRowObject
  30. &ENDIF
  31. NO-LOCK NO-ERROR.
  32. IF AVAILABLE {&Tabelle} THEN cRowid = STRING(ROWID({&Tabelle})).
  33. ELSE cRowid = ?.
  34. DYNAMIC-FUNCTION('openQuery':U).
  35. IF cRowid <> ? THEN DYNAMIC-FUNCTION('fetchRowIdent':U,
  36. INPUT cRowid, INPUT ? ).