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

Od datuma do datuma, ali ne duplo!

[es] :: Access :: Od datuma do datuma, ali ne duplo!

[ Pregleda: 4623 | Odgovora: 15 ] > 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
213.244.208.*



Profil

icon Od datuma do datuma, ali ne duplo!07.02.2005. u 20:20 - pre 232 meseci
Opet mi treba pomoc. Evo od jutros se akam sa jednom gluposcu, i ne mogu da prokinem:

Napravio sam Query koji iz tabele vadi 4 stavke: datum, hram, mesto i iznos.
Za datum sam postavio uslov da me pita "od datuma" i "do datuma".
To je sve u redu, rezultati su ispravni, ali nikako ne mogu u zaglavlju forme da dobijem, recimo:
pregled prihoda od "pa datum'" do "pa datum".

Kako god napravim Query, ili prijavi gresku, ili me dva puta pita jedno te isto.
Uostalom, evo Qery-ja:

SELECT DatumiPrihoda.Hram, DatumiPrihoda.Mesto, Sum(Prihodi.Iznos) AS SumOfIznos, DatumiPrihoda.Datum
FROM DatumiPrihoda INNER JOIN Prihodi ON DatumiPrihoda.Datum = Prihodi.Datum
GROUP BY DatumiPrihoda.Hram, DatumiPrihoda.Mesto, DatumiPrihoda.Datum
HAVING (((DatumiPrihoda.Hram)="Sv. Vasilije Ostroški") AND ((DatumiPrihoda.Datum) Between [PRIKAŽI PRIHODE OD DATUMA:] And [DO DATUMA:]));

Moze li neko da dopise sta jos fali, da bih u rezultatu dobio jos dva polja: polje "od" i polje "do", te da ih mogu ukljuciti u zaglavlje forme?

Unapred hvala,
Boban (otac 6-toro dece)

Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!08.02.2005. u 14:07 - pre 232 meseci
Kazi nam sta u stvari pokusavas da uradis. Kakava je baza u pitanju, sta forme treba da rade, sta treba da rade reporti. Onda cemo mozda moci da ti pomognemo i da resis tekuce probleme i da nesto naucis. 90% svih problema koji se jave u razvoju programa poticu iz naopako postavljene baze podataka i lose ideje o tome kako treba da izgledaju i sta treba da rade forme i izvestaji.

Parameter kveriji nisu resenje za ono sto ti treba. Drugo, sam tvoj kveri ne izgleda jednostavno. Imas JOIN, pa GROUP BY pa HAVING ( atrebalo bi WHERE). Sve mi to govori da negde neka osnovna ideja nije kako treba, a tebi se zuri, i to mnogo. Medjutim, kratki saveti od dva reda ti nece pomoci, samo ces jos vise da se iznarviras. Polako, reci nam sta u stavri radis, pa da ti pomognemo kako treba.

:-)
 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!08.02.2005. u 15:41 - pre 232 meseci
Uh!
Pa evo, u pitanju je program za prihode i rashode pri Srpskoj Pravoslavnoj Crkvenoj opstini u Austriji.
U sustini nije puno komplikovano, ali za mene ipak jeste. Ima Tabelu prihoda i Tabelu rashoda, sa poljima: datum, hram, mesto, vrsta prihoda (rashoda), opis i iznos. Napravio sam zatim tabele datumiprihoda i datumirashoda sa poljima datum (kljuc), mesto i hram. RelationShip sam povezao: DatumiPrihoda.datum sa Prihodi.datum i DatumiRashoda.datum sa Rashodi.datum, oba slucaja sa ukljucenim "Einforce Referential Integrity" i oba slucaja "Cascade", ne znam ni sam da li je to neophodno, ali sam hteo da izbegnem zaostajanje nekih datuma u nekoj od ovih tabela ako se u jednoj izbrisu. Jos imaju obicne tabele za hramove i vrste prihoda i rashoda, da bi korisnik mogao da dodaje iste. One imaju samo po jedno polje (vrsta prihoda, vrsta rashoda, hram).

Forme rade unos podataka i to je u redu.
Ovo pitanje koje je ovoj temi sam resio, ali prvo da objasnim sta mi je bio problem (i sada je, u drugom slucaju, isti).
Forma treba da prikaze prihode od - do odredjenog datuma, koje korisnik unese (Query), sto je u redu, rezultati su ispravni. Ono sto meni treba, to je da u zaglavlju forme pise: Specifikacija prihoda od_______ do______. E, ja nisam znao odakle da iskopam te datume, koji se unose kada se Query pokrene. Jednostavno, Query daje tri stavke: Datum prihoda, vrstu prihoda i iznos, a ne daje stavke "od" i "do", tako da ja u polja koja sam napravio za "od" i "do", nisam imao da izaberem sa Source liste ono sto mi treba. Resio sam to tako sto sam kao source upisao =First([Datum]), odnosno =Last([Datum]) i tako resio dvodnevnu muku.

