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

Listview =Listview

[es] :: Visual Basic 6 :: Listview =Listview

[ Pregleda: 4521 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Listview =Listview12.09.2003. u 01:44 - pre 204 meseci
Imam problem koji pokusavam da resim ali mi ne ide a to je:
Imam dva objekta listview-a ,dve tabele u access-u koje su relacijski povezane 1>vise.E sad u jednoj od listview-a nalazi se recimo podaci porudzbe(parent tabela) a u drugoj detalji(child tabela) tih porudzbi.Sad bih trebao da kad kliknem na na jednu od porudzbi u drugom listview-u da dobijem podatke o detaljima o toj porudzbi.Kako da povezem ta dva objekta?Puno bi mi pomogli.
Hvala unapred.
i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview12.09.2003. u 10:57 - pre 204 meseci
Kad selektujes item u parent listviewu, tada bi trebao da azuriras child view. Znaci na click eventu (mislim da je ovaj event u pitanju), trebao bi da ispraznis child listview, otvoris recordset sa podacima na osnovu selektovanog parenta i nafilujes podatke iz recordseta u child view. Drugo resenje je da povuces sve podatke na pocetku i da ih drzis u nekoj kolekciji, i onda da radis sa kolekcijom a ne kacis na bazu svaki put kad ti trebaju podaci. Oba resenja uticu na performanse aplikacije, kod prvog se stalno kacis na bazu, a u drugom slucaju sve podatke drzis u memoriji, tako da treba videti sta je "bezbolnije".
 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview12.09.2003. u 11:44 - pre 204 meseci
Hvala ti na brzom odgovoru ali sam malo zbunjen.Mozda kad bi mi dao mali deo sintaxe ili primercic u vezi prvog slucaja jer u drugom slucaju (mislim na kolekciju) nisam vest..
i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview12.09.2003. u 12:24 - pre 204 meseci
Evo primercic, dve tabele: Patient (parent) i Study (child)

Code:

Option Explicit

Private Const mcstrDSNBeg       As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Private Const mcstrDSNEnd       As String = ";Persist Security Info=False"
Private Const mcstrPath         As String = "C:\Projects\XoranCAT\XoranData.mdb"
Private Const mcstrDSN          As String = mcstrDSNBeg & mcstrPath & mcstrDSNEnd

Private Const mcstrSQLParent    As String = "SELECT * FROM Patient"
Private Const mcstrSQLChild     As String = "SELECT * FROM Study WHERE PatientID=<PatID>"

Private Sub Form_Load()
    Call m_FillParent       ' popuni parent view
    Call lvwParent_Click    ' da bi se child view popunio
End Sub

Private Sub m_FillParent()
Dim adoConn As ADODB.Connection
Dim adoRS   As ADODB.Recordset
Dim Itm     As ListItem

    lvwParent.ListItems.Clear

    Set adoConn = New ADODB.Connection
    Set adoRS = New ADODB.Recordset
    
    adoConn.Open mcstrDSN
    adoRS.Open mcstrSQLParent, adoConn
    
    While Not adoRS.EOF
        Set Itm = lvwParent.ListItems.Add(, , adoRS("LastName") & ", " & adoRS("FirstName"))
        Itm.Tag = adoRS("PatientID") ' u tag stavi kljuc koji je veza sa child tabelom
        
        adoRS.MoveNext
    Wend
    
    adoRS.Close
    adoConn.Close
    
    Set adoRS = Nothing
    Set adoConn = Nothing
    
End Sub

Private Sub m_FillChild(ParentKey As Long)
Dim adoConn As ADODB.Connection
Dim adoRS   As ADODB.Recordset
Dim Itm     As ListItem
Dim Qry     As String

    lvwChild.ListItems.Clear
    
    Qry = Replace(mcstrSQLChild, "<PatID>", ParentKey)

    Set adoConn = New ADODB.Connection
    Set adoRS = New ADODB.Recordset
    
    adoConn.Open mcstrDSN
    adoRS.Open Qry, adoConn
    
    While Not adoRS.EOF
        Set Itm = lvwChild.ListItems.Add(, , adoRS("Title"))
        
        adoRS.MoveNext
    Wend
    
    adoRS.Close
    adoConn.Close
    
    Set adoRS = Nothing
    Set adoConn = Nothing
End Sub

Private Sub lvwParent_Click()
Dim ParentKey As Long
    If Not lvwParent.SelectedItem Is Nothing Then
        ParentKey = lvwParent.ListItems.Item(lvwParent.SelectedItem.Index).Tag
        m_FillChild ParentKey
    End If
End Sub


 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview13.09.2003. u 17:07 - pre 204 meseci
I dalje pokusavam ali nista.Znam , radim sa DAO objektom (za razliku od tvog coda)ali mislim da sam dobrom postavio code.Evo pogledaj i ti pa mi reci gde gresim
Code:
Dim rsPOR As Recordset 'rspor=parent tabela
Dim rsDET As Recordset 'rsdet=child tabela

Private Const str      As String = "SELECT * FROM porudzba"
Private Const str1     As String = "SELECT * FROM detprodaje WHERE brporudzbe = brporudzbe"

Private Sub Form_Load()
Data 'baza podataka Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "/leka.mdb")
ucit
L1_Click
End Sub

Private Sub UCitaj(ParentKey As Long)


Dim quer As String
quer = Replace(str1, "brporudzbe", ParentKey)
 Set rsDET = db.OpenRecordset(quer)
 Dim Itm As ListItem
Lv2.ListItems.Clear
   
    While Not rsDET.EOF
        Set Itm = Lv2.ListItems.Add(, , rsDET("brporudzbe"))
        
        rsDET.MoveNext
    Wend
rsDET.Close
Set rsDET = Nothing

End Sub
Private Sub ucit()
Set rsPOR = db.OpenRecordset("select * from porudzba ")
Dim Itm As ListItem
L1.ListItems.Clear

  While Not rsPOR.EOF
        Set Itm = L1.ListItems.Add(, , rsPOR!ID_kupac)
        Itm.SubItems(1) = rsPOR!brporudzbe
        Itm.Tag = rsPOR("brporudzbe") ' u tag stavi kljuc koji je veza sa child tabelom
        
       rsPOR.MoveNext
    Wend
rsPOR.Close
Set rsPOR = Nothing

End Sub

Private Sub L1_Click()
Dim ParentKey As Long
    If Not L1.SelectedItem Is Nothing Then
        ParentKey = L1.ListItems.Item(L1.SelectedItem.Index).Tag
        UCitaj ParentKey
    End If
End Sub

i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview14.09.2003. u 14:12 - pre 204 meseci
Ne znam sta ti tacno ne radi ovde, ali imas jednu "gadnu" gresku u svom kodu.

Code:

Private Const str1     As String = "SELECT * FROM detprodaje WHERE brporudzbe = brporudzbe"

...

quer = Replace(str1, "brporudzbe", ParentKey)



Replace ce ti zameniti sva pojavljivanja trazenog stringa, tako da ce tebi query izgledati ovako (za npr. ParentKey=1)

SELECT * FROM detprodaje WHERE 1 = 1

a ovo je isto sto i SELECT * FROM detprodaje WHERE True, pa ce ti selektovati sve zapise.

Primeti da sam ja koristio <>, na taj nacin si siguran da sa Replace neces promeniti nista u queryu sto ne trebas. Znaci ove dve linije tvog koda odozgo bi trebalo da izgledaju ovako:

Code:

Private Const str1     As String = "SELECT * FROM detprodaje WHERE brporudzbe = <brporudzbe>"

...

quer = Replace(str1, "<brporudzbe>", ParentKey)


Ako ti kod ne radi, napisi sta se desava (kako vidis da ne radi).
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview14.09.2003. u 14:20 - pre 204 meseci
e da, ova linija izgleda bas cudno

Code:

Data 'baza podataka Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "/leka.mdb")

 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview15.09.2003. u 00:01 - pre 204 meseci
Postavio sam onako kako si rekao:
Code:
Private Const str1 As String = "SELECT * FROM detprodaje WHERE brporudzbe = <brporudzbe>"

...

quer = Replace(str1, "<brporudzbe>", ParentKey)
[/code]

ali mi javlja gresku "data type mismatch in criteria expresion" kad sklonim znakove<> onda mi ne javlja gresku ali ucita mi u listview-u(child) sve podatke umesto podatka koji sam izabrao u parent(listview-u).Nemam predstavu sta da radim.
E da dali ima negde na netu e-knjiga (ili mozda neki site )tutorijala za manipulaciju objektima i kontrolama narocito sa listview, listboxu i flexgrid-u?Imam par knjiga (piter norton(vb6.0) i curtis smith(vb6.0 povezivanje baza podataka) ali nijedna nije bas opsirna sto se tice manipulacijom kontrola kao recimo ovaj moj problem.
i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview15.09.2003. u 10:50 - pre 204 meseci
Kad izbacis <> onda tvoj upit postane SELECT * FROM detprodaje WHERE True i onda ti vrati sve zapise zato sto svi zapisi zadovoljavaju kriterijum True

Ajde stavi jedan debug.print quer posle tog replacea, pa postuj ovde kako ti izgleda upit kada se u njega stavi parametar. I jos nesto kog ti je tipa polje brporudzbe u detprodaje? Ako je tipa Text onda upit mora da izgleda ovako:

Code:

Private Const str1 As String = "SELECT * FROM detprodaje WHERE brporudzbe = '<brporudzbe>'"


Sto se tice tutoriala, mislim da je MSDN dovoljan za ove stvari.
 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview15.09.2003. u 15:40 - pre 204 meseci
Tip polja u tabeli jeste text i uradio sam onako kako si rekao ali sad uopste nemam podatke u child(Lv2).Uradio sam i debug:
Code:

False
SELECT * FROM detprodaje WHERE brporudzbe = '243'

to je to nije mi vratio true zapise izgleda da je tu greska ali ja je ne znam ukloniti.
Izvini sto te smaram ali to mi je bas potrebno.Hvala
i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview15.09.2003. u 15:44 - pre 204 meseci
Da li ti je prijavio gresku prilikom izvrsavanja ovog upita?
Napravi u accessu novi query, i pasteuj ovaj SQL upit (SELECT * FROM detprodaje WHERE brporudzbe = '243') pa vidi da li ti tamo radi.
 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview15.09.2003. u 16:27 - pre 204 meseci
Uspio sam.Ali sam morao da polje brporudzbe u Access-u promenim u number to je jedini uslov.Verovatno je u pitanju bilo to sto je u polju bio broj '0000243' a on mi ga registrovao kao '243'.Kako da mi cita i nule?
i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview15.09.2003. u 16:49 - pre 204 meseci
ParentKey deklarisi svuda kao String umesto kao Long, ali moras da vratis da polje bude Text
 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview15.09.2003. u 16:52 - pre 204 meseci
To je to.MNOGO ti hvala STVARNO si mi pomogao!!!
i don't like money oh yea,i love it
 
Odgovor na temu

rainman1977
zemlja dembelija

Član broj: 7771
Poruke: 84
*.bn.pttrs.net

ICQ: 200221484


Profil

icon Re: Listview =Listview19.09.2003. u 00:19 - pre 204 meseci
Znam da sam dosadan ali sta da radim.Pojavio mi se jos jedan problem koji je vezan za ovaj a to je da sam sad ubacio textbox kontrolu u ovu formu koja je povezana sa tabelom "kupci".E sad bih zelio da na text_change dogadjaj (znaci ,kad trazim IDkupca u text) u Listview-u (parent) pojave samo podaci koji je taj trazeni kupac imao.Pokusao sam na prethodne nacine ali nije uspelo. Koji bi bio princip ili sintaxa?


P.S. trazio sam u msdn ali nisam nasao ni primer.Jos samo ovaj put molim na odgovor.
i don't like money oh yea,i love it
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: Listview =Listview19.09.2003. u 10:35 - pre 204 meseci
Change event nije bas najsjajnije resenje. Ako u taj txtbox ukucas 123456 Change event ce se okinuti 6 puta. Bolje koristi LostFocus event, ili stavi dugme na koje bi to trebalo da se radi.

Postuj kod koji si napravio pa da vidimo
 
Odgovor na temu

[es] :: Visual Basic 6 :: Listview =Listview

[ Pregleda: 4521 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

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