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

ADO.net Problemi...

[es] :: .NET :: ADO.net Problemi...

[ Pregleda: 4075 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vb_net_manuel
Manuel Radovanovic
Beograd

Član broj: 4569
Poruke: 28
*.bitsyu.net



Profil

icon ADO.net Problemi...30.12.2002. u 18:30 - pre 257 meseci
Sve dok se ne uhvatite ozbiljnog programiranja, jednostavni primeri nisu od velike pomoci...

npr>

Code:

table = dataset1.Tables.Item(0)
' prolazimo kroz sve Datarow-ove u tabli i zaustavljamo se na zeljenom koji onda menjamo
For i = 0 to table.Rows.Count - 1
row = table.Rows.Item(i)
If row("au_name") = "Pera" Then
row.Delete()
End If
Next

ovo i update ne vaze ukoliko imate u koloni isto ime ....
resenje je jednostavno....pozovete vise kolona.... pa onda izvrsite delete...

ali

zamislite da u bazi access imate polje tipa Date/Time....
gde vam je potreban i datum i sat... a ne samo datum....

dataset jednostavno ne prihvata.... takvu opciju...

bez obzira da li se pozivate na DateTime ili Date ili samo Time...
uvek ce prikazivati samo datum....
ukoliko nemate datuma samo vreme....on ce ubaciti neki svoj za vas
a od sati ni traga....

Postoji li neko resenje za ovo osim da polje prevedete tipa String
i u bazi i u datasetu...???










 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...30.12.2002. u 21:02 - pre 257 meseci
Sto se tice primera, naravno da su krajnje jednostavni. Logicno da se stvari komplikuju kako i aplikacija 'raste'. Nije ni bila namera obrada iole zahtevnijih situacija sa tim mini-uputstvom --- za to je ionako potrebna ili dobra knjiga ili detaljno proucavanje dokumentacije sa MSDN-a i sa raznih sajtova.

Nigde nije navedeno da brisemo samo JEDAN zapis. Uslov je da se brise ako je ime PERA, a posto se ide kroz sve zapise valjda je logicno da svi budu obrisani gde je TAJ jedan uslov ispunjen. I kod to odradjuje bas tako kako smo mu nalozili :)))
Jednostavno, znajuci da je SQL sintaksa za brisanje (slicno za update) DELETE FROM table [WHERE uslov [uslov2 ..]] jasno je u cemu je "problem". Savetovao bih ti da malo proucis SQL.
Besmisleno je uslov ograniciti na jedno polje (osim ako nije opznaceno kao PRIMARY KEY / UNIQUE constraint) pa jos 'first name' i onda ocekivati da cemo prolaskom kroz sve zapise obrisati samo jedan row.

Sto se tice datuma i vremena, u cemu je problem?

U (MS Access 2000) tabeli Table1 imamo polje Datum tipa DATE/TIME i unesena je neka vrednost (27-Mar-1974 17:15:45).
Ako ga procitamo iz aplikacije sa:

Me.OleDbDataAdapter1.Fill(Me.DataSet1, "Table1")
Dim row As Data.DataRow
row = Me.DataSet1.Tables(0).Rows(0)
Me.TextBox1.Text = row("Datum").ToString

Bez problema dobivamo sve podatke: 27-03-1974 17:15:45.

Ako si mislio na DATAGRID kontrolu onda stvari stoje malo drugacije. Potrebno je da mapiras tabelu i kolone za prikaz... Pogledaj TABLESTYLES kolekciju DataGrid-a u Properties prozoru. Nakon podesavanja odredjene kolone jasno se dobivaju podaci datum i vreme (potrebno je podesiti polje za odredjenu kolonu - FORMAT: DD-MMM-YYYY HH:MM:SS).

pozdrav




Commercial-Free !!!
 
Odgovor na temu

vb_net_manuel
Manuel Radovanovic
Beograd

Član broj: 4569
Poruke: 28
*.bitsyu.net



Profil

icon Re: ADO.net Problemi...31.12.2002. u 18:31 - pre 257 meseci
nije mi bilo na umu da podcenim vas jednostavan primer,
jako je ispirativan.... mada ja za brisanje koristim Command i Parametre....

to sa programskim direktnim pristupom bi mozda i upalilo.... to je problem jednostavnog primera.... hmm....
meni treba taj podatak u datasetu.... da dataset to menja i obradjuje
kao i sva druga polja iz baze....

vidi....

napravi neku bazu access, 1 tabelu sa par kolana i to cuveno
DateTime polje.... i unesi u njih par vrednosti....


napravi konekciju...
napravi adapter....
napravi dataset.....
( ne programerski, spusti na formu iz toolboxa....)
pa unesi...

dsInstruktor1.Clear()
OleDbDataAdapter1.Fill (DsInstruktor1)

otvori Data.... DataView i napuni svoj dataset

1.1.1974.... bez sata....

otvori DsInstruktor.... i u njegovoj semi promeni
DateTime u recimo Date ili samo Time....
rezultat isti....
prikazuje ti samo datum.... bez vremena....

ne znam zasto ali u accessu datetime ce ti prikazati datum u svim
formama GeneralDate, LongTime, ShortDate....
da taj podatak menjas direktno u tabeli .... no problem...

prosledi taj podatak preko dataseta....na dalju obradu....
rezultat je samo datum.....

i ja znam vecinu stvari kako bi nesto normalno trebalo da radi
a sta kad nece....

datagrid je najlaksi... poigraj se malo sa numeric i domain kontrolom...
klikni misem na jednu od tih kontrola, pa unesi jednostavno...

MsgBox(NumericUpDown1.Value.ToString())

pozovi tu formu iz druge forme....
pa gledaj sta ces dobiti.....

tri a ponekad dva puta ce ti otvarati poruku gde ce iz zadnjeg
puta proslediti pravu vrednost.... ili ""
mada uopste nisi ni pipno kontrolu....(nisi nista menjao na njoj...)

a tebi treba samo da se proveri da li je korisnik
sta menjao na toj kontroli kako bi to poslao na update...

budi siguran da je uvek menjao pa i kad nije ....
pa i pre nego sto ti se prikaze forma2...hehhehee

proveris to u load form vidis strava radi....
ali ubacis drugu.... problem....
normalno gresku ce ti prijaviti neku tamo koja nema
veze sa vrednostima iz kontrole....


thanks man... skrenu na drugo pitanje...

sretna nova 2003 ....
pozdrav







 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...31.12.2002. u 20:38 - pre 257 meseci
numericUpDown problem:

Dakle na tu nesretnu drugu formu postavi jednu numericUpDown kontrolu i stavi pocetnu vrednost na recimo 45 (value svojstvo dakle da bude 45 u properties prozoru).

Elem, ajd fino sad otvori #Region " Windows Form Designer generated code " pa nadji liniju

Me.NumericUpDown1.Value = New Decimal(New Integer() {45, 0, 0, 0})

i postavi brejk point na istu.

Sad otidji do:

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
MsgBox(NumericUpDown1.Value.ToString())
End Sub

i postavi brejk-point na ovu MSGBOX liniju.


E sad fino pokreni svoj program pomocu F11 (ili debug meni=>step into) pa idi redom liniju po liniju kroz kod (F11).

Valjda ce ti biti jasno sta se desava.

Dakle, nije nista cudno, cak je to podrazumevano ponasanje.

Resenje 'problema' :
- deklaracija objekta bez WithEvents, pa naknadno dodavanje handlera
- postavljanje (static) zastavice (flag) u Sub NumericUpDown.ValueChanged koji ce omoguciti da prvi dogadjaj ne bude obradjen..
itd itd


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

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...31.12.2002. u 21:43 - pre 257 meseci
Sto se tice DateTime problema, dobro sad iz ovog drugog posta cini mi se da mi je jasno sta te zeza (rekao si da dataset ne prihvata vreme i datum a cini mi se da je problem u stvari kad saljes dataset nazad u bazu -- baza ne prihvata TIME porciju?)

Dataset naime ispravno prihvati datum i vreme iz baze, ali kad se salje nazad u bazu, vreme otpadne i ostane samo datum. Jasno, nesto nije u redu sa insert, update i ostalim SQL komandama..

Otvori onaj kod #Region " Windows Form Designer generated code "

i pronadji odeljak gde su definisane komande SELECT, INSERT, UPDATE itd itd
e sad gde vidis da je polje koje je datetime definisano kao:

System.Data.OleDb.OleDbType.DBDate

prepravi to u:

System.Data.Oledbtype.Date

(ukupno na tri mesta cini mi se (insert, update i delete) ).

I to je to. Sad ce fino da prosledjuje i datum i vreme u bazu.
Provereno radi :)

sretna nova, takodje :)

Commercial-Free !!!
 
Odgovor na temu

vb_net_manuel
Manuel Radovanovic
Beograd

Član broj: 4569
Poruke: 28
*.bitsyu.net



Profil

