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

select na recordsetu?

[es] :: Access :: select na recordsetu?

[ Pregleda: 3558 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

konstantin

Član broj: 17262
Poruke: 132
*.com



Profil

icon select na recordsetu?01.04.2004. u 20:18 - pre 244 meseci
Pozdrav svima.
Iz tabele pokretni treba da nadjem sve slogove koji se pojavljuju zadnja 2 datuma u bazi(2 "najmladja datuma").

Private Sub cmdPok2mj_Click()
Dim datZad As Date
Dim datPred As Date
Dim strSql1 As String
Dim strSql2 As String
Dim rst1 As Recordset
Dim rst2 As Recordset
Dim db As Database
Set db = CurrentDb
Set rst1 = db.OpenRecordset("select distinct pokretni.datum from pokretni;") 'dobijem sve datume koji se pojavljuju
rst1.MoveLast 'odlazim na zadnji tj.najveci
datZad = rst1!datum 'dodjeljujem ga promjenljivoj
rst1.MovePrevious 'odlazim na prethodni odnosno predzadnji
datPred = rst1!datum 'dodjeljujem ga promjenljivoj
strSql1 = "select pokretni.* from pokretni where pokretni.datum = #" & Format(datZad, "mm-dd-yyyy") & "# 'gradim upit-svi slogovi koji imaju max datum
Set rst2 = db.OpenRecordset(strSql1) 'otvaram recordset
strSql2 = "select pokretni.* from pokretni where pokretni.datum = #" & Format(datPred, "mm-dd-yyyy") & "# and pokretni.add= " & rst2!add & ";" 'trazim one koji imaju drugi najmladji datum i kod kojih je pole add=add iz rst2 tj. onih koji imaju najmladji datum
Me.RecordSource = strSql2 'taj select mi je sad recordSource i poslije osvjezavam prikaz unutar forme da bi dobio slogove koji se pojavljuju i u jednom i u drugom datumu
Me.Refresh
Me.Requery
rst1.Close
rst2.Close
End Sub


Iz debug moda sam zakljucio zasto kao rezultat dobijam 0 slogova. Pozicionirao se na polje add=235 koji sadrzi najmladji datum a add se ne pojavljuje u slogu koji ima drugi najmladji datum.
Iako mi je jasno zbog cega dobijam nula slogova nakon Me.RecordSource = strSql2, ne polazi mi za rukom da izgradim upit u kojem cu dobiti add-ove i sa najmladjim i sa drugim najmladjim datumom. Pokusao sam mnoge varijante na upitima sa recordsetovima ali ne mogu da izgradim korektnu sintaksu.
Vjerovatno bi mi neko mogao pomoci sa jednostavnijim rjesenjem...
 
Odgovor na temu

kloktor
Velimir Milosavljevic
Kosjeric

Član broj: 18093
Poruke: 56
*.ptt.yu



+2 Profil

icon Re: select na recordsetu?02.04.2004. u 09:08 - pre 244 meseci
Za kreiranje sql izraza sa datumima pogledaj temu koju je postavio Konstantin 'Datumska promjenljiva u vba sql queryu', posto funkcija format nije bas najpouzdanija za kreiranje sql izraza. To bi trebalo da ti resi problem.

Inace za kretanje po tabelama mozes da koristis funkcije DFirst (koja ti daje prvi zeljeno polje iz prvog zapisa), i DLast (koja daje zeljeno polje iz poslednjeg zapisa).




Klo
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.com



Profil

icon Re: select na recordsetu?04.04.2004. u 10:29 - pre 244 meseci
Nece mi pomoci funkcija BuildCriteria u ovom problemu. Da pokusam skratiti i uopstiti moj primjer koji sam postovao ranije:
Jedan rst su svi slogovi koji imaju datum1. Drugi rst su svi slogovi kod kojih se pojavljuje datum2. Meni trebaju oni slogovi cije se polje add pojavljuje i u jednom i u drugom recordsetu.
Kada ne bi morao ici preko vba, rijesio bih to kroz sql query tako sto bi nasao slogove koji se pojavljuju i u jednom i u drugom queryu i to po polju add:
npr. SELECT * from qry1 LEFT JOIN qry2 ON [qry1].add= [qry2].add
WHERE ((([qry2].add) Is Not Null));
 
Odgovor na temu

kloktor
Velimir Milosavljevic
Kosjeric

Član broj: 18093
Poruke: 56
*.ptt.yu



+2 Profil

icon Re: select na recordsetu?05.04.2004. u 06:41 - pre 244 meseci
Ako mozes da resis preko sql query-ja, zasto tako i ne uradis. DoCmd.RunSQL i stavis odgovarajuci string. Uopste te ne ogranicava to sto radis u Visual Basicu.
Klo
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.com



Profil

icon Re: select na recordsetu?05.04.2004. u 07:14 - pre 244 meseci
Citat:
kloktor:
Ako mozes da resis preko sql query-ja, zasto tako i ne uradis.


Zbog promjenljivih koje bi koristili ta 3 querya(ili bolje reci 2 na osnovu kojih bi pravio treci). Ako se sjecas iz tabele treba da pokupim slogove koji imaju dva najmladja datuma i za koje se polje add pojavljuje i kod jednog i kod drugog datuma.
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.com



Profil

icon Re: select na recordsetu?06.04.2004. u 09:34 - pre 244 meseci
Konkretizovacu sa primjerom:

rst1:

add naziv staro novo razlika datum napomena
_____ _________ _______ ______ ________ ________ __________

258 DUWW 55 90 35 02.03.2004
355 QWWE 1000 1100 100 02.03.2004
455 BGGTT 580 900 320 02.03.2004

rst2:

300 ASSDD 100 250 150 15.03.2004
355 QXXXE 1100 1200 100 15.03.2004
455 BAAXX 900 1900 1000 15.03.2004


Trebao bih da kreiram neki rst3 i da dobijem slogove kod kojih se polja add pojavljuju i u rst1 i rst2 tj. 2. i 3. slog iz rst1 i rst2.
Nesto ovako:
355 QWWE 1000 1100 100 02.03.2004
455 BGGTT 580 900 320 02.03.2004
355 QXXXE 1100 1200 100 15.03.2004
455 BAAXX 900 1900 1000 15.03.2004

Da su ovo rezultati querya stvar bi bila jednostavna, medjutim isao sam kroz vba upravo zbog promjenljivih(2 najmladja datuma) i taj rezultat trebam da stavim u RecorsSource od forme. Ima li jos nekih ideja?


 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.com



Profil

icon Re: select na recordsetu?23.04.2004. u 08:32 - pre 243 meseci
Sa zakasnjenjem da javim da sam rijesio problem.
Napravio sam querye sa parametrima iz nove forme (ti parametri su 2 zahtjevana datuma).RecordSource forme popunim sa krajnjim queryem i osvjezim formu.
 
Odgovor na temu

[es] :: Access :: select na recordsetu?

[ Pregleda: 3558 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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