Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: DataColumn ja rivien lukumäärän hakeminen

ari kood [19.03.2018 09:39:01]

#

Moi,
Miten voin laskea sarakkeeseen parent- tai child-taulun rivien lukumäärän annetun kriteerin perusteella?

esim:

dim dc as DataColumn = new DataColumn("CountValue1",GetType(Integer),"Count(child(RelationName).Value = 1"))

Joka palauttaisi sarakkeeseen child taulusta relaation kautta rivien lukumäärän jossa 'value = 1'

Tuo ei vaan toimi, vaan antaa virheen: Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.

ari kood [21.03.2018 08:56:59]

#

Olen nyt aika jumissa tämän ongelman vuoksi. Osaako kukaan auttaa?

Tuo virheilmoitus tulee muuten visual studion dataset designerissä (Nopeampi kokeilla eri koodeja designerissa).
Ja taisi muuten lipsahtaa tuo viesti kiireessä väärälle osastolle... tarkoitus oli Visual Basic osastolle... vai mitä kieltä tuo expression nyt sitten onkaan?

Grez [21.03.2018 09:35:48]

#

No katsoin tuota viestiäsi kun sen lähetin ja totesin että enpä jaksa käyttää aikaa siihen että värkkään projektin jossa voisin testailla tuota koodia ja katsoa mitä siitä pitää korjata.

Eli jos haluat että useampi selvittelee ongelmaa niin ehdotan että laitat projektin jossa ongelma esiintyy pakettiin ja ladattavaksi johonkin. Toki myöskin kokonainen esimerkkikoodi ja ohjeet mitä sen ajamiseen tarvitaan toimii.

ari kood [27.03.2018 08:55:37]

#

Ok, tässä esimerkkiprojekti.

Pizzatilaussovellus
-Käyttäjä voi valita dgv:stä asiakkaan ja hänen tilaaman pizzan.
-Klikkaamalla 'tee tilaus', lisätään tiedot tilaustauluun.


Asiakastaulua ei koskaan tallenneta mihinkään, se on vain tiedon näyttämistä varten. Varsinainen asiakastaulu on oikeassa ohjelmassa toisaalla josta tähän "temp"-Asiakastauluun haetaan tarvittaessa vain nimi ja ID.
Asiakastauluun luodaan myös lennosta Pizza-taulun mukaiset sarakkeet joissa olisi tarkoitus näyttää asiakaskohtaiset tilaukset/kyseinen pizza. <- Onko tämä mahdollista toteuttaa käyttämällä sarakkeen expression ominaisuutta? Jos ei niin miten tekisit tuon?

Grez [27.03.2018 10:50:46]

#

Valitettavasti haluamaasi tominnallisuutta ei ole mahdollista toteuttaa DataColumnin Expressioneilla (ellet sitten tee omaa versiota DataColumnista joka käyttäisi muokattua AggregateNodea, johon olisit toteuttanut jonkin CountIf tyylisen aggreaattifunktion)

Ongelman voi toki aina kiertää tavalla tai toisella. Sanoisin, että järkevin kohta siinä oikeassa ohjelmassa olisi varmaankin tehdä se tuon "temp"-asiakastaulun muodostuksessa, niin että se jos siinä vaiheessa hakisi sarakkeet eri pizzoille ja niitä ei sitten tarvitsisi enää tuohon tapaan lisätä datacolumneina.

ari kood [06.04.2018 07:46:19]

#

Ok, tuota epäilinkin, mutta en mistään löytänyt epäilylleni vahvistusta.
Sarakkeet pitää kuitenkin kuoda lennosta, koska pizzojen määrä voi vaihdella.

Ratkaisin ongelman siten, että luon sarakkeet lennosta datagridviewiin taulun sijasta ja dgv:n RowPrePaint eventissä haen tiedot soluihin. Toimii, mutta ei ole kovin nopea, kun asiakaslistaa scrollaillaan.

Grez [06.04.2018 09:14:42]

#

En tiedä onko tuossa tarkoitus olla oikea tietokanta taustalla, mutta kyllähän tietokannoille voi kyselyitä tehdä dynaamisesti ja toisaalta jos hakee tietokannasta vaan asiakaslistan ja tilauslistan erikseen ja sitten pyörittää niistä luvut kerralla koko taulukkoon niin sen pitäisi olla melko nopea.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta