[ miki987 @ 04.12.2009. 12:27 ] @
Molim Vas pomozite mi oko ovoga:
Radim u vb6, ado, imam formu i na njoj Combo1 i Text1.Text . Combo1 vuce tabelu iz accessa i odredjenu kolonu. Zelim da se na dogadjaj Combo1_click() ili Combo1_AfterUpdate() u Text1.Text nadje tekst a koji je u access-u u istoj koloni sa predhodno odabranim iz Combo1.Evo i primera, pa mi recite gde zapinje i sta raditi?

p.s. baza je u C:/
[ miki987 @ 04.12.2009. 21:12 ] @
ima li pomoci od nekog, zaista vise ne znam sta da probam, molim vas neka mi neko pomogne
[ dzigilibonglica @ 04.12.2009. 23:52 ] @
Evo ovako:

Promenio sam ti putanju baze koju gadjas na App.Path

Takodje sam promenio: Dogadjaj combo1.click; i proceduru za ucitavanje artikala u combo.

Kod ucitavanja u kombo, ucitavam i sifru artikla, koju konvertujem u long i stavljam u combo1.ItemData(Redni_broj_u_listi), gde je
redni_broj_u_listi= 0 <-> (combo1.listcount-1)

Kada kliknesh na combo, on ucitava iz baze artikal i trpa u textbox neko polje iz zapisa koje ima sifru koja odgovara vrednosti combo1.ItemData(redni_broj_u_listi/combu) i neko polje iz vrste trpa u textbox.

U bazi ti ne prima decimale za cenu jer ti je polje cena tipa integer, a treba double, tako da sam i to promenio.

Kada otvorish neki recordset, treba i da ga zatvorish, u suprotnom ti je konstantna veza sa bazom, a u zavisnosti od tipa recordseta, u mreznom okruzenju moze da se desi da ako neko nesto promeni, neko drugi tome ne moze da pristupi, jer je to polje zakljucano u pojedinim situacijama!


I daj MAJKE TI pishi kood malo urednije,

NAZUBI GA MALO, ovo sto si ti stavio ovo je KATASTROFA, kako se uopste i snalazish u tome....?

Ako sam dobro razumeo tvoj problem ovo je resenje za njega.

Pozdrav, i NAZUBI KOOD



[Ovu poruku je menjao dzigilibonglica dana 05.12.2009. u 01:19 GMT+1]
[ miki987 @ 06.12.2009. 19:02 ] @

"Promenio sam ti putanju baze koju gadjas na App.Path"
vise mi odgovara c:/ :D

a sto se tice ovoga, javljam se sutra ne znam sto ali ovaj vb6 mi vise ne radi stalno ukljucuje dodatak instalaciji kada pokrenem program (isto kao i kod word-a kad trazi dopunu instalacije ponekad)...
[ miki987 @ 07.12.2009. 07:04 ] @
evo me, i ovo radi :D veliko Hvala to je to, a sad kako bih shvatio sustinu molim te objasni mi sta ovaj kod radi:

Code:
BrojacArtikala = -1

Do Until rs.EOF
    BrojacArtikala = BrojacArtikala + 1
    Combo1.AddItem rs("naziv_robe")
    Combo1.ItemData(BrojacArtikala) = Round(CDbl(rs.Fields.Item(0).Value), 2)


i jos ovo pitanje, kako da uz pomoc ovoga prikazem pdv (-18%)

Code:
pdv.Text = rs.Fields.Item(2) - rs.Fields.Item(3)


[Ovu poruku je menjao miki987 dana 07.12.2009. u 08:47 GMT+1]
[ miki987 @ 07.12.2009. 13:32 ] @
evo mene opet, sada drugi problem a negde zapinje, molim te pogledaj:

zelim da trenutno stanje u listview'u pod kolonom PDV izracunam sve sto je upisano u njoj a onda prikazem u textbox
imam sledece

Code:
Private Sub Command7_click()
Dim racun1 As String
Dim racun_UR As Double
Dim SQL As String
openconn
SQL = "SELECT * FROM baza_faktura ORDER BY datum DESC;"
Set rs = conn.Execute(SQL)
If rs.EOF Then
    closeconn
    Exit Sub
End If
racun1 = rs.Fields.Item(8)
If rs.RecordCount > 0 Then rs.MoveFirst 'ides na pocetak
Do While Not rs.EOF
If rs("pdv") = racun1 Then
racun_UR = racun_UR + 1
End If
rs.MoveNext
Loop
zbir.Text = Format(racun_UR, "###,##0")
closeconn
'zbir.Text = Format(Val(rs.Fields.Item(8)), "0.00")
End Sub



dakle zbir svih vrednosti koje su upisane

