powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / sozdanie noviy tablitsu
9 сообщений из 9, страница 1 из 1
sozdanie noviy tablitsu
    #32838277
novichek_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pomoqite pojalusta, ya tolko uchu foxpro.I eto zadacha dlya mne ochen trudno:
Yest tablitsa: t.dbf
Na kajdiy kod (n) sootvetstvuet 5 zapisey i v kajdom 5 zapise tolko 30 znzchenie yest(#0).
Zadacha takaya: nado sozdat novuyu tablitsu. Na novom tablitse (s.dbf) na kajdiy kod (n)
doljno sootvetstvuet 1 zapis i vse znachenie ot t.dbf (yesli #0) zdec doljna kak s1,s2,s3...s30
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32838488
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтото ничего не понял... Т.е. У нас есть таблица с записью из тридцати одного поля - одно KOD и остальные 30 - числовые значения? Нам надо создать другую таблицу тойже структуры в которой для каждого значения KOD мы выберем из первой толтко ненулевые значения? Впринципе это просто. Но что делать если ненулевых у нас в сумме больше или меньше 30-ти. Или в разных записях с одним KOD в одном и том же поле будут ненулевые значения?
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32838579
novichek_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Strukturu 1-y i 2-y tablitsi raznie. 2-ya tablitsa (s.dbf) -kak Vi qovorite ,31 pole,iz nix 1 kod (pole 'n'),ostolnie 30 chislovoe znachenie.Eto tablitsa s perva pusto.
1-ya tablitsa (t.dbf) -iz 13 pole,1-y kod (pole 'n'),ostalnie 12 pole chislovoe znachenie.
Na 21-m tablitse na kajdiy kod (n) sootvetstvuet 5 zapisey i v kajdom 5 zapise tolko 30 znzchenie yest(#0). Na novom tablitse (s.dbf) na kajdiy kod (n) doljno sootvetstvuet 1 zapis i vse znachenie ot t.dbf (yesli #0) zdec doljna kak s1,s2,s3...s30
T.E., iz 1-y tablitsa (t.dbf) kajdiy 5 zapis doljno pomestitsa na 2-m tablitse (s.dbf)
kak 1 zapis. (isklyuchaya =0)
Nenulovix znachenie vseqda=30
P.S. Prilojit fayl chtoto ne poluchaetsa.
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32839288
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
USE t.dbf ALIAS t IN  0 
USE s.dbf ALIAS s IN  0 

SELECT t
DIMENSION a_s( 31 )
DO WHILE .not.EOF()
   STORE  0  TO a_s
   
   a_s( 1 )=t.n
   j= 2 
   DO WHILE t.n = a_s( 1 )
      SCATTER TO a_t
      
      FOR i=  2  TO  13 
         IF a_t(i) <>  0 
            a_s(j)=a_t(i)
            j=j+ 1 
         ENDIF
      ENDFOR
      
      SKIP
   ENDDO
   INSERT INTO s FROM ARRAY a_s
ENDDO

Это естествено в предположении что записи с одинаковыми кодами лежат подряд и индексы отсуствуют.
Если не подряд то надо создавать соотвествующие индексы и добавить в код открытие индексных файлов и установку активных тегов
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32839379
novichek_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ya reshil eta zadachu vot tak.Posmotrite pojalusta,yesli chto ne tak obyasnite:
***********************************
clos data
CLEA
sele 1
use t
sele 2
use s
s='s'
sele 1
for i=1 to reccount()
n1=n
m=2
for z=1 to 5
for k=2 to 13
f=field(k)
f1=&f
if f1<>0
sele 2
ll=field(m)
REPL &ll WITH f1
m=m+1
sele 1
endi
endf
sele 1
if eof()
exit
else
sele 1
skip 1
endi
endf
if eof()
exit
else
sele 2
skip 1
endi
sele 1
endf
*******************
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32839437
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно пойти. Только это вариант когда вторая таблица уже создана и имеет нужное количесво записей, тогда ты просто перепрописываешь значение. В общем случае не мешелобы сначала удалить из нее все и добовлять записи поновой - тогда перед циклом с REPLACE надо сначала добавить пустую - APPEND BLANK.

Да, у меня там во втором DO WHITE описка - должно быть конечно:

Код: plaintext
DO WHILE .not.EOF().AND.t.n = a_s( 1 )
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32839498
novichek_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sposibo, Bum! Vash kod qarazdo luchshe chem moy.Budu ispolzovat Vash kod.
No ,seychas u menya yeshyo odno zadacha:
Iz etoy tablitsu (t.dbf) nado yeshyo 1 tablitsu sozdavat:(d.dbf)
Eta tablitsa doljna bit iz dvux 'kolonok'

Na 1-m chaste tablitsu doljna naxoditsa zapisi nachinaya ot '00000001' s intervalami 200.
00000001
00000201
00000401
00000601
00000801
......
......
do kontse tablitsu.
potom nacinaya ot '00000002' s intervalami 200.

00000002
00000202
00000402
00000602
00000802
......
......
do kontse tablitsu.
potom nacinaya ot '00000003' s intervalami 200. I T.D


Na 2-m chaste tablitsu doljna naxoditsa zapisi nachinaya ot '00000101' s intervalami 200.

00000101
00000301
00000501
00000701
00000901
......
......
do kontse tablitsu.

potom nacinaya ot '00000102' s intervalami 200.

00000102
00000302
00000502
00000702
00000902
......
......
do kontse tablitsu.

potom nacinaya ot '00000103' s intervalami 200. I T.D
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32839565
novichek_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A Vashem primere kak mojno sdelat tak chto,snachala na noviy tablitsu dobavlyalas pole nacinaya ot 'T1' do 'T6'(15 znachenie budet:s1,s2...s15), potom nacinaya ot 'T7' do 'T12'( toje 15 znachenie budet:s16,s17...s30) ?
...
Рейтинг: 0 / 0
sozdanie noviy tablitsu
    #32840474
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страные у вас какието задачи. Не СУБД-шные

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
USE t.dbf ALIAS t IN  0 
USE s.dbf ALIAS d IN  0 

SELECT t

DIMENSION a_d( 2 )
m.n=''
m.start= 0 
SCAN ALL
   m.start=m.start+ 101 
   IF m.n <> t.n
      m.n=t.n
      FOR i= 1  TO RecCount('t')
         a_d( 1 )=Val(t.n)+(i- 1 )* 200 
         a_d( 2 )=m.start+(i- 1 )* 200 
         
         INSERT INTO d FROM ARRAY a_d
      ENDFOR
   ENDIF
ENDSCAN

авторA Vashem primere kak mojno sdelat tak chto,snachala na noviy tablitsu dobavlyalas pole nacinaya ot 'T1' do 'T6'(15 znachenie budet:s1,s2...s15), potom nacinaya ot 'T7' do 'T12'( toje 15 znachenie budet:s16,s17...s30) ?
За один проход у меня не получается:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
USE t.dbf ALIAS t IN  0 
USE s.dbf ALIAS s IN  0 

SELECT t
DIMENSION a_s( 31 )
DO WHILE .not.EOF()
   STORE  0  TO a_s
   
   a_s( 1 )=t.n
   j= 2 
   DO WHILE t.n = a_s( 1 )
      SCATTER TO a_t

      FOR i=  2  TO  7 
         IF a_t(i) <>  0 
            a_s(j)=a_t(i)
            j=j+ 1 
         ENDIF
      ENDFOR
      
      SKIP
   ENDDO
   INSERT INTO s FROM ARRAY a_s
ENDDO

SELECT s
GO TOP

SELRCT t
GO TOP
DO WHILE .not.EOF()
   SELECT s
   SCATTER TO a_s
   SELECT t
   
   a_s( 1 )=t.n
   j= 16 
   DO WHILE t.n = a_s( 1 )
      SCATTER TO a_t

      FOR i=  8  TO  12 
         IF a_t(i) <>  0 
            a_s(j)=a_t(i)
            j=j+ 1 
         ENDIF
      ENDFOR
      
      SKIP
   ENDDO

   SELECT s
   GATHER FROM a_s
   SKIP
   SELECT t
ENDDO

Нельзя писать сходу из головы, вот так первый будет правильно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
USE t.dbf ALIAS t IN  0 
USE s.dbf ALIAS s IN  0 

SELECT t
GO TOP

DIMENSION a_s( 31 )
DO WHILE .not.EOF()
   STORE  0  TO a_s
   
   a_s( 1 )=t.n
   j= 2 
   DO WHILE .not.EOF().AND.t.n = a_s( 1 )
      SCATTER TO a_t
      
      FOR i=  2  TO  13 
         IF a_t(i) <>  0 
            a_s(j)=a_t(i)
            j=j+ 1 
         ENDIF
      ENDFOR
      
      SKIP
   ENDDO
   INSERT INTO s FROM ARRAY a_s
ENDDO
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / sozdanie noviy tablitsu
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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