Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Записи в отчете / 6 сообщений из 6, страница 1 из 1
31.08.2004, 08:58
    #32672477
Ольга!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в отчете
Привет!
Подскажите мне,пожалуйста, если записи в источнике расположены след.образом:
Ольга
Вова
Дима
Лена
Можно ли в отчёте их вывести таким образом и как
Дима
Вова
Ольга
Лена
Спасибо
...
Рейтинг: 0 / 0
31.08.2004, 09:11
    #32672498
sar99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в отчете
ДОБРЫЙ ДЕНЬ.
КАК Я ПОНИМАЮ ИЗ ПРИМЕРА У ВАС СИТУАЦИЯ,КОГДА ИНДЕКСАЦИЯ ПО ПОЛЮ
РЕЗУЛЬТАТА НЕ ДАЕТ!
НЕОБХОДИМО СОЗДАТЬ ВРЕМЕННЫЙ ФАЙЛ С ДОПОЛНИТЕЛЬНЫМ ПОЛЕМ
ПО КОТОРОМУ МОЖНО ИНДЕКСИРОВАТЬ - СКИНУТЬ ЗАПИСИ ИЗ
ВАШЕГО ИСТОЧНИКА В ЭТОТ ФАЙЛ - ПРАВИЛЬНО ЗАПОЛНИТЬ ЭТО
ДОПОЛНИТЕЛЬНОЕ ПОЛЕ - ИНЕКСИРОВАТЬ ПО ЭТОМУ ПОЛЮ -
В ОТЧЕТЕ ПОЛУЧИТСЯ ВСЕ КАК ВАМ НАДО - ПОСЛЕ ПЕЧАТИ ВРЕМЕННЫЙ
ФАЙЛ УДАЛИТЬ!
...
Рейтинг: 0 / 0
31.08.2004, 09:32
    #32672529
Ольга!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в отчете
sar99, я новичок мне пока сложно,напишите, пожалуйста, поконкретнее или может есть какой-нибудь пример.Спасибо
...
Рейтинг: 0 / 0
31.08.2004, 10:01
    #32672586
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в отчете
Записи в таблице всегда следуют в порядке их физического создания. Т.е. если "Ольга" была создана до того, как был создан "Вова", то именно так эти записи и будут отображаться в отчете:

"Ольга"
"Вова"

Если Вас такой порядок следования не устраивает, то есть несколько вариантов решения:

1) Удалить вообще все записи из таблицы и создать их заново. В нужном физическом порядке следования. По многим причинам такие действия недопустимы

2) Создается дополнительный (другой) файл, который содержит порядок следования записей в соответствии с некоторой фиксированной последовательностью. Этот файл называется "индексным файлом".

В данном случае это тоже не годится, поскольку индексный файл выстраивает значения в порядке следования их ASCII-кодов или в соответсвии с текущей сортировкой (SET COLLATE). Грубо говоря - в алфавитном порядке. Но в Вашем случае алфавитный порядок не годится.

3) Создать дополнительное служебное поле, в которое записать порядковый номер элемента и по этому служебному полю построить индекс. Вот это наиболее универсальный способ упорядочивания, хотя и наиболее трудоемкий. Ведь Вам придется самостоятельно проставлять порядковые номера элементов для каждой записи .

Никакого автоматического кода или алгоритма проставления этих порядковых номеров нет и быть не может. Если, конечно, Вы описали задачу именно так как она выглядит. Возможно некий алгоритм все-таки есть, просто Вы его не описали. В этом случае можно попытаться формализовать этот алгоритм (написать программу)
...
Рейтинг: 0 / 0
31.08.2004, 10:18
    #32672623
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в отчете
Насколько я понял должно быть так - сначала мужики, потом барышни и в обратном алфавитном порядке?
Тогда, если в базе есть отчество, то по его последним двум буквам можно разделить базу по половому признаку :-) На абсолютно, конечно, но бОльшую часть... Бюль-Бюль-Оглы не поддастся половой идентификации :-) Ну, а дальше - сортировка по именам.
...
Рейтинг: 0 / 0
31.08.2004, 10:25
    #32672642
sar99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в отчете
Я ПРЕДЛОЖИЛ ИСПОЛЬЗОВАТЬ ВРЕМЕННЫЙ ФАЙЛ ТОЛЬКО ПОТОМУ
ЧТО ИСТОЧНИК ВАМ НЕ ВСЕГДА ДОСТУПЕН (ЭТО МОЖЕТ БЫТЬ ЧУЖАЯ
ТАБЛИЦА)
ИТАК ПОДРОБНЕЕ:
ПУСТЬ В ВАШЕЙ ТАБЛИЦЕ АЛИАС <VTABL> ЕСТЬ ПОЛЕ IM ,ГДЕ
СОБСТВЕННО И РАСПОЛАГАЮТСЯ ВАШИ ИМЕНА
**** СОЗДАЕМ ВРЕМЕННУЮ ТАБЛИЦУ
SELECT 0
CREATE TABLE VRETBL ( SORT_ID N(2,0),IM C(20))
SELECT VTABL
GO TOP
DO WHILE.NOT.EOF()
VIM=IM
****** ДАЛЕЕ АНАЛИЗИРУЕТСЯ ИМЯ И ОПРЕДЕЛЯЕТСЯ ПОРЯДОК ВЫВОДА
****** ИМЕНИ В ОТЧЕТЕ
IF VIM=='ДИМА'
VSORT_ID=1
ELSE
**** И ТАК ДАЛЕЕ
ENDIF
SELECT VRETBL
APPEND BLANK
REPL SORT_ID WITH VSORT_ID,IM WITH VIM
SELECT VTABL
SKIP
ENDDO
***** TEПЕРЬ У ВАС ЕСТЬ ПОЛЕ SORT_ID ПО КОТОРОМУ МОЖНО
***** ИНДЕКСИРОВАТЬ ВРЕМЕННЫЙ ФАЙЛ И ВЫВЕСТИ ОТЧЕТ
SELECT VRETBL
INDEX ON SORT_ID TAG SORT_ID
GO TOP
****** ТЕПЕРЬ МОЖНО ПЕЧАТАТЬ ОТЧЕТ
****** НО ЕГО ПОЛЯ ДОЛЖНЫ БЫТЬ ПРИВЯЗАНЫ УЖЕ
****** К ПОЛЯМ ТАБЛИЦЫ VRETBL

ЕСТЕСТВЕННО ЕСЛИ В ОСНОВНОМ ИСТОЧНИКЕ ЕСТЬ ДРУГИЕ
НУЖНЫЕ ДЛЯ ОТЧЕТА ПОЛЯ ИХ НУЖНО ТАКЖЕ ПЕРЕНЕСТИ
ВО ВРЕМЕННЫЙ ФАЙЛ ПОДПРАВИВ КАК НАДО ЕГО СТРУКТУРУ.

ПРАВДА ЕСЛИ ЗАПИСЕЙ В ОТЧЕТЕ ОЧЕНЬ МНОГО ТАКОЙ МЕТОД
В ЛОБ СЛИШКОМ ТРУДОЕМОК (ПРАВДА ОБЫЧНО В ЭТОМ СЛУЧАЕ
ЕСТЬ ПОНЯТНЫЕ УСЛОВИЯ ПО КОТОРЫМ МОЖНО ВЫЧИСЛИТЬ
НУЖНЫЙ VSORT_ID)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Записи в отчете / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]