icon Re: ADO.net Problemi...03.01.2003. u 01:39 - pre 257 meseci
Covek... strava si... nebi nikad ni pretpostavio ....

Evo ti jos dve stvare koji me iritiraju...

1. Kada u Command postavis SQL naredbu kao npr:

"Select DateShopping from Customers where DateShopping = ?"

ako je u parametru upisnao ceo datum, recimo 1.7.1974 0:02:40
komanda ce pronaci polje...

kako da mi pronadje polje ako je parametar samo 1.7 ..... ???

Like ? ..... tesko
Like ........ 1.7*... ne prepoznaje

iako u accessu kada pravis upit, tamo moze ... Like "1*" i dobices
svaki datum koji pocinje sa 1...

Kako se pravilno pise SQL naredba.... ili nedozvoljava takvo pronalazenje ?


2. Da li se moze jedan ListBox kontrola napuniti sa vise kolona....
npr.

Kada selektujes Pera u ListBox.... da je i Datum selektovan.... u toj
recimo drugoj koloni ali se u ListBoxu vidi samo Pera, ne i datum...???

ListBox.Items.Add ("ImeKupca","DatumKupovine")... ???

Ono sa postavljanjem zastavica u dogadjaj Change_Value....
da izbegne prvi dogadjaj.... ne znam kako se to radi... nikad nisam
nigdje ni citao o zastavicama i kako se postavljaju...

ali sam logicki skratio sebi muke sto sam na formi postavio Button
Update , pa sta god da se menja u kontrolama, pritiskom na dugme...
korisnik ce izvrsiti sve promene i zavesti u bazu...
inace sam hteo da mimoidjem tako dragocen Button....

Sve u svemu
hvala covek...

 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...03.01.2003. u 07:58 - pre 257 meseci
SQL:

SELECT ... FROM ... WHERE xxx LIKE '1%'
je otprilike sto si trazio MADA to se koristi za stringove!
Posto je tvoje polje DateShopping tipa DateTime (pretpostavljam da jeste) to dakle nije string tip nego to sto jeste - datetime.
U tom slucaju, u MS Access mozes da koristis sledecu sintaksu:

SELECT * FROM Table1
WHERE DAY(dateshopping)=27 AND MONTH(dateshopping)=3;

da bi izdvojio pravilan dan i mesec (ovde izdvajamo sva polja gde je datum 27. mart, bilo koja godina i bilo koje vreme)
Pogledaj malo sintaksu SQL-a i funkcije dostupne u accessu za rad sa datumima (DAY, MONTH, YEAR, HOUR, MIN, SEC - cini mi se da su bas ovako imenovane kao u VB6 --- proveri! Dakle samo malo izmeni kod i eto.. :)


Zastavica:

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
Static bFlag_firstTime As Boolean
If Not (bFlag_firstTime) Then
bFlag_firstTime = True ' ovaj kod se izvrsava samo jednom
Exit Sub ' izlaz iz rutine posto ne zelimo da obradimo prvi poziv
End If

MsgBox(NumericUpDown1.Value.ToString())
End Sub

Dakle bFlag_firstTime je zastavica - lokalna promenjiva za tu podrutinu, ali ona 'zadrzava' svoju vrednost (STATIC) i kada se izadje iz rutine (i sledeci put udje u istu). Tj. prvi put kad se udje u rutinu ona ima vrednost FALSE i onda se izvrsi onaj deo koji se izvrsava samo jednom: postavimo je na TRUE i izadjemo iz rutine.
Sledeci put kad se pozove rutina, ova promenjiva ima vrednost TRUE (promenili smo na TRUE u prvom pozivu iste) i izvrsava se MsgBox linija i tako svaki sledeci poziv. Nama je bitno da izbegnemo prvi poziv...


pozdrav



[Ovu poruku je menjao degojs dana 04.01.2003. u 01:50 GMT]
Commercial-Free !!!
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...03.01.2003. u 17:10 - pre 257 meseci
Pa sto ce ti uopste drugi podatak u listboxu ako se ni ne vidi?
Prikazi samo ono sto ti treba :))) pa kad selektujes nesto - imas indeks izabrane stavke sa kojim onda lako pronadjes sta ti treba u nekom drugom nizu..

Commercial-Free !!!
 
Odgovor na temu

vb_net_manuel
Manuel Radovanovic
Beograd

Član broj: 4569
Poruke: 28
*.bitsyu.net



Profil

icon Re: ADO.net Problemi...04.01.2003. u 13:46 - pre 257 meseci
znaci to je postavljanje zastavica... kako prosto.... mislim da cu tvoj
kod dobro podvuci... za sva vremena... samo da li je to resenje...???

