[ Mikelly @ 18.07.2007. 17:55 ] @
OK, nov sam u svijetu programiranja na .NET platformi, ali imam dosta iskustva sa C++ i VBA. Pokusavam se prebaciti sa Accessa na C#.

1. Imam jednu formu sa dosta textboxova bindovanih na trenutni zapis neke tabele. E sad, jedan od tih textboxova treba da sadrzi tzv foreign kljuc iz druge tabele. Ako napravim combobox koji ce sadrzati listu ponudjenih zapisa iz druge tabele, kako da se odabirom neke od njih vrijednost kljuca odabranog zapisa automatski veze u zeljeni texbox (polje tabele)?

2. Slicno pitanje. Imam datagrid cije je jedno polje foreign kljuc druge tabele. Kako da, kad ukucam odgovarajuci kljuc, dobijem novo polje koje ce prikazivati njegov opis. Naravno, to polje mi ne treba u tabeli, vec samo na ekranu. Vjerovatno moram dinamicki napraviti novu kolonu, pa obradjivati dogadjaje, jelda? Ali onda moram koristiti dataview a ne dataset. Moze li to nekako automatski.

3. Na kraju, mogu li se kako automatski numerisati zapisi u datagridu. Dakle, nezavisno od toga kako se sortiraju, da prvi prikazani zapis ima rb 1, itd.

Pozdrav.
[ dusty @ 19.07.2007. 09:26 ] @
1. Najjednostavnije je da u DataSet strpas obe tabele i da napravis relaciju izmedju njih (DataRelation). Taj comboBox bindujes na DataSet, a DataMember i ValueMember postavis na zeljena polja ali preko relacije.

2. Uopste te nisam razumeo, elaboriraj malo
3. AFAIK ne moze. Ja sam to resavao tako sto sam programski kreirao kolonu sa rednim brojem, ali to ume da bude vrlo sporo ako ima mnogo podataka.
[ Mikelly @ 21.07.2007. 11:55 ] @
Sto se tice mog prvog pitanja, ja vec imam dataset sa tri tabele unutra i korektno podesenim relacijama:
Dobavljaci--(Relacija1)--Kalklulacije--(Relacija2)--Detalji.

Sad, u zaglavlju kalkulacije imam polje dobavljac gdje mi treba samo kljuc dobavljaca iz tabele dobavljaca, ali necu da ljudi pamte tolike kljuceve vec da im ponudim imena dobavljaca i oni samo izaberu ime a kljuc sam da se veze u zeljeno polje.

Ja sam bindovao combobox ali ne na citav dataset vec na tabelu dobavljaca (je li to pogresno?), i kako sad da vezem na textbox preko relacije, daj mi primjer, molim te.

----

Sto se tice drugog pitanja, mislim da to nece ici lako. Probao sam bas danas. Gledaj sto ja ocu. Recimo da imam jos jednu tabelu, tabelu artikala koja bi izledala kao:

Sifra_artika Naziv_artikla
0001 Artikal1
0002 Artikal2
0003 Artikal3

Onda u datagridu koji veze detalje kalkulacije imam foreign polje koje trazi sifru atrikla. Ja hocu jos jednu kolonu u datagridu koja ce po unesenoj sifri prikazati i naziv artikla. Ta nova kolone ne treba da se veze, vec samo da se prikazuje na ekranu, i trebace poslije za stampu.

To sam u accessu resavao preko dlookup funkcije ili neke funkcije koju sam napisem, ako je dlookup preslab, i rezultat f-je je isao u zeljeno polje, kao npr. =funkcija(kljuc as integer) as string.

Sad sam probao isto, napravio sam novu f-ju koja ce na osnovu sifre naci naziv, ali kad probam da je boundujem u zeljenu tabelu kaze mi da 'cannot find column 'naziv' ', i u pravu je naravno. Tu novu kolonu ne treba da vezem, nego samo da mi prikazuje 'naziv'. Sto mislis, je li datagrid to u stanju?

Pozdrav i fala ti.
[ android~paranoid @ 22.07.2007. 15:59 ] @
Citat:
Ja hocu jos jednu kolonu u datagridu koja ce po unesenoj sifri prikazati i naziv artikla. Ta nova kolone ne treba da se veze, vec samo da se prikazuje na ekranu, i trebace poslije za stampu.


Ako ti treba da izvrsis pretragu da nadjes na osnovu sifre naziv artikla onda predas upitu tu sifru, kreira se DataSet i uporedis da li je veci od 0, ako jeste onda sadrzi podatak (naziv artikla) i samo ga uzmes.
[ Mikelly @ 23.07.2007. 09:23 ] @
@android

Nije meni problem nac naziv artikla po sifri, nego ga stavit da stoji pored sifre u DataGrid-u.

@dusty

Nijesam bio lijen i poslusao sam te. Gledaj sto sam napravio. I dalje je u pitanju isti dataset sa tri tabele i dvije relacije. Izmedju dobavljaci i kalkulacije je relacija1 a izmedju kalkulacije i detalji relacija2.

DataGrid mi je bindovan na ovaj nacin (napamet pisem, moze da bude gresaka):

this.datagrid1.datasource = this.dataset1.DataViewManager

e ako znam sad kako sam ga veza na tabelu Detalji, uglavnom sam nedje napisa:

Dobavljaci.Relacija1.Relacija2 (ovo je valjda nacin da referenciram tabelu Detalji preko relacija, nijesam jos uvijek nacisto sa ovim).

Onda bindujem texboxove na polja tabele Kalkulacije ovako: Dobavljaci.Relacija1.Polje

a comboboxu datasource stavim na this.dataset1, valuemember na kljuc dobavljaca a onaj treci property na naziv dobavljaca.

I gledaj sto se desava. Izborom dobavljaca iz comboboxa ne dobijam ono sto zelim, da mi se promijeni polje dobavljaca u trenutnoj kalkulaciji, vec mi taj izbor funkcionise kao filtar, tj. izborom dobavljaca mijenja se trenutna kalkulacija, i to na onu kalkulaciju kod koje je kljuc dobavljaca isti onaj koji ja odaberem u combobox-u. Dalje, sto me jos vise cudi, u tom momentu mi se u datagridu prikazu svi detalji te kalkulacije, potpuno automatski, sto je sjajno, ali ja to ne zelim. I na kraju, currency manager vise nece da funkcionise ako mu stavim u bindingcontextu tabelu kalkulacije (jer tako treba, klikovima na next i previous ja setam kroz kalkulacije, i to je radilo prije dok nijesam textboxove vezao preko relacija) nego moram staviti tabelu dobavljaca da bi on setao kroz kalkulacije. Sto je to. Izgubih se.

Mozda ti nece sve bit jasno sto sam napisa, ali probaj molim te da mi pomozes jer sam skroz izgubljen u ovim relacijama.

Pozdrav.