[ peddja_stankovic @ 05.03.2005. 20:39 ] @
| imam dve dbf baze razlicitih struktura, na primer:
prvi dbf
1 10 15
1 12 10
2 9 18
3 4 6
3 5 8
.....
drugi dbf
1 18 19 20
2 3 6 7
3 8 19 10
hoccu deo fox koda koji bi generisao text file koji bi povezao prve kolone na sledeci nacin:
1 10 15
1 12 10
1 18 19 20
2 9 18
2 3 6 7
3 4 6
3 5 8
3 8 9 10
(da posle kecceva iz prve baze dodje kec iz druge baze itd...)
|
[ broker @ 05.03.2005. 22:53 ] @
Spajanje dve tabele radis komandom SELECT .. UNION
Medjutim da bi ih spojio treba da budu istih struktura. Ako nisu istih struktura moras napraviti istu strukturu tako sto ces iz obe tabele uzeti ona polja koja ti trebaju a ako u jednoj tabeli nedostaje neko polje koje ti treba iz druge onda u SELECY to polje napravis.
Nisi napisao strukturu tvojih tabel aali ako pretpsotavimo da prva tabela ima polja P11, P12, P13 a druga tabela ima polja P21, P22, P23 i P24 Onda upit izgleda otprilike ovako (pisem napamet)
SELECT
p11 as p1,
p12 as p2,
p13 as p3,
0 as p4
FROM t1
UNION
SELECT
p21 as p1,
p22 as p2,
p23 as p3,
p24 as p4
FROM t2
sa ORDER BY resavas redosled polja u dobijenoj tabeli.
Pedja
[ peddja_stankovic @ 06.03.2005. 05:49 ] @
Hvala za ovo, mogu tek sutra da probam na poslu. Uzgred, nije neophodno da pravim novu bazu. Dovoljno je da samo ide na stampu. Znao bih da uradim ovo u svakom drugom programu ali slab sam sa foxom. Ima li neki WHILE pa PRINT dok je kec iz prve baze pa PRINT kec iz druge baze, pa dvojka itd....
[ rms @ 05.04.2005. 16:33 ] @
Ne mora unija može nešto slično ovome:
Code:
use tabela1 in 0
use tabela2 in 0
select tabela1
go top
select tabela2
go top
do while .t.
if tabela1.polje1 <= tabela2.polje1
* ??? komanda salje sadrzaj direktno na stampac
???tabela1.polje1+" "+tabela1.polje2+" "+tabela1.polje3
else
???tabela2.polje1+" "+tabela2.polje2+" "+tabela2.polje3+" "+tabela2.polje4
endif
select tabela1
if !eof()
skip
endif
select tabela2
if !eof()
skip
else
exit
endif
enddo
close tables all
[ broker @ 05.04.2005. 23:29 ] @
U pravu si, sto prosto kad moze komplikovano :)
[ rms @ 06.04.2005. 12:38 ] @
Kolega je nov u Foxu, pa čisto da vidi šta je sve moguće...

a napravih i grešku pa evo ispravke:
Code:
m.bKrajTabele1=.f.
m.bKrajTabele2=.f.
use tabela1 in 0
use tabela2 in 0
select tabela1
go top
select tabela2
go top
do while !m.bKrajTabele1 and !m.bKrajTabele2
select tabela1
if (!m.bKrajTabele1 and (tabela1.polje1 <= tabela2.polje1)) or m.bKrajTabele2
???tabela1.polje1+" "+tabela1.poljen
if !eof()
skip
loop
else
m.bKrajTabele1=.t.
go bottom
endif
endif
select tabela2
if (!m.bKrajTabele2 and (tabela1.polje1 > tabela2.polje1)) or m.bKrajTabele1
???tabela2.polje1+" "+tabela2.poljen
if !eof()
skip
loop
else
m.bKrajTabele2=.t.
go bottom
endif
endif
enddo
close tables all
return
Po nekad mi nedostaje Foxova fleksibilnost obrade kod ostalih baza.

Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.