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?
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.