• 22 odgovora
  • 6.759 pregleda
DISTINCT zackoljica 25.01.2012. u 16:54 · pre 179 meseci #1
Imam tablicu ulaz_repromaterijala. Ta tablica ima negde oko 25polja, razlicitih tipova (text,number itd). Medjutim iz jednog polja iz tablice zelim izvuci sadrzaj (tekst) i prikazati ga u vise combo-a ali tako da prikaze samo jedan rezultat u slucaju da se u bazi ponavlja vise puta taj isti tekst i za to sam koristio


Code:

SQL = "SELECT DISTINCT artikal FROM ulaz_repromaterijala;"
...
Combo1.AddItem rs("artikal")
Combo1.ItemData(BrojacArtikala) = Round(CDbl(rs.Fields.Item(0).Value), 2)


moze li pomoc oko toga, gde gresim,
u ovom slucaju on bi trebao izbaciti sav sadrzaj polja "artikal" ali po jedan kom.
Re: DISTINCT zackoljica 31.01.2012. u 08:54 · pre 179 meseci #2
Probaj ovako:

Code:

SQL = "SELECT DISTINCT artikal FROM ulaz_repromaterijala;"

Combo1.Clear
For BrojacArtikala=0 to rs.RecordCount-1

    if BrojacArtikala=0 then
        rs.MoveFirst
    else
        rs.MoveNext
    endif
    
    Combo1.AddItem rs.Fields.Item(0).Value 
    'Combo1.ItemData(BrojacArtikala) = BrojacArtikala

next BrojacArtikala



Sa DISTINCT si povukao samo nazive artikala, tako da je rs u stvari tabela sa samo jednom kolonom, što ti dođe da je rs.Fields.Item(0).Value u stvari artikal.
Combo.ItemData(ListIndex) predstavlja neku LongInteger vrednost, i obicno služi da u nju turiš primary key iz baze, ili neki redni broj(bolje primary key u multiuser okruženjima od rednog broja)

Ono što si ti verovatno želeo je:
Code:

SQL = "SELECT DISTINCT ID,artikal FROM ulaz_repromaterijala;


i tada bi imao kao rezultat tabelu=rs koji ima dve kolone ID,Artikal, pa bi išlo:
Code:

    Combo1.AddItem rs.Fields.Item(1).Value
    Combo1.ItemData(BrojacArtikala) =rs.Fields.Item(0).Value



Vodi računa da kada ovo radiš, Property SORTED treba da bude FALSE! da bi ID ili Šifra ili šta već nalegla na zapis koji si zadnji stavio u combobox, jer sorted zna da izmeša :)
I naravno ograničenje ComboBox-a na 32K artikala (ako je u opšte i bitno)...
Re: DISTINCT zackoljica 01.02.2012. u 17:00 · pre 179 meseci #3
sve sto sam zeleo je da u combo prikazem podatke iz odredjene tabele i odredjenog polja

ovako sam resio

Code:
SQL = "SELECT DISTINCT artikal FROM ulaz_repromaterijala WHERE artikal;"
Set rs = conn.Execute(SQL)
If rs.EOF Then
    closeconn
    Exit Sub
End If
Do Until rs.EOF
BrojacArtikala = BrojacArtikala + 1

'////////////////////////////////////////////////
Combo1.AddItem rs.Fields("artikal").Value
'///////////////////////////////////////////////


:D hvala ovo za velicinu nisam ni imao pojma, sta znaci 32k, koliko je to kolicine?

da ne otvaram novu temu, treba mi pomoc oko sledeceg

Code:
SQL = "SELECT * FROM baza WHERE datum >='" & Format(DTPicker1.Value, "d.M.yyyy") & "' And datum <='" & Format(DTPicker2.Value, "d.M.yyyy") & "' ORDER BY datum;"


kako da u listview izlistam (izfiltriram) po datumu podatke po principu ''prikazi podatke od datuma do datuma"'
gde gresim, ovako radi ali lista samo po datumu, mesece i godine uopste ne uzima kao kriterijume?
Re: DISTINCT zackoljica 01.02.2012. u 17:58 · pre 179 meseci #4
K=1024
M=1024*1024(1024K)

32K=32*1024