Sada imam drugu muku, a slicna je kao i ova prethodna:
Treba da u jednoj formi prikazem sumirane iznose po vrsti prihoda, odnosno rashoda za odredjeni period, znaci opet "od" i "do".

Evo Query-ja koji sam napravio:

SELECT DISTINCT Prihodi.[Vrsta prihoda], Sum(Prihodi.Iznos) AS SumOfIznos, Prihodi.Hram, Prihodi.Mesto
FROM Prihodi
WHERE (((Prihodi.Datum) Between [PRIKAŽI PRIHODE OD DATUMA:] And [DO DATUMA:]))
GROUP BY Prihodi.[Vrsta prihoda], Prihodi.Hram, Prihodi.Mesto;

Nevolja je sto i ovaj Query ne daje datum, jer ako ga ukljucim, dobijam "duple" rezultate, to jest za svaki datum (posto i to polje moram da ukljucim u "Group By") po isti rezultat, na primer:
Dobrovoljni prilozi -------------- 21-1-2005 ------------- 180 Eura
Dobrovoljni prilozi -------------- 22-1-2005 ------------- 120 Eura
itd
a meni treba suma svih Dobrovoljnih priloga odjednom, znaci:
Dobrovoljni prilozi -------------- 300 Eura. Datum mi ustvari i ne treba, ali nevolja je sada opet odakle da "iskopam" ono sto korisnik unosi kada ga Query upita za datum od i datum do, da bih ti prikazao u zaglavlju forme. Sada ne mogu da koristim =First([Datum]), jer uopste nemam polje "Datum" na formi (odnosno u Query-ju)!

Ne znam koliko sam bio jasan, ali ako imate vremena, pomozite. Nekako sam ja ove probleme resavao, ali nisam se bavio ovim poslom poslednje dve godine, pa sam puno toga pozaboravljao. Zadnji program koji sam pre dve godine napravi smucio mi se, radio sam na njemu 3 meseca i napravio oko 200 Query-ja, neki su dugacki i po 2- A4 lista (ako bi se stampali). Ali to je bilo nesto posebno, zakukuljeno i zamumuljeno do bola. Korisnik je trazio stotinu nekih podataka i izvestaja, golubarska takmicenja su bila u pitanju, no da ne duzim.

pozdrav Svim programerima dobre volje,
Boban.

P.S. Ako neko ima volje, postavio bih bazu kao attachment, nije velika (0,9 MB u Zip-u). Mozda bi tabele trebalo drugacije formirati i povezati.
Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!08.02.2005. u 20:41 - pre 232 meseci
Tako je mnogo bolje! Imacu sutra vise vremena, ali onako na brzinu - imas previse tabela. Dovoljno ti je tblRashodi i tblPrihodi, sve onako kako si ih napravio. Cak i to moze u jednu jedinu tabelu i sve bi bilo mnogo lakse. Tabele datumiRashoda i datumiPrihoda ti uopste ne trebaju, kako mi se cini. Sutra cu malo detaljnije, pa ce onda i kveriji da budu jednostavniji i sve ce lepo da se vidi.

Bazu od 0.9MB ne mozes da okacis na forumu, mislim a je limit 200K ali ako je kompaktujes pa ZIPujes, mozda i moze.

Pozdrav do sutra

:-)


 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!09.02.2005. u 13:18 - pre 232 meseci
OK, cekam...
Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!09.02.2005. u 14:57 - pre 232 meseci
Ajde da idemo sa dve tabele, tblPrihodi i tblRashodi. Imaju ista polja:
tblPrihodi (RecordUID=PK, Datum, Hram, Mesto, VrstaPrihoda, Opis, Iznos)
tblRashodi (RecordUID=PK, Datum, Hram, Mesto, Vrsta, Opis, Iznos)

Postoje jos i tabele
tblHramovi (Hram=PK, Opis,itd,itd)
tblVrstaPrihoda = (VrstaPrihoda, Opis)
tblVrstaRashoda = (VrstaRashod,Opis)

Ja cu dalje da pricam o tblPrihodi. Za rashode, sve je isto.

Relacije:
tblVrstaPrihoda :tblPrihodi = 1: vise, tblVrstaPrihodaVrstaPrihoda=tblPrihodi.VrstaPrihoda

tblHram : tblPrihodi = 1:vise, tblHramovi.Hram=tblPrihodi.Hram

