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

VB Kod - Hitno potrebna kratka pomoc

[es] :: Baze podataka :: VB Kod - Hitno potrebna kratka pomoc

[ Pregleda: 4187 | Odgovora: 8 ] > 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
*.verat.net



Profil

icon VB Kod - Hitno potrebna kratka pomoc19.07.2003. u 05:41 - pre 251 meseci
Imam sledeći događaj u formi:

Private Sub Form_Current()
Dim rs As Object
Set rs = Form.Recordset

For Each record In rs.Fields
If godina.Value = 2002 And RangSen2002 = 1 Then
ZB2002Sen = ZB2002Sen + 5
ElseIf godina.Value = "2002" And RangSen2002 = 2 Then
ZB2002Sen = ZB2002Sen + 3
ElseIf godina.Value = "2002" And RangSen2002 = 3 Then
ZB2002Sen = ZB2002Sen + 1
ElseIf godina.Value = "2002" And RangSen2002 > 3 Then
ZB2002Sen = ZB2002Sen
End If
Next
End Sub

ZB2002Sen je vreme koje treba da se poveća za (recimo, +5) ako je RangSen2002 = 1, za +3 ako je RangSen2002 = 2 itd..

Problem je što ja u konkretnom slučaju za 2002 godinu imam 7 zapisa, a kod prođe svaki put samo kroz prvi zapis (7 puta) i svaki put doda na PRVI zapis po +5, pošto je u konkretnom slučaju RangSen2002 = 1. Ostali zapisi ostaju nepromenjeni.

Meni treba da kod prođe JEDANPUT kroz SVE zapise i, zavisno od uslova doda određeni broj poena.

Može li neko da mi pomogne, da mogu pisati kod dalje, za ostale godine i uslove.

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

DraganK

Član broj: 4976
Poruke: 109



+3 Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc19.07.2003. u 14:39 - pre 251 meseci
Kao prvo, ne valja da recordset instanciraš kao objekat, već kao što i jeste, bilo ado ili dao recordset.

A što se tiče konkretnog primera, ne valja ti petlja. Treba ti petlja u petlji...

dim fld as adodb.field ' ako je ado...

rs.movefirst

while not rs.eof

for each fld in rs.fields
'kod
next
rs.movenext 'ovo ti je falilo...

wend
 
Odgovor na temu

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

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



Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc19.07.2003. u 18:41 - pre 251 meseci
OK, evo napisao sam kako si rekao:

Private Sub Form_Current()
Dim rs As adodb.Recordset
Dim fld As adodb.Field

rs.MoveFirst
While Not rs.EOF
For Each fld In rs.Fields
If godina.Value = 2002 And RangSen2002 = 1 Then
ZB2002Sen = ZB2002Sen + 5
ElseIf godina.Value = "2002" And RangSen2002 = 2 Then
ZB2002Sen = ZB2002Sen + 3
ElseIf godina.Value = "2002" And RangSen2002 = 3 Then
ZB2002Sen = ZB2002Sen + 1
ElseIf godina.Value = "2002" And RangSen2002 > 3 Then
ZB2002Sen = ZB2002Sen
End If
Next
rs.MoveNext
Wend
End Sub

Medjutim, dobijem poruku:

"Object variable or With block variable not set"

To je verovatno jer fali ono "Set rs = form.recordset" koje sam ja imao. Ako ga ostavim, kaze "Type mismach".

Sta da napisem za "set rs" varijablu?
Boban (otac šestoro dece).
 
Odgovor na temu

DraganK

Član broj: 4976
Poruke: 109



+3 Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc19.07.2003. u 21:16 - pre 251 meseci
Skloni ovo
Dim rs As adodb.Recordset

a vrati tvoju liniju
Set rs=form.recordset


Tu ima gomila nepoznanica, šta je u tvom kodu record, godina, RangSen2002... kao da si koristio neki wizard koji bounduje rs za formu i polja za kontrole.

Ako ni posle ovoga ne radi, možda se povezuješ preko dao a ne ado...?

Uostalom, to ti je samo smer kuda da tražiš grešku (petlja), sorry...
 
Odgovor na temu

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

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



Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc20.07.2003. u 11:03 - pre 251 meseci
Pa evo, otvorio sam i konekciju (izgleda da je to trebalo), i onaj tvoj kod radi, ali opet racuna samo prvi zapis. Pokusacu da objasnim (ako imas volje i vremena):

Kao prvo, sve podatke vucem iz tabele koju sam pomocu MakeTable Query-a napravio za Rang lisltu.

Rang2002Sen je polje u kome stoji podatak o osvojenom mestu na takmicenju
ZB2002Sen je iznos poena, na koji treba dodati +5, ako je 1 mesto, +3 ako je drugo mesto i +1 ako je doticni takmicar na 3 mestu, a ostaviti ga kako jeste, ako je ispod treceg mesta. Ono "If godina + 2002" sam stavio zato sto sam u MakeTable Querry-u postavio uslov, pa prilikom pokretanja tog querija iz jednog menija koji pokrece ovu formu, prvo pita za godinu, posto se program pravi za 10 godina unapred.

