Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение полей циклом / 13 сообщений из 13, страница 1 из 1
14.11.2008, 09:45
    #35653476
gromozeka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Люди добрые прошу вас помогите... Есть табличка в ней даные, как заполнить с помощью цикла или не цикла поле "p" числами от 01 до 28 , 01,02,03,04,05,06,07,08,...28. но при этом не один раз, а чтоб это действие повторялось на всю длину таблицы.
...
Рейтинг: 0 / 0
14.11.2008, 09:54
    #35653497
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
gromozeka2007,


значение поля p вычисляется по формуле

number = i % 28 + 1

где i - порядковый номер записи
...
Рейтинг: 0 / 0
14.11.2008, 11:18
    #35653777
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Анатолий Широковзначение поля p вычисляется по формуле

number = i % 28 + 1

где i - порядковый номер записи
В этом случае нумерация начнется с 2. Значение 1 вообще никогда не будет получено.

Что-то делать с результатом нужно только для значения i кратного 28. Для всех остальных случаев надо оставить полученное значение. Причем прибавление 1 проблему не решает

Другими словами, надо проверить результат на ноль и в этом случае присвоить значение 28.

Код: plaintext
number = EVL(MOD(i, 28 ), 28 )
...
Рейтинг: 0 / 0
14.11.2008, 11:20
    #35653789
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Поторопился. Был не прав.

Значение 1 будет, конечно, только порядок нумерации будет не совмсем правильный. Сначала 2, 3, 4,... и в конце 1.
...
Рейтинг: 0 / 0
14.11.2008, 11:22
    #35653800
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
ВладимирМПоторопился. Был не прав.

Значение 1 будет, конечно, только порядок нумерации будет не совмсем правильный. Сначала 2, 3, 4,... и в конце 1.

Опс, я исходил из начала нумерации с 0.
...
Рейтинг: 0 / 0
14.11.2008, 12:00
    #35653946
gromozeka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Шото я не пойму ... Как мне заполнить это поле типа Character
...
Рейтинг: 0 / 0
14.11.2008, 12:04
    #35653956
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Как один из вариантов:

lnNum=0

repl p with trans(GetNum(@lnNum)) all

func GetNum
lpara lnNum
lnRetu = lnNum % 28 + 1

if lnNum=28
lnNum=0
else
lnNum=lnNum+1
endif


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.11.2008, 12:06
    #35653961
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
> Как один из вариантов:
>
> lnNum=0
>
> repl p with trans(GetNum(@lnNum)) all
>
> func GetNum
> lpara lnNum
> lnRetu = lnNum % 28 + 1
>
> if lnNum=28
> lnNum=0
> else
> lnNum=lnNum+1
> endif

НЕ дописал вот это:

return lnRetu
endfunc


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.11.2008, 12:12
    #35653979
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
PS Там остаток и не нужен вовсе :)

Ну или даже можно вот так:

lnNum=0

repl p with trans(GetNum(@lnNum)) all

func GetNum
lpara lnNum
if lnNum=28
lnNum=1
else
lnNum=lnNum+1
endif
return lnNum
endfunc


PPS Почему не следует брать остаток от RecNo() - потому что иначе будут
выпадения нумерации при наличии удаленных записей.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.11.2008, 12:14
    #35653985
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
gromozeka2007Шото я не пойму ... Как мне заполнить это поле типа Character
Код: plaintext
1.
2.
select MyTab
REPLACE ALL PADL(EVL(MOD(Recno(), 28 ), 28 ), 2 ,'0')
...
Рейтинг: 0 / 0
14.11.2008, 12:15
    #35653991
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Опять поторопился
Код: plaintext
1.
2.
select MyTab
REPLACE ALL MyField WITH PADL(EVL(MOD(Recno(), 28 ), 28 ), 2 ,'0')
...
Рейтинг: 0 / 0
14.11.2008, 12:19
    #35654009
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Соответственно циклом (если есть удаленные записи)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
LOCAL lnNextI
lnNextI =  0 

select MyTab
SCAN
    lnNextI = m.lnNextI +  1 
    if (m.lnNextI >  28 )
        m.lnNextI =  1 
    endif
    REPLACE MyField WITH PADL(m.lnNextI, 2 ,'0')
ENDSCAN
...
Рейтинг: 0 / 0
14.11.2008, 12:34
    #35654068
gromozeka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение полей циклом
Всем большое спасибо!!! Так как написал Ренат ПОЙДЕТ...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение полей циклом / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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