Slicno za tblRashodi. Sve relaciej su sa Enforce Referential Integrity = TRUE, Cascade = FALSE, Delete = FALSE . Ovo UVEK TREBA OVAKO, za bilo sta. Ako je Cascade Delete=TRUE, onda ako u tabeli tblHramovi obrises rekord za neki hram to ce automatski obrisati sve rekorde za taj hram u tabeli tblPrihodi. Ako je Cascade Delete=FALSE, iz tabele tblHarmovi NE MOZES da obrises rekord, ako za taj hram postoje rekordi u tabeli tblPrihodi. Za Update je isto - ne mozes da promenis polje Hram u tabeli tblHramovi ako za taj rekord postoje rekordi u tabeli tblPrihodi.

Trebaju ti forme frmHramovi i frmVrstaPrihoda, frmVrstaRashoda - najprostije, da odrzavas ove podatke kad pritreba.

Treba ti i forma za unos u tblPrihodi, to imas, i pretpostavljam da je to OK. ne znam da li je u obliku forme, continiupus form ili datasheet. Zavisno od toga, mogu se ponuditi razlicita resenja za tvoje kasnije zahteve.

Da bi prikazao sve prihode u odredjenm opsegu (Od - Do datuma), obicno se koristi report, ali moze i forma. Lakse je kad imas report. Recimo da je u pitanju prost report, jedan red u reportu za svaki rekord u tabeli tblPrihodi. Report treba da se bazira na tblPrihodi. Nist kveri, nista parametri. Da bi otvorio report za odredjen opseg, treba ti jos jedna forma frmReport_Prihodi_Range. Na formi frmReport_Prihodi_Range je unbound - nema svoj data source. Na njoj imas dva text boxa, txtOdDatuma i txtDoDatuma. U njih unosis datume za koje zelis da vidis prihode. Na formi frmReport_Prihodi_Range imas i dugme cmdPrevievRepot, sa kodom na OnClick:

Code:

Private Sub cmdPrevievReport_Click()
On Error GoTo Err_cmdPrevievReport_Click

    Dim strDocName As String
    Dim strWhereCondition As String
    
    strWhereCondition = "Datum Between " & SQLDate(Me!txtOdDatuma) & " AND " & SQLDate(Me!txtDoDatume)
    strDocName = "repMailingList"  '<---- ime tvog reporta
    DoCmd.OpenReport reportname:=strDocName, View:=acViewPreview, WhereCondition:=strWhereCondition

Exit_cmdPrevievReport_Click:
    Exit Sub

Err_cmdPrevievReport_Click:
    MsgBox Err.Description
    Resume Exit_cmdPrevievReport_Click
    
End Sub



Znaci, kad kliknes na report direktno, dobijes report za SVE sto imas u tabeli tblPrihodi. Za filtriranje samo nekih rekorda, koristis pomocnu formu. Ceo potupak bi bio ovakav:
1) sa tvoje glavne forme (neki Switchboard, ili forma za unos), dugmetom pozivas formu frmReport_Prihodi_Range
2) na formi frmReport_Prihodi_Range uneses podatke za kriterijum
3) sa forme frmReport_Prihodi_Range pozoves report i reprt se otvara samo za podatke koji zadovoljavaju zadati kriterijum.

Isto se radi kad umesto reporta imas formu. Samo se DoCmd razlkuje malkice - DoCmd.OpenForm umesto DoCmd.OpenReport.

Sad onaj drugi problem:
Citat:

Sada imam drugu muku, a slicna je kao i ova prethodna:
Treba da u jednoj formi prikazem sumirane iznose po vrsti prihoda, odnosno rashoda za odredjeni period, znaci opet "od" i "do".


Moglo bi ovako. Baziras report na parameter kveriju. Kao parameter stavis nazive polja sa pomocne forme frmReport_byHram:
Code:

SELECT DISTINCT Prihodi.[Vrsta prihoda], Sum(Prihodi.Iznos) AS SumOfIznos, Prihodi.Hram, Prihodi.Mesto
FROM Prihodi
WHERE (((Prihodi.Datum) Between [frmReport_byHram!txtOdDatuma] And [[frmReport_byHram!txtDoDatuma]))
GROUP BY Prihodi.[Vrsta prihoda], Prihodi.Hram, Prihodi.Mesto;

Prica je slicna:
1) Napravis report baziran na datom parameter kveriju. Ako otvoris report direkktno, pitace te za parametre - unses i sve je OK. Samo se parametri cudno zovu, ali boze moj, bar je jednostavno.
2) Sa glavne forme (switchboard ili forma za unos), dugmetom pozoves pomocnu formu frmReport_byHram.
3) Sa forme frmReport_byHram dugmetom otvoris report. Posto su imena parametara identicna imenima kontrola na formi, Access te nece pitati nista, samo ce pokupiti vrednosti sa forme. Moze da ti zatreba formatiranje datuma, a mozda i ne, probaj. Ako treba, upotebi SqlDate funkciju ili Format() ili sta ti se vec dopadne.