Mislim da sam logicki dobro smislio, samo ne znam zasto ne prolazi kroz sve zapise, vec se vrti oko prvog i stalno njemu dodaje (u konkretnom slucaju, kod prvog clana, koji je na prvom mestu, +5 vise puta, tako da dobijem za prvog clana rezultat 697 i tako nesto, a treba da bude 19,44 (Zb2002Sen) + 5 (jer jer RangSen2002 + 1)

Poslao bih ti skracenu bazu, ali ne vidim ovde kako se "kaci" atachment.

Ovo mi postaje vec "goruci problem", pa ako hoces i mozes, pomozi!
Boban (otac šestoro dece).
 
Odgovor na temu

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

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



Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc20.07.2003. u 11:31 - pre 251 meseci
Usvari, evo koda koji NE proizvodi grešku, ali daje rezultat samo u prvom zapisu, i to pogrešan: Treba na 19,44 da doda +5, i da dobije 24,44, a on napravi 799,44 !!!
Ne znam kako je izracunao bas ovu cifru.


Private Sub Form_Load()
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Set rs = New ADODB.Recordset

Dim newCon As ADODB.Connection
Set newCon = New ADODB.Connection
newCon.ConnectionString = "Data Source=Golub_boza"
newCon.Open
rs.Open "select * from rangtable", newCon, adOpenKeyset, adLockOptimistic

rs.MoveFirst
While Not rs.EOF
For Each fld In rs.Fields
If Godina.Value = 2002 And RangSen2002 = 1 Then
ZB2002Sen = ZB2002Sen + 5
ElseIf Godina.Value = "2002" And RangSen2002 = 2 Then
ZB2002Sen = ZB2002Sen + 3
ElseIf Godina.Value = "2002" And RangSen2002 = 3 Then
ZB2002Sen = ZB2002Sen + 1
ElseIf Godina.Value = "2002" And RangSen2002 > 3 Then
ZB2002Sen = ZB2002Sen
End If
Next
rs.MoveNext
Wend

newCon.Close
Set newCon = Nothing
End Sub

Boban (otac šestoro dece).
 
Odgovor na temu

DraganK

Član broj: 4976
Poruke: 109



+3 Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc20.07.2003. u 12:20 - pre 251 meseci
Probaj ovako, bez fielda, to ti onda ne treba...


Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Dim newCon As ADODB.Connection
Set newCon = New ADODB.Connection
newCon.ConnectionString = "Data Source=Golub_boza"
newCon.Open

rs.CursorLocation = adUseClient

rs.Open "select * from rangtable", newCon, adOpenKeyset, adLockOptimistic

rs.MoveFirst

While Not rs.EOF

If Godina.Value = "2002" And rs.Fields("RangSen2002").Value = 1 Then
ZB2002Sen = ZB2002Sen + 5
ElseIf Godina.Value = "2002" And rs.Fields("RangSen2002").Value = 2 Then
ZB2002Sen = ZB2002Sen + 3
ElseIf Godina.Value = "2002" And rs.Fields("RangSen2002").Value = 3 Then
ZB2002Sen = ZB2002Sen + 1
ElseIf Godina.Value = "2002" And rs.Fields("RangSen2002").Value > 3 Then
ZB2002Sen = ZB2002Sen
End If

rs.MoveNext

Wend

rs.Close
newCon.Close
Set rs = Nothing
Set newCon = Nothing
 
Odgovor na temu

Sasa Vitorovic
Beograd

Član broj: 11629
Poruke: 193
*.ptt.yu

Sajt: www.ptt.yu/korisnici/s/a/..


Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc20.07.2003. u 13:29 - pre 251 meseci
I ja se slazem...
Ako te nismo dobro razumeli daj spisak polja ovde.
P.S.Naredba for each/next ti mozda ne valja.Kad kucas na primer 'for each control' moras zavrsiti sa 'next control'.
U fudbalu je vazno jedno:a to su dve stvari:rad ,red i disciplina.
 
Odgovor na temu

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

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



Profil

icon Re: VB Kod - Hitno potrebna kratka pomoc20.07.2003. u 14:17 - pre 251 meseci
Evo pravog resenja, ovo radi kako treba:

Private Sub Form_Load()

Dim rs As Object
Set rs = Form.Recordset

While Not rs.EOF

If godina.Value = 2002 And RangSen2002 = 1 Then
ZB2002Sen = ZB2002Sen + 5
ElseIf godina.Value = "2002" And RangSen2002 = 2 Then
ZB2002Sen = ZB2002Sen + 3
ElseIf godina.Value = "2002" And RangSen2002 = 3 Then
ZB2002Sen = ZB2002Sen + 1
ElseIf godina.Value = "2002" And RangSen2002 > 3 Then
ZB2002Sen = ZB2002Sen
End If

rs.MoveNext
Wend

End Sub
Znaci: NE TREBA "For Each record In rs.Fields" i
NE TREBA: "Next"

Ovo "Next" je pravilo svu zbrku, jer se vracao na prvi zapis i odradjivao ga tacno 26 puta (!) i svaki put dodavao po +5, tako da sam dobijao 149,44 (pocetni rezultat je bio 19,44)

Hvala svima na pomoci!

"Čačkam, čačkam, pa isčačkam"

P.S. Makar to trajalo i 2 noći.
Boban (otac šestoro dece).
 
Odgovor na temu

[es] :: Baze podataka :: VB Kod - Hitno potrebna kratka pomoc

[ Pregleda: 4187 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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