[Ovu poruku je menjao miki987 dana 08.12.2009. u 14:21 GMT+1]
[ miki987 @ 08.12.2009. 13:21 ] @
ajde da probam ovako. kako da saberem sve vrednosti koje se nalazi u listview-u pod jednom kolonom?
[ dzigilibonglica @ 09.12.2009. 12:02 ] @
Gledaj ovako:

MOLIM TE NAZUBI KOOD....

Pogledacu, inace ne koristim listview, ali pogledacu...
[ dzigilibonglica @ 09.12.2009. 12:10 ] @
Code:

BrojacArtikala = -1

Do Until rs.EOF
    BrojacArtikala = BrojacArtikala + 1
    Combo1.AddItem rs("naziv_robe")
    Combo1.ItemData(BrojacArtikala) = Round(CDbl(rs.Fields.Item(0).Value), 2)


Evo vidish, ta vrednost BrojacArtikala ti daje redni broj iz recordseta rs (ide od 0-rs.RecordCount-1), a treba ti da znash na koje mesto u Combu da nekoj vrednosti dodash Combo1.ItemData(BrojacArtikala) sto ti je neka Long vrednost vezana za svaku stavku iz liste (u ovom slucaju PrimaryKey iz tabele tvoje baze, na osnovu kojeg kasnije nadjesh zapis).

Gledaj to ovako:

U svakoj Listi/Combo-u imash 3 property-ja vrednosti koja su ti jaaako bitna:

1)String(Ono sto se vidi u listi/combu), kao vrsta na koju klikcesh
2)Long (Ono sto se ne vidi)
3)Redni broj u listi (Nesto.listIndex), Integer

Code:

Combo1.List(BrojacArtikala)="Pera"
Combo1.ItemData(BrojacArtikala)=2230






[ miki987 @ 09.12.2009. 13:09 ] @
dzigilibonglica, najpre Hvala na savetima i pomoci
ovo nazubi kod ne znam sta znaci :D, mozda ono da ide stepenasto ? ako je to e tek tad ne umem da se snadjem, meni je ovako nekako mi se cini preglednije :D
sto se tice ove price oko combo-a ono prvo sam resio uz pomoc tebe
sada nezavisno od toga radim u listview-u i tu mi zapelo a da ne bi otvarao novu temu i time iritirao ... pokusao sam ovde obzirom da je slicna tematika
dakle, imam listview i u njemu polje (Column) "iznos" koji se puni iz tablice "iznos" iz baze u access-u.
Zelim da, povremeno proveravam ukupno stanje polja iznos a koji se povremeno puni, menja, brise i t.d.
to je zapravo kartica dugovanja
koristim ADO, listview1
[ dzigilibonglica @ 09.12.2009. 21:03 ] @
Da to nazubljivanje je to stepenasto.

Svi to rade i tako je preglednije, tako se vide celine (petlje, uslovi....) i lakse se uocava gde je sta. Za to se koristi TAB.

Ti si prvi programer za kojeg ja znam da ne nazubljuje kood, ali nema veze, sta je tebi ok, meni josh bolje. Nego problem je taj, kada nekome postujesh kood da ti pronadje gresku, svi se pogube kada to vide tako haoticno, pa izgube volju da ti pomognu...

Znaci navikni se da ga nazubljujesh, vishe ce ti ljudi pomagati.

Da se vratimo problemu:

Ne morash da radish to sabiranje kolone iz listview-a, radi to iz recordseta rs, brze je a i manje memorije jede.

Najjednostavnije:
Code:

Private Function Zbir()as Double
Dim rs As ADODB.Recordset
Dim TempVrednost As Double

On Error Resume Next

    Set rs = New ADODB.Recordset
    rs.CursorType = adOpenDynamic
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic
    
    rs.Close
    Err.Clear
    
    TempVrednost=0
    rs.Open "SELECT Iznos FROM Fakture", baza, , adCmdTable
    
    Broj = rs.RecordCount
    For i = 0 To Broj - 1
        if i=0 then
        rs.MoveFirst
    else
            rs.MoveNext
    endif
        TempVrednost =TempVrednost + rs.Fields.Item(0).Value
    Next i
    rs.Close
    Zbir=TempVrednost
End Function



[Ovu poruku je menjao dzigilibonglica dana 09.12.2009. u 22:30 GMT+1]

[Ovu poruku je menjao dzigilibonglica dana 09.12.2009. u 22:30 GMT+1]
[ miki987 @ 10.12.2009. 08:12 ] @
ne vredi druze nista nisam uspeo, konstanto mi javlja 0 kao sumu
[ dzigilibonglica @ 10.12.2009. 10:55 ] @
Izvoli...

Gde su bile greske:

Bilo je
Code:

      rs.Open "SELECT broj FROM firma", broj, , adCmdTable


A trebalo je :
Code:

      rs.Open "SELECT broj FROM firma", conn, , adCmdTable



