| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /* ---------------------------------------------------------- */
- /* openQuery mit Filter-Setzen */
- /* ---------------------------------------------------------- */
- DEFINE VARIABLE x1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE x2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE xFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE hqBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE cWert AS CHARACTER NO-UNDO.
- DEFINE VARIABLE yWhere AS CHARACTER NO-UNDO.
- IF cSort <> '' THEN
- DO:
- DO x1 = 1 TO NUM-ENTRIES(cSort, ','):
- xSort = xSort + ' BY ' + ENTRY(x1, cSort, ',').
- IF fDesc THEN xSort = xSort + ' DESCENDING'.
- END.
- xSort = TRIM(xSort).
- END.
- DO WHILE TRUE:
- IF cFilterFeld = '' THEN LEAVE.
- IF xWhere = '' AND
- xString = '' THEN
- DO:
- xFileName = ENTRY(1, Felder , ',').
- xFileName = ENTRY(1, xFileName, '.').
- CREATE BUFFER hqBuffer FOR TABLE xFileName.
- x2 = 0.
- xString = SUBSTITUTE('FOR EACH &1 NO-LOCK ', xFileName ).
- DO x1 = 2 TO NUM-ENTRIES(Felder, ',') BY 2:
- cFeld = ENTRY(x1, Felder, ',').
- hFeld = hqBuffer:BUFFER-FIELD(cFeld).
- x2 = x2 + 1.
- CASE hFeld:DATA-TYPE:
- WHEN 'CHARACTER' THEN
- cWert = QUOTER(ENTRY(x2, Inhalt, CHR(01))).
- WHEN 'LOGICAL' THEN
- cWert = ENTRY(x2, Inhalt, CHR(01)) .
- WHEN 'INTEGER' THEN
- cWert = ENTRY(x2, Inhalt, CHR(01)) .
- WHEN 'DECIMAL' THEN
- cWert = ENTRY(x2, Inhalt, CHR(01)) .
- WHEN 'DATE' THEN
- cWert = ENTRY(x2, Inhalt, CHR(01)) .
- OTHERWISE
- cWert = ENTRY(x1, Inhalt, CHR(01)) .
- END CASE.
- IF x2 = 1 THEN xString = xString + ' WHERE ' + ENTRY(x1 - 1, Felder, ',') + ' = ' + cWert.
- ELSE xString = xString + ' AND ' + ENTRY(x1 - 1, Felder, ',') + ' = ' + cWert.
- END.
- DO x1 = 1 TO NUM-ENTRIES(cFilterFeld, ','):
- IF cFilterFeld = 'CLEAR' THEN LEAVE.
- xString = xString + ' AND '.
- xString = xString + '{&Tabelle}.'
- + ENTRY(x1, cFilterFeld, ',')
- + ' = '
- + ENTRY(x1, cFilterWert, CHR(01))
- + ' '.
- END.
- xString = xString + ' INDEXED-REPOSITION '.
- DELETE OBJECT hqBuffer NO-ERROR.
- LEAVE.
- END.
-
- xFileName = '{&Tabelle}'.
- CREATE BUFFER hqBuffer FOR TABLE xFileName .
- yWhere = ''.
- DO x1 = 1 TO NUM-ENTRIES(cFilterFeld, ','):
- IF cFilterFeld = 'CLEAR' THEN LEAVE.
- yWhere = yWhere
- + ' AND '
- + '{&Tabelle}.'
- + TRIM(ENTRY(x1, cFilterFeld, ','))
- + ' = '
- + ENTRY(x1, cFilterWert, CHR(01))
- + ' '.
- END.
- IF xWhere <> '' THEN
- DO:
- xWhere = xWhere
- + yWhere.
- LEAVE.
- END.
-
- xString = TRIM(REPLACE(xString, 'NO-LOCK', '')).
- xString = TRIM(REPLACE(xString, 'INDEXED-REPOSITION', '')).
- xString = xString
- + yWhere
- + ' NO-LOCK INDEXED-REPOSITION '.
- LEAVE.
- END.
- IF VALID-HANDLE(hqBuffer) THEN DELETE OBJECT hqBuffer NO-ERROR.
|