#progress-4gl #openedge
#прогресс-4gl #openedge
Вопрос:
Как я могу получить ограниченное количество записей из таблицы в текущей базе данных OpenEdge?
Что-то вроде в SQL:
SELECT TOP 100 * FROM MyTable
Единственное уродливое решение, которое я могу найти, — это перебирать все записи и прерывать, когда отображалось 100 из них. Но, похоже, должен быть какой-то лучший способ сделать это.
Ответ №1:
Если вы используете 4GL, вы также можете захотеть посмотреть на использование OPEN QUERY и MAX-ROWS для достижения результата, который вы ищете. Ниже показан традиционный ДЛЯ КАЖДОГО цикла счетчик, а затем ЗАПРОС с МАКСИМАЛЬНЫМ количеством СТРОК:
define variable i as integer no-undo.
define frame a with 10 down.
for each customer no-lock break by name:
i = i 1.
display i custNum name discount.
if i >= 5 then leave.
end.
define query q for customer scrolling.
open query q for each customer no-lock break by name max-rows 5.
do i = 1 to 5 with frame a:
get next q.
display i custNum name discount.
end.
Ответ №2:
Если вы используете движок SQL-92, то что-то вроде:
ВЫБЕРИТЕ TOP 100 ИЗ pub.customer;
должно работать просто отлично.
Если вы используете движок 4GL, вам не следует пытаться смешивать SQL с 4GL. Это приведет только к боли, страданиям и агонии. 4GL — это не SQL. Есть несколько инструкций SQL-89, которые были введены в 4GL давным-давно по маркетинговым соображениям. Попытка их использования приведет к серьезной эмоциональной травме. Вы были предупреждены.
Комментарии:
1. К сожалению, я могу дать вам только 1 голос. Ваши слова точно описывают опыт, который я получил!
Ответ №3:
Пожалуйста, перейдите по ссылке, чтобы загрузить файл. Надеясь, что на этот вопрос ответит база данных OpenEdge
Ответ №4:
ОПРЕДЕЛИТЕ ПЕРЕМЕННУЮ i КАК ЦЕЛОЕ ЧИСЛО БЕЗ ОТМЕНЫ.
ДЛЯ КАЖДОГО клиента БЕЗ БЛОКИРОВКИ шириной 320:
ASSIGN i = i 1.
если i <= 100, то
DISP CustNum Адрес Баланс Город Контакт
Скидка на кредитный лимит страны
Назовите условия состояния отправки по телефону PostalCode.
ЗАВЕРШЕНИЕ.
Комментарии:
1. Не очень хорошее решение. Если у вас миллион записей о клиентах, они будут продолжать просмотр остальных 999 900 после отображения первых 100.