Ne radim sa ListView-om, ali ti imas jednu jako veliku gresku u dizajnu baze: Ti koliko vidim koristis stringove za date, ali jaaako loseg formata.
Ne znam koja je baza u pitanju, ali velika vecina popularnih baza ima promenjivu Date, ili DateTime (Ili obe) i one se koriste za skladistenje podataka o datumu.

Ne kazem da su stringovi lose resenje (naprotiv nekada je to sjajno resenje), ali onda format upisa datuma moras da menjas:

Recimo kada poredis brojeve: 1110>122
Kada poredis stringove: "1110"<"122"

Jer se porede slovne vrednosti. Zato treba koristiti dan i mesec kao dvocifrenu vrednost, i to permutovano:

Prvi februar (Now()):

"2012 02 01"
ili
"20120201"
ili
"2012/02/01"
ili
"2012-02-01"
ili
"2012.02.01"

ali kada krenes po jednom onda se i drzis toga pri svakom upisu, i svi redom engini ti to sortiraju kako treba.

Ti kada uporedjujes dva dana, prvo uporedis godinu, pa mesec pa onda na kraju dan. To u stvari radi obrnuti string, i zato se stavljaju dvocifrene oznake za dan i mesec jer:

3<21 ali "3">"21"

3<21 i "03"<"21"


;)






Re: DISTINCT zackoljica 01.02.2012. u 18:37 · pre 179 meseci #5
da ali ja sam vec odradio program sa ovim formatom, nije mi problem da promenim ali iziskuje dosta posla...
koristim access, e sad mozda greska, meni je polje 'datum' u acceess-u Text, a kroz vb6 koristim string

Code:
Dim inptSearch, inptSearch2 As String, rs As ADODB.Recordset
inptSearch1 = DTPicker1.Value
inptSearch2 = DTPicker2.Value

"SELECT * FROM baza WHERE datum >='" & inptSearch1 "' And datum <='" & inptSearch2 & "' ORDER BY datum;"


a DTPicker1 i DTPicker2 DateFormat odradim kroz Properties

e sada, nisam razumeo, sta je tvoj predlog? kako da ovo proradi sa ovim, a ako nece sta onda - konkretno ? ja znam kako sve to da prikazem u listview, ne znam kako da filter proradi, kazem ti cita mi samo dane, mesec i godinu uopste ne uzima/
Re: DISTINCT zackoljica 01.02.2012. u 20:48 · pre 179 meseci #6
Au Miki,Miki...
Videcu ujutro na poslu nesto da ti smislim.

Jedno pitanje: Za datum (u bazi) vrsta polja(promenjiva) je text ili date?
Re: DISTINCT zackoljica 01.02.2012. u 21:50 · pre 179 meseci #8
Citat:
miki987: polje je Text?

i jos jedno pitanjce, dal' je moguce da ovol'ka muka treba za filter u combo-u (prilog)



Da.
Iskompaliraj ovaj primer i probaj ga na Win7, mnoge AutoComplete solucije na ovu foru jednostavno pucaju.
Neke imaju on error resume next pa i nema mnogo stete,
a nekada te doceka RuntimeError
Re: DISTINCT zackoljica 01.02.2012. u 22:21 · pre 179 meseci #9
:D nista ajde drugi put te cimam za filter combo a sutra vidi za ovo pa mi javi kako cu :D
Re: DISTINCT zackoljica 13.02.2012. u 07:49 · pre 178 meseci #11
Nema pomoći Miki...
Probao sam sa Date promenjivom, ali isto ti se hvata.

