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

Re: Na koji način izaći iz petlje pod određenim uslovima

[es] :: Access :: Re: Na koji način izaći iz petlje pod određenim uslovima

[ Pregleda: 1583 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

banatcc

Član broj: 81015
Poruke: 21
195.229.236.*



Profil

icon Re: Na koji način izaći iz petlje pod određenim uslovima06.02.2008. u 09:55 - pre 197 meseci
Pozdrav

Nov sam u radu sa Accessom, i nalazim da je jako zgodan za rad sa tabelama, cak mi je zao sto ranije nisam poceo da ga koristim.
Kako je naslov teme, trebam pomoc ... Hteo bih da zamolim za pomoc.
Imam dve tabele StationList_SS (lista svih stanica u bazi) i StationPerFeeder (lista stanica, koje pripadaju nekom izvodu).
Moj problem je da kreiram novu tabelu koja sadrzi sve stanice koje su prisutne u tabeli StationList_SS, a ujedno nisu prisutne u tabeli StationPerFeeder. Problem sam resio, ali pretraga traje dosta dugo (oko 18minuta), voleo bih da ubrzam proces.
Evo koda, kako sam resio:

Select Case MsgBox("Procedure to get list of SS w/o FdHd is 20min! Do you want to get it?", vbYesNo)

Case vbYes
Sqlqueury7 = "Select StationName,StationType FROM StationList_SS" ',StationPerFeeder where StationList_SS.StationName=StationPerFeeder.B1NAME" ' like 'SS - 11'"

Set rs7 = AccessDB.OpenRecordset(Sqlqueury7)

Do While Not rs7.EOF
bfound = False

Sqlqueury8 = "SELECT FHCB_B1NAME,FHCB_B2NAME,FHCB_B3NAME,FEEDERNAME,B1NAME FROM StationPerFeeder"
Set rs8 = AccessDB.OpenRecordset(Sqlqueury8)

Do While Not rs8.EOF
If rs7!StationName = rs8!B1NAME Then
bfound = True
Else
End If
rs8.MoveNext
Loop
rs8.Close

If bfound = False Then
AccessDB.Execute "Insert INTO StatNoFeeder(StationName,StationType) values ('" & rs7!StationName & "','" & rs7!StationType & "')"
Else
End If
rs7.MoveNext
Loop
rs7.Close
MsgBox "List of substation WITHOUT assigned FdHd created/updated in table StatNoFeeder!"

Case vbNo
End Select

End Sub

Glavni problem mi je da ubrzam proces.
Na koji nacin da izadjem iz petlje Do While Not rs8.EOF za slucaj da je ispunjen uslov If rs7!StationName = rs8!B1NAME Then ...???

Unapred hvala na pomoci.
 
Odgovor na temu

ljbm

Član broj: 39797
Poruke: 38
80.93.236.*



Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima06.02.2008. u 10:02 - pre 197 meseci
Ovako na brzinu, ako hoces da iskocis iz petlje uradi to sa GO TO

Dim skok as String

Do While Not rs8.EOF
If rs7!StationName = rs8!B1NAME Then
GOTO skok
bfound = True
Else
End If
rs8.MoveNext
Loop

skok :

Moze ovako, ali da ne raspravljamo o GOTO, ok ? :-)

 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima06.02.2008. u 10:45 - pre 197 meseci
Naslov nije bio adekvatan. Morate se naučiti da dajete naslov temi i da ne koristite tuđe teme za nešto što je Off topic u toj temi. Ako smatrate da pitanje treba drugačije formulisati slobodno dajte predlog i ja ću ga izmeniti. "Trebam pomoć" je neprimereno i nikome neće pomoći u pretraživanju da reši svoj problem.

[Ovu poruku je menjao Getsbi dana 06.02.2008. u 12:08 GMT+1]
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima06.02.2008. u 13:51 - pre 197 meseci
A sta ce ti uopste loop i recordseti? Sve mi se cini da obican UPDATE moze ovo da resi za mnogo maje od 20 minuta. Okaci primer sa nekoliko desetina podatka, tek toliko da napisemo kveri koji ce da ti odradi posao.

 
Odgovor na temu

banatcc

Član broj: 81015
Poruke: 21
195.229.236.*



Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima11.02.2008. u 08:10 - pre 197 meseci
Pozdrav
Nisam video gde mi je pitanje prebaceno, pa nisam uploadovao primer baze.
Nadam se da ce te moci sada da iskoristite primer i pomognete mi.
Hvala unapred.
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima11.02.2008. u 14:35 - pre 197 meseci
Ono sto tebi treba jeste "Unmatched Query" (vidi Access Help)
Prouci negde kako radi JOIN iskaz u kverijima i posebno LEFT JOIN.

Dodao sam jedan takav kveri na tvoj primer i deluje kao da radi.

 
Odgovor na temu

banatcc

Član broj: 81015
Poruke: 21
195.229.236.*



Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima12.02.2008. u 07:07 - pre 197 meseci
Pozdrav

"Zidar" hvala na pomoci, Unmatched Query radi fenomenalno.
Zao mi je sto svoj kod moram da izbrisem, ali zarad dobrih rezulata moracu.
Super je, moracu vise da se okrenem alatima koji su vec postojeci u samom accessu.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Re: Na koji način izaći iz petlje pod određenim uslovima12.02.2008. u 13:48 - pre 197 meseci
Citat:
Zao mi je sto svoj kod moram da izbrisem, ali zarad dobrih rezulata moracu.

Ne brini, nisi jedini
Ja radim na projektu teskom 50 miliona godisnje. Na projektu rade dva tima. Jedan tim koristi maksimalno SQL i minimalizuje programiranje. Drugi tim sve zivo programira, oni 'ne vole relacion baze'. Razlog? Mnogo koda su vec napisali i ako predju na SQL nacin razmisljanja, morace da odbace 80% tog koda. U tome i jeste velicna relacionih baza. Ako se baza pametno projektuje i pametno se iskoristi SQL, potreba za programiranjem se redukuje sa 100% na 20%, sto ce reci barem 4-5 puta manje ima da se radi.

Mnoge stvari koje su u SQL trivijalne ili bar veoma lake, zahtevaju jako visok nivo programerskog znanja. Ljudi sednu i napisu kod i osecaju se lepo i ponosni su jer su dokazali da u dobri programeri. Onda im je zao kad otkriju da program nije ni trebalo pisati. Tu proradi sujeta i tako to ide - 'zao mi mog briljantnog koda'...

Da podsetim, 'unmatched queries' nisu absolutno trivijalni, ali ni ne izlaze iz elementarnih znanja. Sabiranej i oduzimanje celih brojeva do 10 jeste trivijalno. Rad sa razlocima do 10 niej trivijalan, al;i se ipak uci u drugom osnovne a ne na postdiplomskim kursevima. Tako, SEELCt * FROM NekaTabela je trivijalno. Ovo nije trivijalno:
SELECT * FROM Tabela1 AS A LEFT JOIN Tabela2 AS B ON A.kolonaA=B.KolonaB WHERE B.KolonaB IS NULL
ali jeste deo kursa "Osnove SQL" i predstavlja ono sto u Accessu zovu "unmatched query"


Zidareva teoreme: "The best code is no code at all"

 
Odgovor na temu

[es] :: Access :: Re: Na koji način izaći iz petlje pod određenim uslovima

[ Pregleda: 1583 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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