treba da ti prikaze 15... a on ti prikaze 1 pa 12 pa tek onda 15
nekada ti prikaze 1, 31 pa 15.... sto bi moglo biti i logicno jer prvo
gleda donju i gornju granicu Value....
a treci put ti prikaze 1 pa 15...

Da li flag... ignorise sve do 15.... ??? bez obzira sta kontrola slala kao rezultat sto nije rezultat ???

% za stringove ??? a ima li nesto sto moze biti bilo sta kao sto je
* u accessu... * predstavlja "ostalo" nezavisno o kom tipu polja se
radi....izuzev slika...???

za datum se mozda samo u Parametru stavi .Date) a koristi %, probacu...

postoji vise razloga barem logicki za potrebom vise kolona u listbox...
npr.

zamisli u box listi dva Pera Peric-a.... pa koji je odabran ???
da koristim index 0,1,2 .... a u accessu mi kljuc autonumber...
pa moze i da preskace 1,2,5,3... zbog brisanja itd...

zamisli izaberes Peru Perica a na formi se br. njegove licne karte
sam prikaze kroz labelu...!!!

pokusao sam nesto da izvedem sa string promenjivom koju koristim
za spajanje imena i prezimena u jedno, koje ide u

listbox.items.add("FLName").... ali nema logike... !!!

malo me zbunjuje sto u accessu listbox moze da prikaze kolonu koje hoces a i da pored nje sakrije druge....
pa automatski izabrani su i ostali podaci... koje mozes dodeliti promenjivima
bez ponovnog pozivanja...

ali to je access....

nisam siguran da to u vb.net list moze vise kolona a da se vidi samo jedna... to nisam nasao ni u jednom primeru...???

biranje vise redova odjednom da, ali vise kolona biranjem stavke tesko...
ili nemoguce... ako sam sebi ne isprogramiras kontrolu koja moze...???

ili evo ti jos teze pitanje ???

koju bi ti kontrolu koristio da u nju mozes umetati i odredjen text i slike, iz
baze i da ti to slaze kao dokument.... (to ti sve radi program...)
automatski da pravi i redja tekst i slike u toj kontroli....
stime da su par stranica sablonski umetnuti.... ali se preko tih sablona
automatski iscrtavaju druge slike....
dok se ostale stranice pune tekstovima.....
ali da to sve bude u dimenzijama formata A4...???
i da se kao u wordu vidi dokument... spreman da se snimi u comp...
ili da se stampa... ???

Sta sad kazes covek..... i hvala ???
until now you're the best....















 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...04.01.2003. u 18:01 - pre 257 meseci
Ooo da, u Accessu se koriste * i ? kao dzoker znaci. % i _ se koriste u nekim drugim bazama (SQL server, Oracle takodje cini mi se). Medjutim, nema potrebe da koristis dzokere ako zelis da nadjes odredjeni zapis prema datumu vec bas onako kako sam ti predlozio. Eventualno, mogao bi da datum konvertujes u string pa onda da koristis dzokera ali nema smisla. Moraces malo da proucis SQL

Sto se numericupdown tice - meni ono sa zastavicom radi tacno kako treba ili kako sam ja razumeo da tebi treba :) ne znam u stvari u cemu je sad problem? Nije mi bas jasno iz tvog posta do kakvih problema dolazi? Zastavica sprecava da se kod u handleru za dogdjaj ValueChanged izvrsi prvi put.

Listbox:
nisi razumeo sta sam predlozio. Recimo da imas podatke iz baze dovucene u dataset. Fino prodjes kroz dataset i napunis listbox sa odredjenim vrednostima iz jednog polja (npr. Ime). Kada korisnik klikne na neku stavku ti nadjes index (npr. 5) i onda zatim pronadjes 5. stavku u nekom drugom polju u dataset-u (npr. autoID). Bez obzira kako su vrednosti poredane, ti biras odgovarajucu stavku iz drugog niza, uopste nije bitno ima li preskakanja itd itd... Recimo da imas u datasetu sledeca polja iz baze (Ime i Auto Id).
Ime AutoId
Zika 1
Pera 2
Pera 2
Sloba 19
Djole 22

Napunis listbox sa vrednostima iz polja Ime.
Kada u listboxu klikne na Slobu, dobijes da je selectedindex 3 (4. stavka).
Fino odes u dataset i pogledas koja je 4. vrednost u polju AutoID (=19).
Naravno, ima jos razlicitih resenja.

