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

Listbox RemoveItem i problem sa zarezom

[es] :: Access :: Listbox RemoveItem i problem sa zarezom

[ Pregleda: 2220 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Untouchabble
Untouchabble
Beograd

Član broj: 77524
Poruke: 169
79.101.90.*



Profil

icon Listbox RemoveItem i problem sa zarezom04.10.2008. u 17:27 - pre 189 meseci
Imam multicolumn value listbox koji se po potrebi puni ili prazni podacima. Problem nastaje kada treba da uklonim odredjeni red iz listboxa - naime ukoliko se u podacima nalaze brojevi sa zarezom, nastaje totalni haos i ne uklanja se samo red koji je potreban vec i odredjena polja iz drugih redova. Ovo se ne desava ako podaci ne sadrze zarez, pa pretpostavljam da je neki sistemski propust kod accessa.
Btw, postoji li nacin da editujem odredjeno polje (presek reda i kolone) u multicolumn listboxu?

Help please!
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Listbox RemoveItem i problem sa zarezom06.10.2008. u 14:20 - pre 189 meseci
Mozda International settings za tvoj racunar razume zarez drugacije nego ti. Nekad zarez znaci decimalni separator, a nekad je to tacka. Obicno, ako koristis zarez kao decimalni separator, onda nesto drugo, obicno ; ide kao separator za liste. Tu malo pogledaj. Bez zakacene baze i koda sa test podacima ne mozemo ti pomoci vise od ovoga.
 
Odgovor na temu

Untouchabble
Untouchabble
Beograd

Član broj: 77524
Poruke: 169
77.46.164.*



Profil

icon Re: Listbox RemoveItem i problem sa zarezom06.10.2008. u 15:24 - pre 189 meseci
";" je separator za liste, a deo koda koji brise red je prost i izgleda ovako:
Code:
Private Sub cmdIzbaci_Click()
        'Ovo je zbog postojanja zaglavlja (header row)
        If lstUnos.ListIndex >= 0 Then
              lstUnos.RemoveItem (lstUnos.ListIndex + 1)
        End If
End Sub

ListBox se puni ovako:
Code:
If boolIzmena = True Then
        Dim rstDnevnik As New ADODB.Recordset
        Dim rstUnos As New ADODB.Recordset
        Dim rstPrivremena As New ADODB.Recordset
        
        rstDnevnik.Open "SELECT * FROM tblDnevnikPromena WHERE IDDnevnik = " & CStr(lngIDDnevnik), cnnVeza, adOpenKeyset, adLockOptimistic
        strBrojKalkulacije = rstDnevnik!BrojKalkulacije
        lngRedniBroj = rstDnevnik!RedniBroj
        
        rstUnos.Open "SELECT * FROM tblUnosRobe WHERE IDDnevnik = " & CStr(lngIDDnevnik), cnnVeza, adOpenKeyset, adLockOptimistic
        lngIDArtikal = rstUnos!IDArtikal
        strNazivDobavljaca = NazivDobavljaca
        
        DoCmd.RunSQL "DELETE * FROM tblUnosPrivremena"
        rstPrivremena.Open "tblUnosPrivremena", cnnVeza, adOpenKeyset, adLockOptimistic
        
        Do Until rstUnos.EOF
            lngIDArtikal = rstUnos!IDArtikal
            If PronadjiArtikal = True Then
                lstUnos.AddItem lngIDArtikal & ";" & strArtikal & ";" & intPLU & ";" & curNabavnaCena & ";" & curNabavnaCenaDin _
                & ";" & curProdajnaCena & ";" & rstUnos!Kolicina & ";" & NazivObuce & ";" & strKomentar & ";" & lngIDTipObuce
                rstPrivremena.AddNew
                rstPrivremena!IDArtikal = lngIDArtikal
                rstPrivremena!Kolicina = rstUnos!Kolicina
                rstPrivremena!ProdajnaCena = rstUnos!ProdajnaCena
                rstPrivremena.Update
            End If
            rstUnos.MoveNext
        Loop
        
        rstDnevnik.Close
        rstUnos.Close
        rstPrivremena.Close
        
End If

International settings su podesena na Serbian. Kazem, problem se ne javlja kada ne postoji zarez (tj kada se unosi ceo broj).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Listbox RemoveItem i problem sa zarezom06.10.2008. u 20:03 - pre 189 meseci
Ovo mi nesto izgleda mnooogo komplikovano. U accessu se list box uglavnion ne 'puni'. List box ima row source, koji je ili neki dataset (tabela, postojeci kveri, SQL izraz) ili lista necega (value list). Moze se i 'puniti', pomocu call-back funkcije, sto ovde nije slucaj, call-back funkcije se ne pisu ovako. Meni se cini da ti iz rekordseta citas nesto, pa gradis string vrednosti koje saljes u listu kao 'value list'. Tako mozda ide u VB, ne u Accessu. Mozda je lakse da sagradis SQL izkaz koji vraca ono sto hoces da vidis u listi, pa ako nesto hoces da uklonis iz liste, nanovo sagradis SQL iskaz.

Ako je value list slozen, onda je ; separator za redove, a , je saprator za polja unutar redova. Na primer imas listu:
'a1','b1','c1';'a2','b2','c2';'a3','b3','c3';
Ta lista ce se videti u list boxu kao:
'a1','b1','c1';
'a2','b2','c2';
'a3','b3','c3';

Znaci, zarez Access cita kao separator u nutra 'sloga'. Ako stavis umesto 'a', 'b','c' brojeve koji imaju decimalni zarez, kao 12,5 umesto 12.5 zbunices Access. Dobra lista:
12,15,12.5;
1.8,13,14;

Losa lista:
12,15,12,5; <-- je li ovo cetiri broja odvojena zarezom ili tri broja? je li 12,5 isto sto 12.5 ili su to dva bropja odvojena zarezom? Otkud Access moze da zna?
1,8,13,14; <-- da li imamo tri li cetiri broja?
1,2,3; <-- ovde su samo 3 elementata u listi, ako Access zakljuci da imas po cetiri, koji nedostaje? Poslednji? Ili neki u sredini?

Znaci, tacno je Access koristi zarez i tacka-zarz kao separatore. Ako elementi lsite sadrze nesto od toga, zbunices Access. Iz tog razloga je resenje sa Qury/table bolje nego gradjenje liste. Ako nesto fali negde u rekordu, bice NULL i na lst boxu ce se videti kao prazno mesto.

Zakljucak - za punjenje liste ne treba ti kod, za uklanjanje elemenata iz liste treba mozda malo drugaciji kod. mada bi verovatno iuklanjanje pojedinacnog reda radilo. kad Accesu kazes da je row source za listu neki query/table/SQL statement on u stvari za tebe 'napuni' listu. Mozda mozes da tada uklonis element bez da preracunavas SQL izkaz. Probaj.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Listbox RemoveItem i problem sa zarezom06.10.2008. u 20:28 - pre 189 meseci
Da li je u pitanju Access 2007 i čuvena MULTIVALUE FIELDS lista?
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Listbox RemoveItem i problem sa zarezom06.10.2008. u 21:10 - pre 189 meseci
Zar se za multivalued liste ne ide u zatvor do dve godine bez pomilovanaj? ne? Steta, trebalo bi.

:-)
 
Odgovor na temu

Untouchabble
Untouchabble
Beograd

Član broj: 77524
Poruke: 169
79.101.211.*



Profil

icon Re: Listbox RemoveItem i problem sa zarezom06.10.2008. u 23:44 - pre 189 meseci
Nije, Access 2003 je u pitanju.
Inace JOJ ako moram da menjam kod, jer je unos podataka malo slozeniji. Naime ovaj deo koda se koristi kada se radi izmena nekog unosa, pa korisnik moze po svom nahodjenju da ubacuje ili izbacuje podatke u listu. Odnosno, lista se inicijalno "napuni" podacima od prethodnog unosa, a zatim korisnik moze da je edituje - tj da brise ili unosi nove redove u listu. Kako to da izvedem kada dok se ne zavrsi editovanje, korisnik prakticno ne upisuje nista u bazu (prema tome SQL ne vredi) jer se unos tek nakon toga obradjuje i zatim memorise.
Da ne sirim pricu, radi se o robnom knjigovodstvu za moju firmu, pa je bitno da se podaci azuriraju u vremenskom domenu (tj postoji dnevnik svih unosa u bazu koji vodi racuna o eventualnoj retroaktivnoj promeni podataka).
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Listbox RemoveItem i problem sa zarezom07.10.2008. u 15:29 - pre 189 meseci
Nemoj da koristis listu uopste. Lista nije anmenjena za cuvanje podataka, lista samo priakzuje sat procita odnegde.

Umesto liste, imaj lokalnu tabelu u aplikaciji. Onda tu tabelu napuni podacima iz drugih tabela, kao sto punis listu. Append kveriji rade sasvim lepo, ne treba ti kod. Onda tu tabelu pokazi korisniku kroz datasheet formu i pusti ga da menja podatke do mile volje. Dobro, ne bas do mile volje. Posto sad imas formu, mozes da odradis validacije i logicke kontrole pri unosu, imas mnogo vise opcija nego da manipulises tekstualnu listu.

Kade zatvoris formu, uradi nesto sa tabelom - prebaci podatke tamo gde ce se cuvati, uradi upadte neke tamo atbele iz ove lokalne i slicno. I ne zaboravi da lokalnu tabelu izpraznis da spreman ceka novu upotrebu.

U apliakciji stavi da se Compact On Close, da ti ne bi rasla aplikacija zbog pisanaj i brisanja po lokalnoj tabeli.

 
Odgovor na temu

Untouchabble
Untouchabble
Beograd

Član broj: 77524
Poruke: 169
79.101.211.*



Profil

icon Re: Listbox RemoveItem i problem sa zarezom07.10.2008. u 18:19 - pre 189 meseci
Pa ajde pokusacu, mada datasheet obrasce nikad nisam koristio, valjda cu se snaci.
Hvala na sugestijama
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Listbox RemoveItem i problem sa zarezom07.10.2008. u 21:14 - pre 189 meseci
Datasheet su veoam mocne alatke.

Datasheet se pravi za 10 sekundi. Kriras novu formu. U Format properties stavis da je deafult view = Datasheet. Stavis da je Datasheet View allowed, sve ostalo nije. Dodas record source za formu. Sve kolone iz record source navuces na formu odjedno. Gotovo. Save. Nema potreba da rasporedjujes kontrole. U dizajnu ce uvek da izgleda kao naka forma a otvrarace se kao datasheet.

Na datasheet formu mozes da stavis event procedure ako ti treab kao i na svaku kontrolu. Ne moraju da budu samo text-boxovi. Mozes da iams i combo box na datasheetu, sa LimitToList = Yes ako treba i slicno. Sve kao obicna forma, samo ne moras rasporedjivati kontrole.

Mozes cak i subformu da navuces na formu koja je datasheet. tada dobijes u datasheet one male plusice s leve strane na record selectoru i kad kliknes na plusic dobjes subdatasheet efekat drill-down. Naravno, i subdatasheet moze da ima svoj subdatasheet i tako dalje.

Srecan rad.
 
Odgovor na temu

[es] :: Access :: Listbox RemoveItem i problem sa zarezom

[ Pregleda: 2220 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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