Dalje:

Ako si u SELECT naredbi rekao
Code:

SELECT broj FROM firma

Onda ti imash samo jedno polje "Broj" i njegov index u Recordsetu je 0, a ne 4.

[ miki987 @ 11.12.2009. 10:44 ] @
ok druze, to je ono sto je meni potrebno ali mala izmena, ja zelim prikazati rezultat iz trenutnog listview-a, dakle ne iz cele baze vec ono sto se trenutno nalazi u listviev3? da li je to moguce, inace za prikaz podataka u listview3 koristim sledece:

1.Imam listview1 i prkaz faktura sa nekim osnovnim podacima (ne sve), dakle redni_broj, datum, broj_fakture, kupac,iznos koji se vuku iz tablice baza_faktura.
2.Na dogadja dblClick_lisview1 imam otvaranje nove forme i na njoj listview2, vrsi se upit u istu tablicu (baza_faktura) i prikazuju kompletne informacije tipa redni_broj, datum, broj_fakture, kupac,artikal,iznos.pdv i t.d.
3. Na dogadjaj Stampanje_click() - datareport takodje vrsi upit i prikazuje sve sto je pronadjeno pod broj_fakture

ja zelim da sada racunam pdv, iznos, rabat u toj istoj formi (form2) a da iste u datareport prikazem iz texbox-a, dakle stanje pdv, rabat, iznos i t.d. i to sam zamislio tako sto ce se vrsiti upit u baza_faktura ali samo ono sto je prikazano u tom trenunom listview3

nadam se da ste/si me razumeli/o

pretraga i prikaz u listview3 na form2 iz lisview1 sa form1

Code:
Sub pretrazi()
Dim SQL As String
Dim search As String
Form2.ListView3.ListItems.Clear
On Error Resume Next
search = ListView1.SelectedItem.SubItems(1)
Err.Clear
openconn
SQL = "SELECT * FROM baza_faktura WHERE broj_fakture = '" & broj_fakture & "' ORDER BY broj_fakture  DESC;"
Set rs = conn.Execute(SQL)
If rs.EOF Then
MsgBox "U bazi ne postoji ni jedan zapis!", vbExclamation, "Access"
closeconn
Exit Sub
End If
Form2.ListView3.ListItems.Clear
Do Until rs.EOF
Form2.ListView3.ListItems.Add 1, , rs("redni_broj")
Form2.ListView3.ListItems(1).SubItems(1) = rs("datum")
Form2.ListView3.ListItems(1).SubItems(3) = rs("kolicina")
Form2.ListView3.ListItems(1).SubItems(2) = rs("broj_fakture")
Form2.ListView3.ListItems(1).SubItems(4) = rs("jm")
Form2.ListView3.ListItems(1).SubItems(5) = rs("kupac")
Form2.ListView3.ListItems(1).SubItems(6) = rs("sifra")
Form2.ListView3.ListItems(1).SubItems(7) = rs("naziv_artikla")
Form2.ListView3.ListItems(1).SubItems(8) = rs("iznos")
Form2.ListView3.ListItems(1).SubItems(9) = rs("pdv")
Form2.ListView3.ListItems(1).SubItems(10) = rs("rabat")
Form2.ListView3.ListItems(1).SubItems(11) = rs("mp_vp")
Form2.ListView3.ListItems(1).SubItems(12) = rs("valuta")
rs.MoveNext
Loop
closeconn
End Sub



a ovo je suma iz polja "iznos" u tablci baza_faktura

Code:
Private Sub Command7_Click()
Dim rs As ADODB.Recordset
Dim TempVrednost As Double
On Error Resume Next
    Set rs = New ADODB.Recordset
    rs.CursorType = adOpenDynamic
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic
    
    rs.Close
    Err.Clear
    
    TempVrednost = 0
    openconn
    rs.Open "SELECT iznos FROM baza_faktura", conn, , adCmdTable
    
    broj = rs.RecordCount
    For i = 0 To broj - 1
    If i = 0 Then
        rs.MoveFirst
    Else
            rs.MoveNext
    End If
        TempVrednost = TempVrednost + rs.Fields.Item(0).Value
    Next i
    rs.Close
    Text3.Text = TempVrednost
    closeconn
End Sub


i na kraju, ono sto zelim je da se ovde u ovom poslednjem kodu izvrsi racunanje po upitu po broju_fakture, odnosno da se u text.text prikaze zbir polja "iznos" iz lisview3
[ miki987 @ 11.12.2009. 11:16 ] @
reseno, mada ne znam da li na pravi nacin
molim te pregledaj pa mi javi



Code:
Private Sub Command7_Click()
Dim rs As ADODB.Recordset
Dim TempVrednost As Double
Dim search As String