Jdnostavno, kada upoređuješ-sortiraš stringove to tako mora.
Ukoliko bi koristio date promenjivu u bazi, onda bi umesto apostrofa koristio tarabljike, ( # vs ' ) ali opet bi morao da menjaš sve zapise u bazi, odnosno da prebacuješ u #mm/dd/yyyy# format.

Šta god da odlučoš ne gine ti menjanje celog programa i svih zapisa u bazi...
Re: DISTINCT zackoljica 26.02.2012. u 23:26 · pre 178 meseci #12
nista nisam shvatio, koje je resenje na kraju najbolje:

da promenljivu u bazi podesim na DATE
a da pretragu vrsim

Citat:
SQL="SELECT * FROM baza WHERE datum_od=' " & DTPICKER1 & " '" and datum_do=' " & DTPICKER2 & " '"


nije mi tesko da prebacim sve sada sam bas gledao nema bas puno posla, samo mi nije najjasnije kako da odradim pretragu
Re: DISTINCT zackoljica 17.03.2012. u 20:12 · pre 177 meseci #13
šta ti nije jasno?
Potpis
steve585
Re: DISTINCT zackoljica 18.03.2012. u 03:13 · pre 177 meseci #14
postavio sam u access-u format datuma date ddmmyyy, u vb-u postavio kod

Code:
SQL="SELECT * FROM baza WHERE datum_od=' " & Format(DTPICKER1,"ddmmyyy") &  ' " and datum_do=' " & Format(DTPICKER2,"ddmmyyy") & " '"


u cemu je problem? prikaz za datum u ListView je

Code:

Format(DTPICKER1,"dd.mm.yyyy")
Re: DISTINCT zackoljica 20.03.2012. u 16:38 · pre 177 meseci #15
nema odgovora... ajde da ne otvaram temu da ovo probam da resim na jedan drugi nacin.
kako da izvedem da mi pretragu "...SELECT * FROM table" table citam iz text1.text polja?
probao sam ovako

Code:
"...SELECT * FROM " '  & Text1.Text & ' "...;"
ali nece
Re: DISTINCT zackoljica 20.03.2012. u 16:48 · pre 177 meseci #16
Jako ti je konfuzno pitanje...
Da li zelis da iscitas vreddnost iz "table" tabele, koja odgovara vrednosti Text1.Text,

ili ti se tabela bas zove Text1.Text?


Ako nesto pokusavas da uporedis sa necim, onda ti pored naziva tabele treba i naziv polja u toj tabeli po kojem nesto trazis.
Evo Banalan primer:


Code:
"SELECT * FROM EliteSecurity WHERE User='" & Text1.Text & "'"


ili

Code:
"SELECT * FROM EliteSecurity WHERE User='Miki987'"

Re: DISTINCT zackoljica 20.03.2012. u 21:22 · pre 177 meseci #17
ovo prvo

dakle



Code:

"SELECT * FROM '" & Text1.Text & "'"  WHERE User";"


gde je Text1.Text

Code:

Text1.Text = "EliteSecurity"
Re: DISTINCT zackoljica 21.03.2012. u 14:50 · pre 177 meseci #19
tablica, tablica1, tablica2, tablica3, tablica4...

Code:
"SELECT * FROM '" & Text1.Text & "'"  WHERE User";"


u zavisnosti sta je u Text1.Text (da li tablica, tablica1, tablica2, tablica3, tablica4...) treba da izvrsim punjenje u ListView
Re: DISTINCT zackoljica 22.03.2012. u 09:21 · pre 177 meseci #20
Gledaj ovako Miki, ajmo po redu....
jedno po jedno, da se vratimo lepo osnovama i malo engleskog jezika:


Code:
<SELEKTUJ> sve <IZ> tablica <GDE JE> NazivPolja=<VREDNOST>


je ekvivalentno sa


Code:
Upit="SELECT * FROM tablica WHERE NazivPolja='Miki'"


Kada SQL-u (bilo kojem) prosledjujesh neku textualnuu vrednost, ona mora biti naznacena da je to string uz pomoc znaka ' kojim oznacavas pocetak i kraj stringa.

Znaci ako bi hteo recimo iz neke tabele koja se zove ljudi iscitas sve vrednosti, gde se neko zove Recimo MIKI, to bi izgledalo ovako:

Code:
Upit="SELECT * FROM Ljudi WHERE Ime='Miki'"



Ali ako bi recimo zeleo da u vreme izvrsetka progranma (RunTime) odredish tu vrednost koju trazis, onda ti moze posluziti TextBox polje iz kojeg ucitas vrednost koju trazis, i ti u stvari tu pravish string/upit koji ces prosledjivati SQL-u.

Recimo:

Code:
Upit="SELECT * FROM Ljudi WHERE Ime='" & Text1.Text & "'"

Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme