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

Nocna mora sa Accesom (ujedno izvinjenje)

[es] :: Baze podataka :: Nocna mora sa Accesom (ujedno izvinjenje)

[ Pregleda: 4186 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bobiris
Slobodan Blagojevic
Čuvanje dece (četvoro malih) kod
kuće.
Sabac

Član broj: 2956
Poruke: 181
212.124.182.*



Profil

icon Nocna mora sa Accesom (ujedno izvinjenje)02.07.2003. u 13:37 - pre 252 meseci
Pre svega izvinjenje clanovima foruma i administratoru (dobio sam E-mail kritiku, pa se stidim) zbog neumesne poruke koja je s pravom izbrisana. Greska je do mene, pocetnik sam, a imam mnogo problema, nemam dokumentacije (a ni para da kupim knjige). Ali zato imam 5 (petoro) dece i dosta volje da nesto naucim, pa onda sa tim znanjem zaradim za mene i decu. Toliko o tome, jos jednom se izvinjavam, nece se vise ponoviti!

A sada o "Nocnoj mori":

Imam problem sa Query-em u Accesu i Null vrednoscu, i kako god, - nista!

Napravio sam Qerry sa sub-querry-em koji izgleda otprilike ovako:

SELECT DISTINKTROW clanovi.ime (Select rezultati.vreme FROM rezultati WHERE(clanovi.ID=rezultati.clanovi_ID AND rezultati.godina="1" AND rezultati.vrsta="1") As SS2002, (Select rezultati.vreme FROM rezultati WHERE(clanovi.ID=rezultati.clanovi_ID AND rezultati.godina="1" AND rezultati.vrsta="2") As SJ2002, (Select rezultati.vreme FROM rezultati WHERE(clanovi.ID=rezultati.clanovi_ID AND rezultati.godina="1" AND rezultati.vrsta="3") As KP2002
FROM clanovi LEFT JOIN rezultati ON clanovi.ID = rezultati.clanovi_ID
ORDER BY clanovi.reg, clanovi.drus, clanovi.mat_br;

"rezultati.vrsta" su u combo box-u, otuda vrednost "1" za takmicenje "Savez Srbije seniori", "2" za "Savez Srbije juniori" itd.
"rezulatati.godina" u takodje u combo box-u i otuda vrednost "1" za 2002-gu, "2" za 2003-cu i tako dalje.

... i sve to lepo odradi, i budem srecan! ... i dobijem tri colone: SS2002, SJ2002 i KP2002 sa vrednostima (ako ih ima). Ako ih nema, dobijem prazno polje.
E, to prazno polje me sada muci u Formi, jer:

U kucicama za ova tri takmicenja dobijem rezultate za odredjenog clana tamo gde ih ima, a tamo gde ih nema, polje je prazno.
Sada hocu da u kucicu "ukupno", koja je ispod ovih po vertikali, saberem sve rezultate, i tu nastaje problem.
Ako ukucam: "=[SS2002]+[SJ2002]+[KP2002] - sto je normalno, dobijem sledece:

AKO U SVA TRI POLJA IMA REZULTAT, DOBIJEM KOREKTAN ZBIR
AKO BAR U JEDNOM OD OVA TRI POLJA NEMA REZULTAT (sto se dogadja cesto), NE DOBIJEM NIKAKAV REZULTAT! Polje ostane prazno, ne sabere ni ona dva rezultata koji postoje.

Kako se ovo resava (u Formi ili u Querry-u)?

Unapred hvala!

Boban (otac šestoro dece).
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)02.07.2003. u 13:48 - pre 252 meseci
Slobodane, prvo svaka čast i nek' je živo i zdravo svih pet, a i svi ostali. Za Access ćemo lako.
Vidi funkciju nz u Access helpu.

Dakle staviš jedno novo polje u query, nešto poput:

sumaPolja:nz([SS2002],0)+nz([SJ2002],0)+nz([KP2002],0)

Ako je ispitivano polje null, nz će vratiti vrednost 0, pa će sabiranje biti ispravno (pod uslovom da želiš da null zameniš sa 0).

pozdrav :)
Commercial-Free !!!
 
Odgovor na temu

bobiris
Slobodan Blagojevic
Čuvanje dece (četvoro malih) kod
kuće.
Sabac

Član broj: 2956
Poruke: 181
*.verat.net



Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)02.07.2003. u 13:56 - pre 252 meseci
Hvala, za koji dan stize i Ognjen, to nisam otkrio!

Sto se tice Nz, probao sve, ali izgleda da ne znam.

Naime:

Nz ( [SS2002] «Expr» ; «valueifnull»)

[SS2002] je polje koje treba da ima ili nema vrednost. Kada ga ubacim tu gde jeste, Acces mi ubacuje gornje: <<Expr>>; <<valueifnull>>

ovo <<Expr>> ne razumem. Sta tu da ukucam?
Boban (otac šestoro dece).
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)02.07.2003. u 13:58 - pre 252 meseci
Gde ubacuješ?

