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

Povezivanje progresbara sa podacima u bazi

[es] :: Visual Basic 6 :: Povezivanje progresbara sa podacima u bazi

[ Pregleda: 539 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

g01d c0d3
g01d c0d3

Član broj: 157295
Poruke: 3
*.teol.net.



Profil

icon Povezivanje progresbara sa podacima u bazi24.04.2008. u 14:19

Ovako, imam bazu podataka i u njoj npr. 2 tabele sa po 5000 zapisa.

Code:

Dim cn as new adodb.connection
dim rs as new adodb.recordset
dim rs1 as new adodb.recordset

rs.open "select * from tbl1",cn
rs1.open "select * from tbl2",cn

lbl1.caption = rs.recordcount
lbl2.caption = rs1.recordcount

rs.close
rs1.close


Sada me zanima kako ovde da ukljucim progresbar. Znaci dok obraduje informacije koliko zapisa ima u tabeli 1 i tabeli 2 da to prati progresbarom.
24.04.2008. u 14:19 

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 558
91.148.114.*

Sajt: www.eurora3d.com


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 15:10
Pa ne mozes (jedino nesto otpilke)
ova linija
Code:

rs.open "select * from tbl1",cn

blokira izvodjenje programa dok se ne zavrsi ... mozes da stavis u nekom timer eventu da povecava vrednost al neznas koja je max vrednost odnosno koliko ce operacija da traje.
Ako si mislio da da se vrednost povecava dok se iscitavaju redovi u tabeli onda moze nesto ovako
Code:

ProgressBar1.Min = 0
ProgressBar1.Max = rs.recordcount
ProgressBar1.Value = 0
while ... nesto
ProgressBar1.Value = ProgressBar1.Value + 1
citanje tabele
....

Pretrazi forum.
Aleksandar Ruzicic je jednom postavio kod za Infinite progres bar (graficko resenje koje se vrti i ne pokazuje neku konkretnu vrednost). Mislim da je to najbolje za ovakve situacije gde se napredak neke operacije ustvari nezna.
char $[12] = "0D3 aroruE0";char* $$ = &$[10];
while(*(--$$)!='0')
cout << (char)*$$;
24.04.2008. u 15:10 

stefanpn
Stefan Kostic
Student, VPS
Paracin (Blace - FAX)

Član broj: 172809
Poruke: 291
91.150.125.*

Sajt: www.stefanpn.co.nr


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 17:22
Mislim da to ne moze da se izvede ni sa infinite-progressbar-om... jer ce se program "ukociti" sve dok cita iz baze

Jedino da citas jedan po jedan ili recimo 10 po 10 zapisa:

Code:

rs.Open "Select * From Tabela;"
ProgressBar.Max = Int(rs.RecordCount) / 10 + 1
rs.Close
Do While Not rs.EOF
    rs.Open "Select * From Tabela Between ID = " & CStr(a) & " And " & CStr(a+10) & ";"
    a = a + 11
    ProgressBar.Value = ProgressBar.Value + 1
    'Samo ne znam mozes li da obradjujes 10 po 10 zapisa :), ali ce ti raditi ProgressBar
Loop


Podrazumevao sam da u tabeli imas polje ID - AutoNumber
Da sam znao da je internet ovako dobar ja bih to postavio jos pre 30 godina.
24.04.2008. u 17:22 

goranvuc
Goran Vucicevic
Novi Sad

Moderator
Član broj: 4934
Poruke: 1589
79.101.215.*

Sajt: www.clickersoftware.com


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 17:47
Standardno resenje za ove slucajeve gde ne postoji dogadjaj u kom mozes hvatati napredak neke operacije, ili se ne izvrsava petlja, vec samo postoji jedna naredba koja traje x vremena je:
Code:

Screen.MousePointer = vbHourglass
'radis to sto traje x vremena
Screen.MousePointer = vbDefault

sve ostalo samo zbunjuje korisnike
vidi GoranVucicevic #28045

www.clickersoftware.com
24.04.2008. u 17:47 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8655
*.dynamic.sbb.rs.

Sajt: www.diskusije.net


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 18:07
Ili uradis stvar u novom thread-u ;]
24.04.2008. u 18:07 

stefanpn
Stefan Kostic
Student, VPS
Paracin (Blace - FAX)

Član broj: 172809
Poruke: 291
91.150.125.*

Sajt: www.stefanpn.co.nr


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 18:21
Bre Shadowed, pa nije ovo [not]NET pa da se lako pokrene novi thread...

Sto se tice Goranovog resenja, moze i to da zbuni korisnike pa mislice da se program smrzo t.j. ukocio ako operacija malo duze potraje...
Da sam znao da je internet ovako dobar ja bih to postavio jos pre 30 godina.
24.04.2008. u 18:21 

goranvuc
Goran Vucicevic
Novi Sad

Moderator
Član broj: 4934
Poruke: 1589
79.101.215.*

Sajt: www.clickersoftware.com


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 18:38
Ja sam dao standardno resenje, tj. takvo resenje na koje su korisnici vec navikli, pa ne bi trebali da se zbune.

A za te tvoje ekstremno zbunjene korisnike moze ovo (pretpostavka je da postoji neka labela sa fontom bold, 36 na formi):
Code:

Label1.Caption = "Upravo se desava jedan proces za koji ne znamo koliko ce da traje, sacekajte molim Vas da se zavrsi, a u medjuvremenu mozete popiti kafu, otici na WC i sl."
'radis to sto traje x vremena
Label1.Caption = "Proces je uspesno zavrsen, ukoliko niste poslusali nas predlog i ostali da sacekate zavrsetak, mozete uvek ponovo pokrenuti ovaj proces i obaviti ono sto smo Vam predlozili"

ili nesto sl.
vidi GoranVucicevic #28045

www.clickersoftware.com
24.04.2008. u 18:38 

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 558
91.148.112.*

Sajt: www.eurora3d.com


Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 20:25
Citat:
stefanpn: Bre Shadowed, pa nije ovo [not]NET pa da se lako pokrene novi thread...

Sto se tice Goranovog resenja, moze i to da zbuni korisnike pa mislice da se program smrzo t.j. ukocio ako operacija malo duze potraje...

Pa nije ni tako tesko :)
Evo ovako moze da se napravi Thread u VB6
Subrutina ThreadFunc se izvodi u threadu
Modul
Code:

Public Const CTF_COINIT = &H8
Public Const CTF_INSIST = &H1
Public Const CTF_PROCESS_REF = &H4
Public Const CTF_THREAD_REF = &H2

Declare Function SHCreateThread Lib "shlwapi.dll" (ByVal pfnThreadProc As Long, pData As Any, ByVal dwFlags As Long, ByVal pfnCallback As Long) As Long

Public Sub ThreadFunc() 'Thread Subrutina
Dim i As Integer
For i = 0 To 99
Debug.Print "broj i = " & CStr(i)
Form1.Caption = CStr(i) ' test program je imao formu Form1
Next i
End Sub


Pozivanje (npr. iz Forme)
Code:

Dim hThr As Long
hThr = SHCreateThread(AddressOf ThreadFunc, ByVal 0&, CTF_INSIST, ByVal 0&)

char $[12] = "0D3 aroruE0";char* $$ = &$[10];
while(*(--$$)!='0')
cout << (char)*$$;
24.04.2008. u 20:25 

[es] :: Visual Basic 6 :: Povezivanje progresbara sa podacima u bazi

[ Pregleda: 539 | Odgovora: 7 ]

Postavi temu Odgovori

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