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

oledbdatareader kako ??

[es] :: .NET :: oledbdatareader kako ??

Strane: 1 2

[ Pregleda: 5663 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nristic
Hrvatska

Član broj: 11531
Poruke: 55
*.cmu.carnet.hr

Sajt: www.titlovi.net


Profil

icon oledbdatareader kako ?? 16.08.2003. u 16:12 - pre 218 meseci
Sve sam knjige pretražio i cjelu net sdk dokumentaciju i ne mogu
ovo naći.

Kako pomoću oledbdatareader-a napisati redni broj
zapisa u bazi podataka.

Znači kao što u klasičnom asp-u ima absoluteposition.


 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.ptt.yu

Jabber: dotnet@elitesecurity.org


Profil

icon Re: oledbdatareader kako ?? 16.08.2003. u 17:07 - pre 218 meseci
Pozdrav

Nisam siguran, ali mislim da sa DataReader-om to nije moguće.

Šta tebi konkretno treba?
dotnet
 
Odgovor na temu

nristic
Hrvatska

Član broj: 11531
Poruke: 55
*.cmu.carnet.hr

Sajt: www.titlovi.net


Profil

icon Re: oledbdatareader kako ?? 16.08.2003. u 20:00 - pre 218 meseci
Ništa posebno .Ispisati polja iz baze a pored njih napisati redne brojeve.
 
Odgovor na temu

Acid
Nikola Milanovic
Cacak

Član broj: 9585
Poruke: 144
212.124.182.*



Profil

icon Re: oledbdatareader kako ?? 26.08.2003. u 20:32 - pre 218 meseci
ako sam dobro razumeo onda ti ovo treba (moras imati dataadapter i dataconection i datacommand)

Code:

dataconection.open
dim dr as system.data.oledb.oledbdatareader=datacommand.executereader
dim i as integer = 0
while dr.read
   'ovde nisam siguran sta zelis ali probaj sa dr.get...(ime kolone)
   i+=1
end while
dataconection.close
 
Odgovor na temu

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 1430
*.242.EUnet.yu

ICQ: 101830817


+314 Profil

icon Re: oledbdatareader kako ?? 26.08.2003. u 23:52 - pre 218 meseci
a da dodas jos jednu kolonu za redni broj u select naredbi pomocu koje vuces podatke u readeru?
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 27.08.2003. u 09:02 - pre 218 meseci
Kreiraj view (MS SQL Server) ili query (MS Access) i u njemu dodaj dodatnu kolonu koja će davati redni broj zapisa (rownum u Oracle). Podatke iz tog objekta kasnije čitaj običnim SELECT. Ako se radi o Access bazi detalje potraži na VB/ASP forumu - nedavno smo imali baš taj problem (za pretregu koristi ime korisnika: bboris).

Pozdrav
Commercial-Free !!!
 
Odgovor na temu

nristic
Hrvatska

Član broj: 11531
Poruke: 55
*.cmu.carnet.hr

Sajt: www.titlovi.net


Profil

icon Re: oledbdatareader kako ?? 31.08.2003. u 21:39 - pre 218 meseci
To neće valjati jer kad se obriše zapis iz baze neće ići redom brojevi.
Pokušavam pronaći onaj post od bboris ali ga ne mogu naći.
Hvala

Citat:
Deep|Blue:
a da dodas jos jednu kolonu za redni broj u select naredbi pomocu koje vuces podatke u readeru?


 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 00:06 - pre 218 meseci
Primeti da se kolona može dodati u view/query, a ne samo tabelu, tako da ovo gore što si rekao ne stoji. Ta dodatna kolona ne bi mapirala direktno neku kolonu iz tabele.

Što se pretrage tiče, korisničko ime je malo drugačije: bobiris, moja greška.

U svakom slučaju ako se radi o Accessu rešenje je, kako rekoh, već odrađeno na ovoj temi: http://www.elitesecurity.org/tema/25682

Pozdrav.
Commercial-Free !!!
 
Odgovor na temu

nristic
Hrvatska

Član broj: 11531
Poruke: 55
*.cmu.carnet.hr

Sajt: www.titlovi.net


Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 20:19 - pre 217 meseci
Hvala na linku ali mi nije bas puno pomoglo.Vjerojatno nisam skužio
ali činjenica je da u acessu znam napraviti tablice i query.Inače mi
samo to i treba.

Meni treba sljedeće.Pokušat ću što detaljnije napisati.

1.Pretpostavimo da imamo tablicu sa tri kolone korisnik_id,ime,
prezime gdje je korisnik_id polje tipa autonumber.

2.Pretpostavimo da se nalazi 100 zapisa u bazi.

3.Obrišemo li 10 zapisa npr pod rednim brojevima 1,11,25 itd.
Nije bitno kpji su brojevi.

4.Sada u bazi ima 90 zapisa koji ne idu po redu.Znači ako smo obrisali
redne brojeve od 1 do 10 bit će prvi broj 11.

5.Na asp.net stranici vršimo sortiranje po 10 zapisa po stranici.
Radimo custom paging po principu 1 stranica 10 zapisa ,2 stranica sljedećih
10 zapisa.Znači imamo stranicu tipa default.aspx?stranice=1 itd.

6.Na temelju broja stranice vršimo upit u bazu tipa
SELECT * FROM tablica WHERE id > broj1 AND id<broj2

7.Problem nastaje ovdje jer on zapise koji su obrisani prikaže
praznu stranicu.U mom primjeru prikaže 10 stranica iako ima 90 zapisa što znači
da na nekim stranicama ima 9 zapisa na nekima 10 .

8.Sad meni treba kreirati isto takvu tablicu s privremenom kolonom koju
mogu koristiti za ispis na stranici.

Ja sam isprobavao nešto sa onim primjerom koji je neki član stavio ali ništa.

Nadam se da sam bio detaljan i molio bih vas da mi
pomognete jer se več nekoliko dana bavim ovim.
 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.vdial.verat.net

Jabber: dotnet@elitesecurity.org


Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 21:32 - pre 217 meseci
Pozdrav

probaj nesto tipa:
Code:
select count(*) AS SlNo,a1.companyname,a1.contactname,a1.contacttitle from customers a1,customers a2
where a1.companyname + a1.contactname + a1.contacttitle >= a2.companyname + a2.contactname + a2.contacttitle
group by a1.companyname,a1.contactname,a1.contacttitle
order by 1


Primer je vezan za Customers tabelu iz Northwind baze.
Objasnjenje i primer na http://www.devcity.net/forums/...p;cat=SQL+Server&#TID24434
dotnet
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 21:35 - pre 217 meseci
Možeš li da upotrebiš DataSet u kombinaciji sa DataAdapter klasom umesto DataReader-a?

Naime, DataAdapter može da popunjava DataSet baš tako kako tebi treba - po stranicama. Na svakoj stranici imaš određeni broj zapisa, bez obzira na ID polje. Pogledaj u HELP-u koje sve oblike Fill metode ima DataAdapter.

Evo recimo da imaš neku bazu db1.mdb i u njoj tabelu tblAlbum.
Na formu stavi jednu DataGrid kontrolu kao i jedno dugme.

Kao članove podatke klase Form1 stavi (tako da su vidljivi u čitavoj klasi):
Code:

    Dim cnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=W:\Temp\Temp\db1.mdb;"
    Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection(cnString)

    Dim SQL As String = "SELECT * FROM tblAlbum"
    Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQL, cn)

    Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(cmd)

    Dim ds As DataSet = New DataSet()