Za ovaj poslednji problem ima i druigh resenja ali mislim da je ovo najjednostavnije za pocetak. Ko je vstiji u programiranju, pokusao bi da promeni SQL izkaz za Query Definition, da izbegne parametre. Uglavnom, rezultat bi bio isti.

Nadam se da je ovo pomoglo bar malo.

Bice sigurno jos pitanja i stavri koje ce trebati, a sada ih ili nevidimo ili smo ih zaboravili, ali bar imamo dobru osnovu koju je moguce relativno lako nadgradjivati.

Srecan rad

:-)

 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!10.02.2005. u 01:05 - pre 232 meseci
Prvo, hvala na velikom trudu oko kuckanja, znam da je dosadno...
Nesto sam iskoristio od tvojih predloga, i funkcionise, a nesto ne radi.
Sto se tice tabela, ipak sam morao da napravim i tabelu "datumiPrihoda", zbog forme za unos prihoda, koju korisnik vec koristi, a ona izgleda ovako:
Glavna forma ima dve subofme u sebi. Source za glavnu formu je tabela "datumiPrihoda", koja je preko polja datum (PK) povezana sa tabelom prihodi, koja je source za subformu prihodi. Treca suborma ima za source Query koji racuna zbir prihoda celog dana i prikazuje ga. Posto je prva subforma tipa "datasheet", nisam uspeo da zbir prihoda prikazem na njoj, otuda druga suborma.
Stvar je u tome da korisnik, kada se krece preko strelica levo-desno, menja datume na glavnoj formi, u prvoj subformi dobija detaljan spisak (tu i unosi nove prihode), a na trecoj zbir prihoda datuma na kojem se nalazi. Relationship "Einforce..." i oba "Cascade" sam ukljucio zbog toga sto, ako se obrise jedan ceo dan (datum), onda bi u polju na glavnoj formi on bio izbrisan, i ne bi ga vise bilo u tabeli "datumiprihoda", ali bi podaci ostali u tabeli "prihodi".

O.K. Query koji si mi poslao:
[Code:]