ListView3_Click

search = ListView3.SelectedItem.SubItems(8)

On Error Resume Next
    Set rs = New ADODB.Recordset
    rs.CursorType = adOpenDynamic
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic
    
    rs.Close
    Err.Clear
    
    TempVrednost = 0
    openconn
    rs.Open "SELECT iznos FROM baza_faktura WHERE broj_fakture = '" & broj_fakture & "' ORDER BY iznos DESC; ", conn, , adCmdTable
    broj = rs.RecordCount
    For i = 0 To broj - 1
    If i = 0 Then
        rs.MoveFirst
    Else
            rs.MoveNext
    End If
        TempVrednost = TempVrednost + rs.Fields.Item(0).Value
    Next i
    rs.Close
    Text3.Text = TempVrednost
    closeconn
End Sub



i jos 2 pitanja:

1. kako u datareportu postaviti sliku
2. koji status je najbolje dodeliti polju u access-u ako je u pitanju numericka vrednost i ako ima za cilj racunanje, a pitam najvise zbog decimala,desava mi se da se broj zaokruzuje?

[Ovu poruku je menjao miki987 dana 11.12.2009. u 12:35 GMT+1]
[ dzigilibonglica @ 11.12.2009. 20:53 ] @
Ej nemam snage....

Jedno je da ti pomognem, i to je ok, ali problem za problemom...
Ili uzmi neku knjigu, ili kurs ovo je smesno...

Ej tu je i tu je problem, pa napishem kood, pa nazubim kood, ali ovo mi lici na sledece: Neko ti zada zadatak na poslu, ti nesto skarabudzish, postujesh na forum i cekash resenje.

Evo za pocetak ovo uci:

Mastering Visual Basic 6
Evangelos Petroutsos

Ili se bar potrudi da malo pretrazish forume za resenjem, makar slicnim pa ga probaj razumeti...
Drugacije necesh razumeti. Nije fora da ti stalno neko pishe kood pa ga samo copy paste, morash da naucis sustinu.

Ako sam ti objasnjavao vec dva puta istu tematiku, isti problem, samo druge promenjive, onda ocigledno nesto nije u redu, a resenje ovoga ti je u mojim prethodnim postovima tebi, pa cak i u ovoj temi.


Objasnio sam ti sto sam menjao na Double u bazi (zbog decimala), sada me opet to pitash, SQL ne znam da li znash da napishesh ili ga samo citash , a ADO ..... Jbg.

Aj sada opet imam snage:

Integer:Kratki celi brojevi
Long: Dugi celi brojevi (preko 32000)
Single: Kratki Realni brojevi
Double: Dugi realni brojevi sa dvostrukom tacnoscu

Ako u bazi stavish Long(Long integer), pa normalno da ce ti zaokruziti.



Nebitno da li sabirash iz ListViewa ili recordseta, bitno da im je isti izvor, odnosno da im je isti uslov u SQL komandi koja ih puni.

Necu ti gledati kood, nauci saam da ga ispravljash, vec imash resenje, ne treba da trazish da ti neko radi poslove, vec da te neko nesto nauci.

JBG, sad sam malo ispi*deo...
[ captPicard @ 11.12.2009. 21:59 ] @
Miki ja sam ti isto to rekao prije par mjeseci i to nekoliko puta, očito me nisi poslušao.
[ miki987 @ 11.12.2009. 23:09 ] @
vidi ovako, ja sam resenje sam nasao odmah nakon tvoje pomoci, ok sto sam ishitreno napisao predhodni post i pitao koji je problem i zasto nece ali sta onda, trebao sam da brisem celu poruku??? ne naravno vec sam je ostavio i cekao komentar i misljenje da li je to u redu

sto se tice zaokruzivanja moram da kazem obojici (s' postovanjem) da to nije bio problem i da sam to apsolvirao i zato mi je bilo cudno zasto se tako ponasam a greska j e bila u formatu teksta koji je bio zadat text polju format(text1.text, "0")

dakle ne kopiram i cekam gotovo resenje od vas, javim se samo onda kad zapne i uvek postujem moj kod, dakle nikad gotov kod!!! druga stvar je sto mi se desava je sto igrom slucaja provalim gde je greska nedugo nakon postavljanja pitanja

nema potrebe da se is...vas, ako ce vam biti lakse ajde da niko nista ne pise, niko nista ne pita

ja ako nesto znam pomoci cu onom ko ne zna jer on treba da uci a ne onaj koji zna,na greskama se uci. za razliku od mnogiih ja ne pravim duple naloge kako bih navodno bio "pocetnik" i pitao pitanja za koje ih je sramota a profi su programeri...mene nije sramota, pitam pa ako mi neko zeli pomoci Hvala ako ne opet Hvala

Hvala jos jednom i sve najbolje