A potom dodaj događaj za button1_Click
Code:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    Static start As Integer = 0
        Me.ds.Tables.Clear()
        da.Fill(ds, start, 5, "tblAlbum")
        Me.DataGrid1.DataSource = ds.Tables("tblAlbum")
        Me.DataGrid1.Refresh()
        start += 5
    End Sub


Kad god klikneš na dugme, u DataGrid-u će se prikazati sledećih 5 zapisa, bez obzira na polje AutoID u tabeli: prvo 1-5, pa 6-10, pa 11-15 i na kraju 16-17 pošto u tabeli ima ukupno 17 zapisa... sve bez ikakve veze sa AutoID poljem (izbrisao sam neka polja tako da AutoID ne ide redom).

Eto :) Ako ti treba primer javi pa ću da postavim ovde i bazu i VB.NET soluciju pa vidi sam.
Commercial-Free !!!
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 21:43 - pre 217 meseci
Mada moglo bi i nešto tipa ako se stranice listaju redom:

SELECT TOP 10 * FROM tabela WHERE korisnikID > x ORDER BY korisnikID;

Pri čemu je x vrednost ID polja poslednjeg zapisa na prethodnoj stranici.

/EDIT: degojs

Doduše čak i ovako bi moglo... npr. treba ti 12-ta stranica:

SELECT TOP 110 * FROM tabela ORDER BY korisnikID DESC;

pa vidiš koja je vrednost korisnikID za prvi zapis (pošto smo sortirali DESC), stavi to da je = x i onda upotrebiš nešto tipa:
SLECT TOP 10 * FROM tabela WHERE korisnikID > x ORDER BY korisnikID ASC;

ili

SELECT TOP 120 * FROM tabela ORDER BY korisnik_ID DESC;

pa pročitaš samo prvih 10 zapisa.


[Ovu poruku je menjao degojs dana 01.09.2003. u 19:09 GMT]
Commercial-Free !!!
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 21:49 - pre 217 meseci
Ne znam šta ti nije jasno kod onog linka što sam ti dao?
Lepo napraviš novi query i dodaš mu jedno polje koje radi u kombinaciji sa malo VBA koda. I to polje lepo ide od 1 pa nadalje, bez obzira na AutoID polje.
Ako zatreba tamo imaš i kako da prebaciš sve to u novu tabelu (privremenu) pa tek onda nema problema da vršiš izbor iz te tabele kako god hoćeš.

Pozdrav (i pogledaj malo bolje onaj tamo primer - čoveku je trebalo baš isto to što ti tražiš i rešili smo problem)
Commercial-Free !!!
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 01.09.2003. u 22:17 - pre 217 meseci
Odnosno ako označimo:
x - broj zapisa po stranici
y - broj stranice koju želimo da vidimo
t = x*y

SELECT TOP x * FROM
(SELECT TOP t * FROM tabela ORDER BY AutoID ASC)
ORDER BY AutoID DESC

..dobićeš zapise u obrnutom redosledu, pa ih pročitaj od poslednjeg prema prvom ili:

SELECT TOP x * FROM
(SELECT TOP x * FROM
(SELECT TOP t * FROM tabela ORDER BY AutoID ASC)
ORDER BY AutoID DESC)
ORDER BY AutoID ASC;

Uh :-)

(naravno, ti kod sebe AutoID zameni sa korisnik_ID).
Commercial-Free !!!
 
Odgovor na temu

nristic
Hrvatska

Član broj: 11531
Poruke: 55
*.cmu.carnet.hr

Sajt: www.titlovi.net


Profil

icon Re: oledbdatareader kako ?? 02.09.2003. u 10:36 - pre 217 meseci
Hvala vam puno svima.
Napokon sam uspio i to preko dataadaptera.
Nisam imao pojma da ima to svojstvo jer u knjigama se spominju
samo 2 parametra metode fill.Ali kada sam pogledao Net SDk Help
doživio sam otkrivenje.

Uspio sam dobiti i redne brojeve pomoću datacolumn dodavajući još jednu
kolonu u datatable i jednostavnim iščitavanjem vrijednosti pomoću DataGrid kontrole.


Dugujem vam svima po rundu.
 
Odgovor na temu

Zvonimir

Član broj: 13608
Poruke: 6
*.ptt.yu



Profil