SELECT DISTINCT Prihodi.[Vrsta prihoda], Sum(Prihodi.Iznos) AS SumOfIznos, Prihodi.Hram, Prihodi.Mesto
FROM Prihodi
WHERE (((Prihodi.Datum) Between [frmReport_byHram!txtOdDatuma] And [[frmReport_byHram!txtDoDatuma]))
GROUP BY Prihodi.[Vrsta prihoda], Prihodi.Hram, Prihodi.Mesto;
[/Code]

prijavljuje gresku "invalid bracket" - [, tako da sam iste zamenio sa( i to radi.
Dalje, kod koji si mi poslao:

[Code:]
Private Sub cmdPrevievReport_Click()
On Error GoTo Err_cmdPrevievReport_Click

Dim strDocName As String
Dim strWhereCondition As String

strWhereCondition = "Datum Between " & SQLDate(Me!txtOdDatuma) & " AND " & SQLDate(Me!txtDoDatume)
strDocName = "repMailingList" '<---- ime tvog reporta
DoCmd.OpenReport reportname:=strDocName, View:=acViewPreview, WhereCondition:=strWhereCondition

Exit_cmdPrevievReport_Click:
Exit Sub

Err_cmdPrevievReport_Click:
MsgBox Err.Description
Resume Exit_cmdPrevievReport_Click

End Sub
[/Code]

prijavljuje gresku: Sub or Function not defined, i stane na SQLData, tako da nisam uspeo da uradim do kraja, te jos uvek imam onu "drugu muku".

Treba mi jos malo pomoci!

pozdrav, Boban
Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!10.02.2005. u 13:55 - pre 232 meseci
Funkcija SQLDate nije ugradjena u Access, moras da je dodas u neki modul (ne formin modul).
Code:

Function SQLDate(Date2Convert As Variant) As String
SQLDate = "#" & Format(CVDate(Date2Convert), "mm/dd/yyyy") & "#"
End Function


Sto se tice tabele DatumiPrihoda, neka ti bude, ali ce ti to doneti samo nevolje u buducnosti. Medjutim CASCADE izgleda ili nisi razumeo ili ja ne razume sta mi govoris. Tebi je DatumiPrihoda tabela na starni 1 (parent, roditelj). Tabela Prihodi je na strani vise (child ili dete tabela). Ako ti je Cascade Delete TRUE, onda brisanje rekorda u parent tabeli DatumiPrihoda automatski brise sve rekorde u tabeli Prihodi, a to je upravo suprotno od onoga sto zelis da uradis. Drugo, ako za neki datum imas prihode, nema smisla brisati taj datum iz tabele DatumiPrihoda. Relacione baze podataka tako rade. Cascade Delete/Update je opasna opcija i ne treba se s tim igrati.

:-)
 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!10.02.2005. u 23:23 - pre 232 meseci
OK, sada je u redu.
Nije bitno za pricu o relationships, korisnik je malo neuk (toliko da je sinoc ukucao 50 strana podataka u formu prihodi, pa kaze, kada je ponovo otvorio, ono nema nista, samo 4 unosa koja sam ja radi probe uneo. Nakon dugog razmisljanja sta je mogao da uradi, pitao sam ga kako pokrece program a on kaze: "Pa lepo, otvorim onaj zip koji si mi poslao, pa ga raspakujem, pa onda kliknem dva puta na finansije.mdb" I svaki put tako. On je uvek prepisivao raspakovani fajl sa onim mojim u zip-u, i logicno uvek dobijao isto)!
Ako hoce da izbrise datum (zeznuo se, nije bilo bogosluzenja tog dana), onda mu ne trebaju ni prihodi tog dana, neka kuca novi datum i ponovo prihode. DatumiPrihoda imaju od polja samo datum, pa ako ga nema u tblPrihodi, ne treba mu ni u DatumiPrihoda, jer ce mu subforma prikazivati prazno. No dosta o tome.

Ja sam sada dobio ono sto mi treba, ali jos uvek nemam sve:

Trebalo bi u zaglavlju reporta koji otvara frmreport_prihodi_range (report "prihodi") da pise:

PREGLED PRIHODA OD 21-1-2005 DO 10-2-2005: (Ako je taj opseg zahtevan u frmReport_prihodi_range),

a ja to nemam! I ne znam kako da to dobijem. I opet MUKA.
Boban (otac šestoro dece).
 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!11.02.2005. u 08:39 - pre 232 meseci
Provalio sam!

=Forms!Prihodi_range!txtOdDatuma i
=Forms!Prihodi_range!txtDoDatuma

Jednostavno, ali Prihodi_range mora da bude otvorena u roku prikazivanja reporta.

Sada imam jedan specifican problem:

U formi za unos prihoda, ako ukucam (u tabeli tblPrihodi) nazive polja cirilicom, da bi se i u formi tako prikazivala, posto je forma tipa datesheet, imam problem sa OLEDB i ActiveX kontrolom, ne mogu da dodajem niti menjam nista, prijavljuje mi gresku.
Kako se to resava?

I evo jos jedne stavke koja ne radi:

[Code]
Private Sub cmdPrevievRecord_Click()
On Error GoTo Err_cmdPrevievReport_Click

Dim strDocName As String
Dim strDocName_1 As String
Dim strDocName_2 As String

Dim strWhereCondition As String
Dim strWhereCondition_1 As String


strWhereCondition = "Datum Between " & SQLDate(Me!txtOdDatuma) & " AND " & SQLDate(Me!txtDoDatuma)
strDocName_1 = "Pregled_prihoda_1" '<---- ime forme

strWhereCondition_1 = "Datum Between " & SQLDate(Me!txtOdDatuma_1) & " AND " & SQLDate(Me!txtDoDatuma_1)
strDocName_2 = "Pregled_rashoda_1" '<---- ime forme

strDocName = "Pregled_prih_ras"


DoCmd.OpenForm FormName:=strDocName, View:=acViewNormal, OpenArgs:=[strWhereCondition, strWhereCondition_1]




Exit_cmdPrevievReport_Click:
Exit Sub

Err_cmdPrevievReport_Click:
MsgBox "Pogrešan unos datuma. Ponovite!"
Resume Exit_cmdPrevievReport_Click

End Sub
[/Code]


U pitanju je forma (strDocName) sa dve suborme (strDocname_1 i strDocname_2)
Trebaju mi vrednosti txtOdDatuma, txtDoDatuma, txtOdDatuma_1 i txtDoDatuma_1 da ih smestim u zaglavlje glavne forme (strDocName) kao sto sam uradio na pocetku ove poruke.

Kako god pokusam da izmenim kod, nece!

Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!11.02.2005. u 14:30 - pre 232 meseci
;-) kad malo poguras, ono proradi. :-)

