Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ClientDataSet - zapisi

[es] :: Pascal / Delphi / Kylix :: ClientDataSet - zapisi

[ Pregleda: 2457 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon ClientDataSet - zapisi16.09.2008. u 10:46 - pre 189 meseci

Imam 5 tabela i 5 ClientDataSet-ova.
Svaki ClientDataSet je vezan za pojedinu tabelu (podaci u dbGridu se prikazuju).
Sada kada napravim šesti ClientDataSet želim pomoću Query-a (ili kako to vec ide?)
dobiti u šestom dbGridu odnosno u šestom ClientDataSetu zapise iz svih 5 tabela pod
poljem sifra (Svaka tabela (od njih 5) ima polje -> sifra)!
Svaka kolona treba biti u odgovarajucem redu! Znaci da u ovom slučaju imam 5 redova!!

Odnosno kako u jednom clientDataSetu dobiti podatke iz 5. clientDataSetova (izvuci samo
po jedno polje (u mom slucaju sifru))?
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: ClientDataSet - zapisi16.09.2008. u 19:12 - pre 189 meseci
Jesi li probao:

select sifra from tablica1
union
select sifra from tablica2
union
select sifra from tablica 3


... i tako za svih 6
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: ClientDataSet - zapisi17.09.2008. u 07:16 - pre 189 meseci
Netreba mi union za svih 6, nego mi treba u šestom cds-u nalaziti se sve sifre iz preostalih cds-ova!

Probao sam, ali onda u ClientDataSetu (a on mi treba za napraviti report u Rave-u) dobijem
ovakve podatke:

U tablici1 imam: bis001, bis002, bis003, bis004.
U tablici2 imam: mor001, mor002.
U tablici3 imam: dij001.

tablica1 tablica2 tablica3
bis001 mor001 dij001
bis002 mor002 dij001
bis003 mor002 dij001
bis004 mor002 dij001

Ovdje fale jos dvije tablice, ali ovo je dovoljan primjer!

Muce me ova ponavljanaja u tablica2 i tablica3.
Trebala bi pisati 0 (nula), a na ovaj nacin se ponavljaju podaci!


 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: ClientDataSet - zapisi17.09.2008. u 07:33 - pre 189 meseci
Možda nisam dobro razumio, ali ako imaš kako si napisao:


U tablici1 imam: bis001, bis002, bis003, bis004.
U tablici2 imam: mor001, mor002.
U tablici3 imam: dij001.

Onda bir rezulat bio:

bis001
bis002
bis003
bis004
mor001
mor002
dij001

bez ponavljanja... ako se u samoj tablici ista šifra ponavlja nekoliko puta:

select distinct sifra from tablica

pošalji svoj sql
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: ClientDataSet - zapisi17.09.2008. u 08:39 - pre 189 meseci
Hvala na brzim odgovorima.
Ne razumijemo se bas najbolje, ali napredujemo! Hvala jos jednom

Da malo pojasnim svoj problem!
Imam 5 tabela (u IBExpert-u)! U svakoj od njih imam polje sifra!

Sada bi trebao napraviti neki report koji to lijepo sve printa!
Radim to pomocu Rave-a!
Da bi to napravio treba jedan clientDataSet koji u sebi sadrzi
sifre iz svih tablica (svaka tablica ima polje sifra)!
Bitan dio je to da nebudu sve sifre u jednom redu nego da se svaka
sifra nalazi u odgovarajucem redu.

select morcicistanje.sifra as morcici from morcicistanje
union
select dijamntninakitstanje.sifra as dijamantni from dijamntninakitstanje

pomocu ovoga sql-a dobio sam dio rijesenja, ali tu dolazi do problema, a to je
da se sve nalazi u jednoj koloni, a ja hocu da se zapisi nalaze u odgovarajucoj koloni.
Znaci, sifre morcica u morcicima, sifre dijamanata u dijamantniama!
Kako doci do toga??

Kako bi ti to dobio u gridu??? Eto, da malo olaksam!!

Jel sam sada mozda sta olaksao???

[Ovu poruku je menjao Markanto dana 17.09.2008. u 09:50 GMT+1]

[Ovu poruku je menjao Markanto dana 17.09.2008. u 10:52 GMT+1]
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: ClientDataSet - zapisi17.09.2008. u 14:03 - pre 189 meseci
> da se sve nalazi u jednoj koloni, a ja hocu da se zapisi nalaze u odgovarajucoj koloni.
> Znaci, sifre morcica u morcicima, sifre dijamanata u dijamantniama!

Ako dobro pratim, evo ti ideja kako se to može uraditi za nešto konkretnije treba više podataka:

SELECT
T1.SIFRA, T2.SIFRA...
FROM
TABELA1 T1
INNER JOIN TABELA2 T2
ON T2.POLJE = T1.POLJE
...

ili

SELECT (SELECT SIFRA FROM TABELA1 WHERE USLOV), (SELECT SIFRA FROM TABELA2 WHERE USLOV)...



 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: ClientDataSet - zapisi17.09.2008. u 20:01 - pre 189 meseci
ako su šifre vezane, join je ok, a ako nisu imaš dvije mogućnosti:

ako želiš dobiti šifru iz 1. tablice u 1-voj koloni, iz 2. u drugoj itd..

select tablica1.sifra as dijamatni, tablica2.sifra as morcici from tablica1, tablica2

ali... dobiješ

dijamanti morcici
---------------
1 1
1 2
1 3
2 1
2 2
itd.

ako napraviš:
select tablica1. sifra from tablica1
union
select tablica2.sifra from tablica2

dobiješ:

šifra
____
1
2
1
2
3

gdje su prvi 1,2 iz tablice1, a drugih 1,2,3 iz tablice2
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
79.101.144.*



Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 07:17 - pre 189 meseci
@Markanto

Koliko sam te razumeo, tebi treba ovo:
Citat:

bis001 mor001 dij001
bis002 mor002
bis003 mor003
bis004

Ako koristiš Firebird ili neki drugi DBMS, moje predlog je da napraviš proceduru u bazi koja će za svaku tabelu, kad prođe kroz nju, napraviti brojač i numerisati slogove. Potom, te tri tabele spajaš po tim brojevima i dobiješ ono što si tražio. Naravno, prilikom numerisanja u proceduri napraviš ORDER BY kako ti odgovara.

Ukoliko sam potrefio ono što ti treba, gore citirano, moj predlog je da pitanje prebaciš na forum za Baze ili za Firebird, PostgreSQL, etc. (koji već koristiš), te kreneš i kad zapne tražiš pomoć.

Pozdrav.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 07:28 - pre 189 meseci
franjo_tahi, Savkić i Miloš Baić hvala Vam na odgovorima!
Probat cu sada da vidim sta je od toga korisno u mom slucaju!

Javim se sa rezultatima!
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 07:42 - pre 189 meseci
SELECT (SELECT SIFRA FROM TABELA1 WHERE USLOV), (SELECT SIFRA FROM TABELA2 WHERE USLOV)...

Ovako nesto bi mi trebalo!!
Ali kako sa time zavrsiti (moze i sa ovim sql-om koji imamo gore)??
Kada ubacim ovo u IBExpert : SELECT (SELECT SIFRA FROM morcicimodel), (SELECT SIFRA FROM unikatninakitmodel)

javlja mi grešku:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command.

Kako zavrsiti ovo (end)??
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.gs1hr.org.



+1 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 10:21 - pre 189 meseci
to ti ne bude radilo...

kako kaže Baić, jedino rješenje je da napišeš store proceduru. Pogledaj po forumima, ima puno prijemjera. sada nemam vremena da ju pišem, ako do naveće ništa ne smisliš, probat čemo ju napisati.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 14:41 - pre 189 meseci
> Ali kako sa time zavrsiti (moze i sa ovim sql-om koji imamo gore)??
> Kada ubacim ovo u IBExpert : SELECT (SELECT SIFRA FROM morcicimodel), (SELECT SIFRA FROM unikatninakitmodel)

U ovakvom kveriju subselecti moraju vratiti tačno jedan slog, zato moraš postaviti i dodatni uslov koji će to uraditi, taj dodatni uslov se uglanom vezuje za glavnu tabelu u SELECT upitu

SELECT
(SELECT FROM ... pomoćna tabela gde se uslov odnosi na neko polje iz glavne)
FROM
TABLELA -- ovo je glavna tabela

Pošalji koja polja su u igri u tim tabelama koje ti trebaju pa ćemo moći više da pomognemo.
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 14:42 - pre 189 meseci
evo ti porcedure za Firebird pa si prilagodi.
Vjerojatno bi se dalo napisati ljepše i bolje, ovako mi je bilo najbrže.

Pozivaš ju iz selecta: "SELECT * FROM PRIMJER"

vraća onoliko redaka koliko ima šifru u najvećoj tablici, ako nema podatka za manju tablicu - vraća null

meni se tablice zovu: KALKULACIJA i ARTILKI, a field-ovi: ID. Ti stavi svoje.

(Kad bih znao kako okačiti file uz poruku...)

SET TERM ^ ;

CREATE OR ALTER PROCEDURE PRIMJER
returns (
pod1 integer,
pod2 integer)
as
declare variable maxpod1 integer;
declare variable maxpod2 integer;
declare variable ppod1 integer;
declare variable ppod2 integer;
begin
PPOD1 = 0;
PPOD2 = 0;
select max(id) from kalkulacija into :MAXPOD1;
SELECT MAX(ID) FROM ARTIKLI INTO :MAXPOD2;

SELECT FIRST 1 ID FROM KALKULACIJA ORDER BY ID INTO :PPOD1;
SELECT FIRST 1 ID FROM ARTIKLI ORDER BY ID INTO :PPOD2;
WHILE ((PPOD1 IS NOT NULL) OR (PPOD2 IS NOT NULL)) do
begin
POD1 = PPOD1;
POD2 = PPOD2;
SUSPEND;
if (POD1 < MAXPOD1) then SELECT FIRST 1 ID FROM KALKULACIJA WHERE ID > :PPOD1 ORDER BY ID INTO :PPOD1; ELSE PPOD1 = NULL;
if (POD2 < MAXPOD2) then SELECT FIRST 1 ID FROM ARTIKLI WHERE ID > :PPOD2 ORDER BY ID INTO :PPOD2; ELSE PPOD2 = NULL;
END
/* Procedure Text */
end^

SET TERM ; ^

GRANT SELECT ON KALKULACIJA TO PROCEDURE PRIMJER;

GRANT SELECT ON ARTIKLI TO PROCEDURE PRIMJER;

GRANT EXECUTE ON PROCEDURE PRIMJER TO SYSDBA;
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 15:25 - pre 189 meseci
Meni trebaju sifre iz morcicimodel i iz unikatninakitmodel tablice!
Ovo je odgovor na Savkicevo pitanje!

Znaci iz dvije tablice mi treabaju sifre u jednoj tablici!

U clientdatasetu (fields -> morcicisifre i unikatni_sifre ).
Trebam napuniti taj cds da bi podatke prikazao u dbGridu!!
Ovo mi treba samo radi Rave report-a!
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-a-1.sezampro.yu.



Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 16:40 - pre 189 meseci
@franjo_tahi

Ne bi bilo loše da središ poruku, npr. da kod procedure razdvojiš (izdvojiš kod) od teksta koji si pisao, bilo bi preglednije.

@Markanto

Za izveštaje, možeš koristiti procedure, nekad su stvarno moćna alatka da se reši problem. U suštini ih izbegavam, ali dešava se da rešavaju kompleksnije probleme. Napravi proceduru koja ti je data, pozovi je i dataset koji dobiješ prosledi RAVE - u. Rezultat ćeš dobiti kao da si otvorio neku baznu tabelu (master file).
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 17:07 - pre 189 meseci
> Meni trebaju sifre iz morcicimodel i iz unikatninakitmodel tablice!
> Ovo je odgovor na Savkicevo pitanje!
> Znaci iz dvije tablice mi treabaju sifre u jednoj tablici!

Opet nisi ništa rekao, pošalji kompletne definicije tih tabela (takozvani metadata) i objasni kako su te dve tabele vezane (šta im je zajedničko polje).
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: ClientDataSet - zapisi18.09.2008. u 19:59 - pre 189 meseci
Kod nisam sredio, napisao sam proc. na brzaka, copy-paste, pa kako je ispalo.

1. Nazive tabela zamjeni sa svojim nazivima...
2. Naziv Fielda (ID) zamjeni svojim nazivom (sifra ili kako već)
3. Ako imaš više od 2 tabele, dodaj po istom principu kako je napravljeno za dvije

Ovo sam isprobao i radi, kod mene vraća;

POD1 POD2
--------------
1 0
2 1
3 2
7 3
8 <null>
9 <null>
....

što je istina. U tabeli KALKULACIA imam 50-tak zapisa, a u tabeli ATIKLI 4 (testna baza)

Ako i dalje nije jasno, predlažem neku knjigicu za SQL...
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: ClientDataSet - zapisi19.09.2008. u 07:15 - pre 189 meseci
Imao sam problem, a to je dali se moze iz pet tabela
koje imaju izmedju ostaloga i polje sifra, sve sifre iz
tih pet tabela staviti u jednu tabelu.
Preko sql-a to ide malo teze, skoro pa da je nemoguce.
To mi je i u jednu ruku bilo pitanje jer sam se htio uvjeriti dali
se to moze napraviti preko sql-a direktno ili moram to napraviti
rucno preko coda i tako popunjavati clientDataSet.

Eto, hvala Vam svima na odgovorima!
Cujemo se kasnije sa Vec nekom drugom temom!
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: ClientDataSet - zapisi

[ Pregleda: 2457 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.