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: 2042 | Odgovora: 7 ] > FB > Twit

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 - pre 194 meseci
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.
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.114.*



+7 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 15:10 - pre 194 meseci
Pa nemozes (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.
 
Odgovor na temu

stefanpn
Total anonymous
Programer

Član broj: 172809
Poruke: 509
91.150.125.*



+1 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 17:22 - pre 194 meseci
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
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
79.101.215.*



+41 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 17:47 - pre 194 meseci
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
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 18:07 - pre 194 meseci
Ili uradis stvar u novom thread-u ;]
 
Odgovor na temu

stefanpn
Total anonymous
Programer

Član broj: 172809
Poruke: 509
91.150.125.*



+1 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 18:21 - pre 194 meseci
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...
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
79.101.215.*



+41 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 18:38 - pre 194 meseci
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.
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.112.*



+7 Profil

icon Re: Povezivanje progresbara sa podacima u bazi24.04.2008. u 20:25 - pre 194 meseci
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&)

 
Odgovor na temu

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

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

Postavi temu Odgovori

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