Za cirilicu i ActiveX ne mogu da ti pomognem :-( Moda neko drugi zna?

Za kod koji ne radi, pretpostavljam da hoces da otvoris dve nove forme, sa jednog dugmeta. Ako je tako, ne valaj ti linija
Code:

DoCmd.OpenForm FormName:=strDocName, View:=acViewNormal, OpenArgs:=[strWhereCondition, strWhereCondition_1]


Trebaju ti dve DoCmd, po jedna za svaku formu koju zelis da otvoris. I umesto OpenArgs treba upotrebiti WhereCondition:=. Otprilike ovako:
Code:

DoCmd.OpenForm FormName:=strDocName_1, View:=acViewNormal, WhereCondition:=strWhereCondition_1
'Pa onda odmah za tim:
DoCmd.OpenForm FormName:=strDocName_2, View:=acViewNormal, WhereCondition:=strWhereCondition_2


Ovo ce verovatno da ti otvori obadve forme, ali nisma siguran koja ce da se vidi na vrhu.

Jos jedamput, koristis veoma neuobicajena resenja za stvari koje se u Accessu rade na gotovo standardni nacin. Ima razloga zasto se baze podataka dizajniraju na odredjen nacin i zasto se Access aplikacije prave na odredjeni nacin (forme, subforme, reporti, otvaranje nove forme, prenos parametara). Access je napravljen tako da podrzava jedan nacin rada. Ako mnogo odstupis od toga imaces samo nevolje od kojih mnoge nece biti lako resive.

I imam utisak da kod kopiras od negde, bez da mnogo razumes o cemu se radi. Mozda ne bi bilo lose da proucis neki tutorial za Access, potrazi po forumu, bilo je diskusija na tu temu.

:-)
 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!11.02.2005. u 14:48 - pre 232 meseci
Ja hocu da otvorim jednu formu koja ima 2 subforme: Glavna forma se zove Pregled_prih_ras, a suborme: Pregled_prihoda_1 i Pregled_rashoda_1.

Source za glavnu formu je tabela DatumiPrihoda, koja daje samo datum, hram i mesto.

Source za subforme su tabele prihoda, odnosno rashoda...

Koristio sam tvoj kod koji si mi poslao prosli put, pa sam ga pokusao preraditi, ali bez uspeha.

Stvar je u tome sto korisnik hoce na jednom listu da ima pregled prihoda i rashoda za odredjeni period, i otuda glavna forma sa 2 suborme. Onaj kod koji sam dobio radi stvar kada forma za unos datuma ima dva polja, a ja sada imam 4 polja:

prihodi od
prihodi do

rashodi od
rashodi do

Gornja dva reda treba da primenim kao filter u subormi Pregled_prihoda_1, a druga dva reda u subormi Pregled_Rashoda_1

Pokusao sam i sa:
Code:

Private Sub cmdPrevievRecord_Click()
On Error GoTo Err_cmdPrevievReport_Click

Dim strDocName As String
Dim strDocName_1 As String
Dim strDocName_2 As String

Dim strWhereCondition As String
Dim strWhereCondition_1 As String

strWhereCondition = "Datum Between " & SQLDate(Me!txtOdDatuma) & " AND " & SQLDate(Me!txtDoDatuma)
strDocName_1 = "Pregled_prihoda_1" '<---- ime forme

strWhereCondition_1 = "Datum Between " & SQLDate(Me!txtOdDatuma_1) & " AND " & SQLDate(Me!txtDoDatuma_1)
strDocName_2 = "Pregled_rashoda_1" '<---- ime forme

strDocName = "Pregled_prih_ras"

DoCmd.OpenForm FormName:=strDocName, View:=acViewNormal, WhereCondition:=strWhereCondition, strWhereCondition_1

Exit_cmdPrevievReport_Click:
Exit Sub

Err_cmdPrevievReport_Click:
MsgBox "Pogrešan unos datuma. Ponovite!"
Resume Exit_cmdPrevievReport_Click

End Sub


ali ne moze, pokazuje na red:
Code:

WhereCondition:=strWhereCondition, strWhereCondition_1


i kaze da to tako ne moze! (a ne kaze kako treba).

Pomozite!
Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!11.02.2005. u 17:43 - pre 232 meseci
Opet nis iskopirao kod kako treba. Ne treba:
Code:

DoCmd.OpenForm FormName:=strDocName, View:=acViewNormal, WhereCondition:=strWhereCondition, strWhereCondition_1
, deo koji ne valja je ":=strWhereCondition, strWhereCondition_1". Treba izbaciti "":=strWhereCondition,"
nego treba
Code:

DoCmd.OpenForm FormName:=strDocName, View:=acViewNormal, WhereCondition:=strWhereCondition_1

Ova greska mi govori da jos uvek ne razumes ili ne znas kako DoCmd.OpenForm funkcionise i koji su parametri potebni i kako se salju. Molim te prouci to negde, pa mozemo da nastavimo.

So se tice zahteva korisnika i formi i subformi, sve je to poznato odavno. naravno da hoce da vidi i rashode i prihode. I najlaksi nacin je da se to stavi u jednu tabelu, i da se ne redi kao forma i subforma (ne trebaju ti tabele koje sam ti ranije rekao), nego najobicniji datasheet. Uz malo filterovanja i sortiranja, sve se lepo vidi. ponovo ti kazem, ceo problem si postavio naopako i zato se mucis bez razloga.