icon Re: oledbdatareader kako ?? 02.09.2003. u 15:38 - pre 217 meseci
Problem sa ovim DataAdapter resenjem je sto se u svakom slucaju dovlace svi podaci sa DB servera, a to nekada moze biti puno. Kod web aplikacije treba imati u vidu i broj korisnika... Evo sta kaze MSDN:
Citat:
Note The DataSet will not contain more than the number of records indicated by maxRecords. However, the entire resultset generated by the query is still returned from the server.

Obicno se paging resava tako sto se na serveru kreira privremena tabela sa Identity kolonom i prepisu primarni kljucevi. Onda se uradi select from (join privremene tabele na izvornu) where (newID >= @pageStart) AND (newID < @pageEnd) kao sto je nristic naveo pod 6. Na ovaj nacin, sa servera se dovlace samo podaci trazene stranice, a tu su i redni brojevi.

Pozdrav
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 02.09.2003. u 15:59 - pre 217 meseci
I to resenje sa prepisivanjem u novu, privremenu, tabelu smo ponudili kao jedno od resenja, cak smo bas tako postupili na database forumu (doduse tamo smo prepisali komplet tabelu, sto zaista jeste bespotrebno kad je dovoljno samo prepisati primarne kljuceve, ali tabela nije bila velika pa onda..).
Commercial-Free !!!
 
Odgovor na temu

nristic
Hrvatska

Član broj: 11531
Poruke: 55
*.cmu.carnet.hr

Sajt: www.titlovi.net


Profil

icon Re: oledbdatareader kako ?? 02.09.2003. u 16:21 - pre 217 meseci
Da Zvonimir u pravu si.Veselje je kratko trajalo.

Evo ja sam uz ovaj post prikačio bazu sa jednom
tablicom od 3 polja.pa ako mi možeš napisati query koji će
izabrati sva imena između dva broja i prikazati redne brojeve uz query

U tablici su obrisana polja od 2 do 9.

Bazu možete skinuti ovdje http://www.titlovi.net/baza.zip
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: oledbdatareader kako ?? 02.09.2003. u 18:39 - pre 217 meseci
Baš smo gotovani je l' da?

Prvo, upućen si na temu u database forumu koja bukvalno radi to što ti treba. Ništa. Dalje ti je Zvonimir opet pojasnio kako i šta, al opet nije dovoljno (a rešenje koje je Zvone predložio je praktično isto kao ono na koje si dobio link - koristi se privremena tabela). Opet ništa. A sve vreme kod koji ti treba stoji i dalje u onoj temi na koju imaš link. Nije li malo bezobrazno od tebe to što radiš?

Ako će Zvonimir da ti odradi, lepo od njega.
Commercial-Free !!!
 
Odgovor na temu

Zvonimir

Član broj: 13608
Poruke: 6
*.ptt.yu



Profil

icon Re: oledbdatareader kako ?? 03.09.2003. u 13:34 - pre 217 meseci
E, Dejan je stvarno sve napravio, treba smo iskopirati (ne zaboravi Module1)... Evo Access baze: http://www.elitesecurity.org/poruka/fajluzporuku/176862

Posto pretpostavljam (i nadam se) da web app radite sa SQL Serverom, evo primera kako se to moze resiti Stored Procedurom: http://www.4guysfromrolla.com/webtech/062899-1.shtml

Kao sto rekoh, ovo se moze popraviti tako sto se prepise samo primarni kljuc umesto Name i Price (dakle, u tvom slucaju korisnik_id), a treba kreirati i index bice puno brze. Jos jedna moguca popravka bi bila da se #TempItems tabela ne kreira svaki put kada se pozove SP, vec samo u slucaju da su obrisani ili dodati novi slogovi (recimo da trigger postavi neki "dirty" flag...). Posto se radi Join, kod izmene slogova ne treba da se menja #TempItems.

Mada je ovo vec tema za DB forum... Ako jos nesto nije jasno, tu smo.

Pozdrav
 
Odgovor na temu

[es] :: .NET :: oledbdatareader kako ??

Strane: 1 2

[ Pregleda: 5663 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

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