Ubaci u query novo polje baš onako slovo po slovo kako sam ti napisao i radi provereno.

I ne zaje***** sa tom decom.
Commercial-Free !!!
 
Odgovor na temu

bobiris
Slobodan Blagojevic
Čuvanje dece (četvoro malih) kod
kuće.
Sabac

Član broj: 2956
Poruke: 181
212.124.182.*



Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)02.07.2003. u 14:41 - pre 252 meseci
Uradio, dodao polje u Querry, bas onako, slovo po slovo, kako si napisao.
Kada hocu da napustim polje, dobijem poruku:

"You omitted an operand or operator, you entered an invalid character or comma, or you entered text without surounding it in quotation marks"

Istu poruku dobijem i u Formi, kada kao Expressen dodam isti kod (za znakom "=" ispred)

??

....
Jelena ima 25 godina, Milica 5, Mihailo 2, Ivana 13 meseci....
Boban (otac šestoro dece).
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)02.07.2003. u 15:31 - pre 252 meseci
Evo baze uploadovane ovde pa pogledaj Query1.
Commercial-Free !!!
Prikačeni fajlovi
 
Odgovor na temu

bobiris
Slobodan Blagojevic
Čuvanje dece (četvoro malih) kod
kuće.
Sabac

Član broj: 2956
Poruke: 181
212.124.182.*



Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)03.07.2003. u 03:19 - pre 252 meseci
Eh, tek sada primetih da sam, ustvari, glup!

Ne muci mene sto ne mogu da pretvorim prazno u nesto, nego STO POLJE UOPSTE NE POSTOJI!

Sve je to dosta komplikovano:

Radi se o drustvu golubara, koje ima 15000 clanova. Oni hoce da prate rezultate sa 15 razlicitih takmicenja, u sledecih 10 godina! 15 x 10 = 150 polja (kucica) mi treba u izvestaju-kartici clana, jer hoce aman zaman da sve bude na jednom papiru, poslagano po godinama i vrstama takmicenja - znaci kao tabela.

Tabelu clanovi sam napravio i uneo podatke. Napravio sam i formu za unos podataka, sve je to u redu. Kada sam smisljao kako da napravim izvestaj, ja sam napravio jednu tabelu koja se zove "rezultati" i ima 4 polja: ID, godina, vrsta i vreme. Posto od tih 15000 clanova samo njih 1000-1500 ucestvuje na takmicenjima, bilo mi je glupo da pravim tabelu sa 150 polja da bih odatle vukao podatke za izvestaj, pa preko forme za unos podataka tu "malu" tabelu - "rezultati" punim sa podacima za one clanove koji se takmice.

Problem: kao sto rekoh, oni hoce izvestaj "na jednom papiru", znaci tabelu sa 10 kolona i 15 redova, i jos jednu takvu, jer treba za svako takmicenje, za svaku godinu da se izracuna i broj osvojenih bodova, i to sve da stoji na jednom A4 papiru. To je fizicki izvodljivo, i ja sam te tabele vec napravio.

Kada hocu po vertikali, za, recimo, 2002 godinu da saberem rezultate iz, recimo, 4 od 15 takmicenja, ja ne znam koja su takmicenja u pitanju, tj. na kojima ce neko ucestvovati i ostvariti rezultat, pa znaci, moram da saberem svih 15 po vertikali, da bih dobio zbir. E, tu je sada problem, jer kao sto na pocetku rekoh, podatke za querry vucem iz one male table, u kojoj su samo oni koji su ostvarili rezultate, u nekom takmicenju jesu, a u nekom se nisu ni takmicili, pa dobijam problem da polja sa podatkom uopste nema. Treba mi verovatno nesto kao "exists" ili tako nesto. Evo sta sam ja uradio:

SELECT DISTINCTROW clanovi.ID, clanovi.ime, clanovi.ptt, clanovi.mesto, (SELECT IIf(IsNull(rezultati.vreme), 0, rezultati.vreme) FROM rezultati WHERE (clanovi.ID=rezultati.clanovi_ID And rezultati.godina="1" And rezultati.vrsta="1")) AS SS2002
FROM clanovi LEFT JOIN rezultati ON clanovi.ID = rezultati.clanovi_ID
ORDER BY clanovi.reg, clanovi.drus, clanovi.mat_br;

Ovaj podupit (select IIf....) as ss2002 (savez seniora za 2002 godinu), pa onda "As sj2002" (savez juniora za 2002...) i tako dalje, znaci 150 podupita u jednom Qerry-u. Nisam ni znao da to moze da odradi, kod je dugacak otprilike 3 stranice pune teksta.

Ovo IIf(IsNull.. mi ustavi i ne treba, ti si u pravu, Nz radi isto, ali ako postoji polje koje je prazno. Ja sam taj Nz, isto kao i ovaj IIf(IsNull...), primenjivao kao sto vidis, da bih dobio 150 podupita i proverio da li u njima ima podataka, a u stvari, polje uopste ne postoji.

Evo, posle 20 dana, tek sad ne znam sta i kako dalje.

Imas li neku ideju, neko "exists" iz rukava ili tako nesto. Probao sam "exists" unutar podupita, ne radi:

(SELECT IIf(IsNull(rezultati.vreme), 0, rezultati.vreme) FROM rezultati WHERE EXISTS (clanovi.ID=rezultati.clanovi_ID And rezultati.godina="1" And rezultati.vrsta="1")) AS SS2002

Ako imas vremena i volje, pomozi, Bog ce te blagosloviti.
Boban (otac šestoro dece).
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)03.07.2003. u 07:55 - pre 252 meseci
Ne mogu da radim za tebe i previše se udubljujem, ali svakako mogu malo da pomognem. Nadam se da će ovo pomoći - kod dodaj u neki modul u Modules :)

Code:

Public Function pFieldExists(sTable As String, sField As String) As Boolean
  On Error Resume Next
  pFieldExists = IsObject(CurrentDb.TableDefs(sTable).Fields(sField)) = True
End Function


Sad u upitima možeš da koristiš ovu funkciju ovako:
pFieldExists("table1","Ime")

što vraća true ili false ako polje 'Ime' postoji/ne postoji u tabeli 'table1'. Dakle ovo može u kombinaciji sa IIf...

Pozdrav :)
Commercial-Free !!!
 
Odgovor na temu

bobiris
Slobodan Blagojevic
Čuvanje dece (četvoro malih) kod
kuće.
Sabac

Član broj: 2956
Poruke: 181
212.124.182.*



Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)03.07.2003. u 13:19 - pre 252 meseci
Mnogo ti hvala, jos te molim samo da mi sredis ovaj upit:

KP2002: (SELECT IIf(IsNull(rezultati.vreme), 0, rezultati.vreme) FROM rezultati WHERE (clanovi.ID=rezultati.clanovi_ID And rezultati.godina="1" And rezultati.vrsta="3"))

ovde negde sada treba da ubacim ono sto si mi napisao:
pFieldExists("table1","Ime")

odnosno kod mene treba da bude:

pFieldExists("rezultati","vreme"), pa kod treba nekako ovako da izgleda

KP2002: (SELECT pFieldExists("rezultati","vreme")IIf(IsNull(rezultati.vreme), 0, rezultati.vreme) FROM rezultati WHERE (clanovi.ID=rezultati.clanovi_ID And rezultati.godina="1" And rezultati.vrsta="3"))

ali OVAKO NE RADI, znaci treba ga nekako prekomponovati.



pozdrav i jos jednom HVALA!


Boban (otac šestoro dece).
 
Odgovor na temu

vbraca
Bratislav Velickovic
Administrator informacionih sistema
Kragujevac

Član broj: 4956
Poruke: 230
*.ptt.yu

Sajt: velickovic.net


Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)06.07.2003. u 11:21 - pre 252 meseci
A da ti ipak lepo promenis dizajn tabele rezultata i za polje "broj_bodova" kao default stavis 0 sa Required opcijom na Yes - To bi ti resilo bar probleme sa Null izrazom.

Pozdrav,
Bratislav Velickovic
hhtp://blog.velickovic.net
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)06.07.2003. u 16:48 - pre 252 meseci
Da, jednostavno treba malo da izmeni dizajn tabele rezultati - dodati polje osvojeni_bodovi koje ako je 0 onda se ni ne ubacuje u istu. Posle se potrebne sume lako dobivaju funkcijom SUM.
Commercial-Free !!!
 
Odgovor na temu

bobiris
Slobodan Blagojevic
Čuvanje dece (četvoro malih) kod
kuće.
Sabac

Član broj: 2956
Poruke: 181
212.124.182.*



Profil

icon Re: Nocna mora sa Accesom (ujedno izvinjenje)07.07.2003. u 05:04 - pre 252 meseci
Da, ali šta ako nije 0? Stvar je u tome što niko neće da upiše te bodove, već ja moram da ih izračunam, dodajući određen broj poena (za svako takmičenje različit) i sabirajući te poene za rezultatom, npr. 8,45 časova + 5 poena = 13,45 bodova. Ako stavim default=0, svi će biti nula, a što se tiče opcije "Required", gospoda koja su naručila program ne vole kada ih računar "nešto pita", a oni "ne razumu", a neće ni da unose bodove u tabelu, vele: "kaki ti je to kompjutor kada n'ume da računa"?

Muke su to, brale!!
Boban (otac šestoro dece).
 
Odgovor na temu

[es] :: Baze podataka :: Nocna mora sa Accesom (ujedno izvinjenje)

[ Pregleda: 4186 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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