Usput, polja 'hram' i 'mesto', da li su u vezi, mislim da li je 'mesto'='mesto gde se hram nalazi' ili nesto drugo? To bi moglo da ti manji broj polja u nekim tabelama...

:-)
 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!12.02.2005. u 09:45 - pre 232 meseci
Ok, na početku sam rekao da sam početnik. Da znam i razumem kako ide oko DoCmd.OpenForm i brdo drugih kodova ne bih postavljao ovako jednostavna pitanja. Međutim, kao što piše u potpisu, ja moram da radim (i usput učim) sve što mi dođe pod ruku, a mislim da mogu (moj primarni posao je Desktop Publishing, prelom knjiga i ostalog, uglavnom za SPC) jer od mojih šestoro, četvoro je sitno, najstarije od 5 godina.

Ali dobro de, to su lične stvari. Donji problem sam rešio drugačije: Direktno u Querijima koji pozivaju dve pomenute suborme, stavio sam uslov:
Code:

SELECT DISTINCT Rashodi.[Vrsta Rashoda], Sum(Rashodi.Iznos) AS SumOfIznos, Rashodi.Hram, Rashodi.Mesto
FROM Rashodi
WHERE (((Rashodi.Datum) Between [Forms]![Rashodi_range]![txtOdDatuma] And [Forms]![Rashodi_range]![txtDoDatuma]))
GROUP BY Rashodi.[Vrsta Rashoda], Rashodi.Hram, Rashodi.Mesto;

Ovo mi je poslao Zidar, za formu prihoda, koja nema suborme.
Tako isto i u Queriju za prihode (druga suborma) i rezultat izgleda ovako:
Otvorim formu za unos datuma (Rashodi_range), sa dva para polja: prihodi od - prihodi do i rashodi od - rashodi do, i unesem datume. Queriji za te subforme uzimaju to kao uslov, i kada otvorim glavnu formu, dobijam ispravne rezultate. Sada u zaglavlju glavne forme imam 4 textbox-a, za koja prva dva iskoristim:
=Forms!Prihodi_range!txtOdDatuma i
=Forms!Prihodi_range!txtDoDatuma
a za druga dva:
=Forms!Prihodi_range!txtOdDatuma_1 i
=Forms!Prihodi_range!txtDoDatuma_1
i dobijem ono oko čega se vrtim već 3-4 dana: Da u zaglavlju forme (i Page-a) stoji napisan datumski period za koji je rezultat izbačen.
Znači, kod koji si mi poslao u stvari mi i ne treba (ali ipak hvala).

Još mi je ostao problem sa ćirilicom u nazivima polja (forma tipa Datasheet), gde dobijam gresku u ODB i ActiveX, i problem (ali stvarno problem) koji izgleda ovako:

Na formi za unos prihoda imam dugme "previev", na čiji klik se otvara report, na kom su poređani svi prihodi toga dana sa sumom na kraju. Uslov je sledeći:
Code:

Private Sub Command1_Click()
On Error GoTo Err_Command1_Click


    Dim stDocName As String
    Dim stLinkCriteria As String

stDocName = "Pregled_rashoda_na_dan"

    
    stLinkCriteria = "[Datum]=#" & Me![Datum] & "#"
    

    DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    
Exit_Command1_Click:
    Exit Sub

Err_Command1_Click:
    MsgBox err.Description
    Resume Exit_Command1_Click
    
    End Sub


Ne znam kako, ali za prvih pet-šest datuma na ovaj klik dobijem prozor bez podataka, a dalje je normalno, dobijam sve kako treba! Pregledao sam sve, i ne mogu da uočim u čemu je problem. Neko mi je poslao i sledeći kod za Datum:

Citat:

stLinkCriteria = "[Datum]=#" & Me![Datum] & "#"
Ovo ce da radi samo u nekim slucajevima.
Ovo pitanje je bilo mnogo puta na forumu.
Isparavan format datuma koji prihvata SQL je ovaj
stLinkCriteria = "#" & Month(Date) & "\" & Day(Date) & "\" & Year(Date) & "#"
Sretno


ali to mi prikazuje "DataType Mismatch". Probao sam da umesto "\" stavim "-", pošto mi tako stoji u RegionalSetting-u, ali onda se filter uopšte ne primeni.

Access je moćna alatka, a ja nevešt majstor!

pozdrav svima, do sledećeg problema.

P.S. Usput, ako nekome treba pomoć za Venturu10, tu sam. Za mene, u tom programu nema tajni.
Boban (otac šestoro dece).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Od datuma do datuma, ali ne duplo!14.02.2005. u 14:10 - pre 232 meseci
Nadams e da ti nije prekasno.

