02. maj 2007 - 21:35Der er
8 kommentarer og 2 løsninger
Indsætte 3 forskellige select tabeller i repeater
Hejsa,
Jeg har en debat tabel, hvor jeg gerne vil have følgende ud i en repeater: Overskrift AntalSvar og SenesteIndlæg
Overskrift på alle debatindlæg. Antal Svar på det konkrete debatindlæg. Seneste indlæg/svar på det konkrete indlæg/svar - hvis der ikke er nogle svar, skal det være dato på indlæg.
Først vil jeg databinde til select af alle debatindlæg (Den går fint) - så vil jeg hente antal svar ud. Selve sql statement er der ikke problemer (har testet med en alm. label og et int tal) - men hvordan får jeg det for hver række i den første tabel og hvordan får jeg det skrevet ud i repeateren?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hej, Mit umiddelbare bud er, at din tællervariabel (i) går fra 0 til antallet af debatter. Når du henter antallet af svar ud for en given debat, så benytter du den samme variabel (i) til at indexere ind i DebatCount. Jeg går ikke ud fra, at antallet af rækker i Debat og DebatCount altid følges ad? Hvis du får 1 række ud med antallet af svar i den pågældende debat, så skal der vel stå:
DebatCount.Rows[0]["DebatNr"] = tael;
Men når det så er sagt (og forhåbentlig løser problemet :o)), så synes jeg, at det virker som en dyr måde at få hentet antallet af svar pr. debat ud på. Det kan helt sikkert laves i et hug i sql'en, så du for hver debat udtrækker debattens felter (det du har liggende i Debat) og antallet af svar i én og samme DataRow.
Hvis du får antallet af svar i debatten trukket ud i et hug sammen med data'ene for debatterne, så kan du nøjes med én DataTable. Dermed kan du jo bare databinde og få vist debattens data + antallet af svar.
og så mine to selects: //Henter debatindlæg //Bruges til at liste alle debatindlæg public Status GetDebat(ref DataTable Debat) { Status status = Status.Failure;
DataRow r = null; DataTable AItems = new DataTable();
//Tæller hvor mange svar, der er til et specifik indlæg public Status GetCountAnswers(int DebatId, ref DataTable CountAnswers) { Status status = Status.Failure;
DataRow r = null; DataTable AItems = new DataTable();
Prøv med noget i denne stil: SELECT DebatId, DebatSvar, DebatNr, Overskrift, BrugerId, Dato, COUNT(CASE WHEN DebatId = DebatNr THEN 1 ELSE NULL END) as antalsvar FROM DebatIndlaeg WHERE DebatNr = 0 GROUP BY DebatId, DebatSvar, DebatNr, Overskrift, BrugerId, Dato ORDER BY Dato DESC
ah du bruger access. Hmm er ikke god til access :( Muligvis: SELECT di.DebatId, di.DebatSvar, di.DebatNr, di.Overskrift, di.BrugerId, di.Dato, ( SELECT COUNT(di1.DebatNr)FROM DebatIndlaeg di1 WHERE di1.DebatNr =di.DebatId) as antalsvar FROM DebatIndlaeg di WHERE di.DebatNr = 0 ORDER BY di.Dato DESC Selv om subselects ikke er nogen god ide i sql server, så kan de være at det er din eneste mulighed eller lave en ekstra join.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.