Ono poslednje sa slaganjem teksta i slika nisam radio.. ali mozda da malo istrazis RichText kontrolu (tj. RTF format) ili Crystal Reports - nemam pojma :-)

I za kraj, sto se mene tice, moracemo da prekinemo ovakvo 'korak-po-korak' dopisivanje :-) Knjiga, MSDN i tastatura, pa udri.. Kad naidje problem, tu smo na es.

pozdrav

Commercial-Free !!!
 
Odgovor na temu

vb_net_manuel
Manuel Radovanovic
Beograd

Član broj: 4569
Poruke: 28
*.bitsyu.net



Profil

icon Re: ADO.net Problemi...07.01.2003. u 07:32 - pre 257 meseci
ok covek.... resio sam mnoge probleme....
do nekih resenja ni sam ne znam kako sam odradio... ali do sada radi perfektno...
savladao sam i neke stvari koje nema u help-u...
ali predamnom tek sad dolaze neke stvari...

crystal reports.... ???

razmisljao sam o tome....

thanks man...





 
Odgovor na temu

ana9.09

Član broj: 7179
Poruke: 2
212.124.182.*



Profil

icon Re: ADO.net Problemi...07.01.2003. u 14:43 - pre 257 meseci
ovo parce koda bi trebalo da radi, zar ne (?!) :

---------------------------------------------------------------------


Public Sub MenuItemOMin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemOMin.Click

Dim Konekcija As New SqlClient.SqlConnection("Data Source = (local); Initial Catalog = za_baze")

Try
Konekcija.Open()
Catch ex As System.Data.SqlClient.SqlException
MsgBox(ex.Message) ' prikazujemo poruku ako dodje do greske
End Try


Dim Komanda As New SqlClient.SqlCommand("select min(vrednost) from otpremnica", Konekcija)
Dim Kursor As SqlClient.SqlDataReader = Komanda.ExecuteReader


While Kursor.Read()
Debug.WriteLine(Kursor.GetName(0).ToString())
End While

Kursor.Close()
Konekcija.Close()

End Sub

----------------------------------------------------------------------


medjutim stalno mi javlja kod : Konekcija.Open()
da sql server ne postoji ili mu se ne moze pristupiti
u server explorer-u je sve povezano kako treba, a kod :

Dim Konekcija As New SqlClient.SqlConnection("Data Source = (local); Initial Catalog = za_baze")

nemam username i password zato sto se na sql server povezujem preko windows authentical
da li to moze da ima neke veze

i imam jos jedan problem
prvo mi je program radio bar nesto kako sam htela, a onda je poceo da javlja gresku kod :

If dataset1.HasChanges() Then
SqlDataAdapter1.Update(dataset1.GetChanges())
End If

mislite li da je i ovo zbog konekcije
i posto mislim da su svi moji problemi prouzrokovani konekcijom, kako da promenim pristup sql servreru, pa da mu pristupam preko username-a i password-a
tu mi isto javlja neke greske

hvala unapred..
synth..
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: ADO.net Problemi...10.01.2003. u 21:35 - pre 257 meseci
Pokusaj da u connection string dodas:
Integrated Security=SSPI;

Sto se tice promene: otvori Enterprise manager, otidji na zeljeni server i desni klik pa PROPERTIES. Imas izbor izmedju: Windows Authentication i SQL Server Authentication..

Tip: kreiraj tekst fajl proba.udl. Zatim ga dva puta klikni iz explorera da ga otvoris i... eto, kasnije pogledaj fajl iz notepad-a.

pozdrav

Commercial-Free !!!
 
Odgovor na temu

ana9.09

Član broj: 7179
Poruke: 2
212.124.182.*



Profil

icon Re: ADO.net Problemi...12.01.2003. u 19:05 - pre 257 meseci
male tajne velikih majstora ;)
hvala, sada mi sve radi kako treba...
synth..
 
Odgovor na temu

SamSvojDžigibaja
AnonimniSamSvojDžigibaja
Mostar

Član broj: 7552
Poruke: 15
*.tel.net.ba



Profil

icon Re: ADO.net Problemi...19.01.2003. u 12:52 - pre 257 meseci
Da li neko zna kako osvježiti sumarnu funkciju(npr.sum(iznos)) u datatable koloni prilikom brisanja nekog reda?Ne radi ni accept changes ni row.edit?
Izludi me ovaj datatabele..
 
Odgovor na temu

[es] :: .NET :: ADO.net Problemi...

[ Pregleda: 4075 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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