Greska je u liniji
Code:

stLinkCriteria = "[Datum]=#" & Me![Datum] & "#"
[\code]

Nazalost, ja sam taj koji ti je brzopleto rekao "[Datum]=#" & Me![Datum] & "#". Kod mene to prolazi, jer mi je reginal settings USA. Izvinjavam se za brzopletost i konfuziju koju sam izazvao.

Tacno je ono sto ti je Izonic rekao:
Citat:

stLinkCriteria = "[Datum]=#" & Me![Datum] & "#"
Ovo ce da radi samo u nekim slucajevima.
Ovo pitanje je bilo mnogo puta na forumu.
Isparavan format datuma koji prihvata SQL je ovaj
stLinkCriteria = "#" & Month(Date) & "\" & Day(Date) & "\" & Year(Date) & "#"
Sretno


Znaci, radice ili ovo:
Code:

stLinkCriteria = "#" & Month(tvojDatum) & "\" & Day(tvojDatum) & "\" & Year(tvojDatum) & "#"

ili ovo:
Code:

stLinkCriteria = sqldate(tvojDatum), gde je SQLDate funkcija (nije ugradjena u Access), koju moras da je dodas u neki modul (ne formin modul).
Code:

Function SQLDate(Date2Convert As Variant) As String
SQLDate = "#" & Format(CVDate(Date2Convert), "mm/dd/yyyy") & "#"
End Function

Funkcija SQL date prevodi sve datume u USA regional tako da ih Access moze razumeti. To prevodjenje je samo interno, za korisnika nevidljivo. U tvom polju ce i dalje da pise "12.3.2005' za 12 Mart 2005, ali ce Access u stavri raditi sa formatom "03/12/2005".

RESENJE:
=======
UVEK, ali UVEK, kada gradis stCriteria sa datumima ili radis nesto slicno, UVEK koristi ili funkciju SQLDate ili ono sto je dao Izonic.
Meni je brze da kucam SQLDAte(myDatum) nego
stLinkCriteria = "#" & Month(Date) & "\" & Day(Date) & "\" & Year(Date) & "#", ali sve je stvar ukusa i navike. Rezultat ce ionako bityi isti.

Sta nece da radi:

stCriteria=me!Date
nece rediti NIKAD - nedostaju delimiteri za datum - '#'

stCriteria="#" & me!Datum & "#"
radice PONEKAD, ali ne u Srbiji, zbog razlike u regional setting.

Srecan rad!








 
Odgovor na temu

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

Član broj: 2956
Poruke: 181
213.244.208.*



Profil

icon Re: Od datuma do datuma, ali ne duplo!14.02.2005. u 14:31 - pre 232 meseci
Veliko Hvala, sve ce mi biti od koristi.

Ali ja moram sada nesto da primetim. Akajuci se ovih dana sa ovim programom i citajuci sve sto ste meni (i drugi drugima na ovom forumu) napisali, pored velike zbrke u mojoj glavi od tih silnih kodova, ja sam donji problem slucajno resio (kazem slucajno, jer sam cackajuci dosao do jednog zakljucka, a tek posle sam video da si mi ti to u jednom odgovoru i napisao.
Naime, ceo ovaj kod sa Dim, SQL, StLinkCriteria i ostalim brdom kodova mi izgleda mnogo komplikovan (verovatno je potreban zbog ErrorHandel, to jos nisam naucio da koristim). Ja sam problem resio ovako:

Jednostavno, posto u formi koja poziva tu drugu formu na osnovu datuma vec imam polje u koje sam ukucao zeljeni datum, ja sam jednostavno u Query-ju koji puni tu pozvanu formu dodao uslov da podatak uzme iz tog polja, i to je to!
Znaci:
Code:

WHERE (((DatumiPrihoda.Datum)=[Forms]![Prihodi]![Datum]));

Cini mi se mnogo jednostavnije nego napraviti ovako, pa da to na nekom drugom kompu ne radi. Recimo, da je i kod mene RegionalSetting na USA, kao kod Zidara, ja to ne bih ni primetio, a moja musterija, koja zivi i radi u Austriji, imala bi problem, jer (barem na mom kompu) ni Austrijski RegionalSetting ne radi, naime pravi istu gresku! Ovako, Query cita ono sto je napisano, i ako je format dobar, on ce odraditi, ako nije, nece UOPSTE odraditi, a ne jedan datum hoce (17-1-2004) a drugi nece!

Pozdrav!
___________________________________
Svakim danom u svakom pogledu....
Boban (otac šestoro dece).
 
Odgovor na temu

[es] :: Access :: Od datuma do datuma, ali ne duplo!

[ Pregleda: 4623 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

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