webForumDet fria alternativet

Hämta från 2 ställen i en databas

.NET

14 svar · 398 visningar · startad av NightFlash

Medlem sedan feb. 20046 inlägg
Frågan#1
Medlem sedan maj 20012 812 inlägg
#2

Du löser detta med ItemDataBound eventet som finns på Repeaters/DataGrids.

Det betyder att för varje post i din första fråga så körs eventet och i detta event så kan du ställa en ny fråga till din databas.

Detta är dock inte en lösning att rekomender eftersom du kommer gör lika många förfrågningar mot databas som du har poster i din första fråga...

Du borde läsa på om relationer och databasdesgin så hade det säkert gått att lösa med en Inner Join i din SQL sats, och du på detta vis endast behöver ställa EN fråga till databasen.

- M

p.s välkommen till forumet.

Medlem sedan jan. 2004501 inlägg
#3

Detta har jag skrivit tidigare kanske kan ge dig en aning om hur du ska lösa problemet.
http://www.webforum.nu/showthread.php?s=&threadid=94331&forumid=191

Men jag håller med Gladh en INNER JOIN kan nog lösa ditt problem men det beror på om det bara finns en rad per post i den andra förfrågningen. Annars rekomenderar jag den lösningen jag försöker visa i länken.

Medlem sedan feb. 20046 inlägg
#4

dim objCmd as new OleDbDataAdapter ("SELECT Present.PSID, Students.SID, Students.SFIRSTNAME, Students.SLASTNAME, Students.SCLASS FROM Present INNER JOIN Students ON Present.PSID = Students.SID Where Present.PCID = '" & Request.Querystring("CID") & "'", objConn)

Verkar funka iaf men sen dör allt på ett annat ställe...

Och eftersom dessa saker inte ens existerar i ASP så vet jag inte riktigt hur jag ska skriva om sakerna.

dim ds as DataSet = new DataSet()
objCmd.Fill(ds, "Present")

MyDataList.DataSource = ds.Tables("Present").DefaultView
MyDataList.DataBind()

eftersom det är två tabeller så ska det inte stå "Present" där men jag måste ju ha en DataSet för att kunna komam vidare till MyDataList och sedan till ItemTemplate.

Känns som om man måste läsa hela .NET boken 20 ggr innan man förstår allt bör nog skaffa en bättre bok också denna verkar suga =(

Medlem sedan jan. 2004501 inlägg
#5

Oki...
Du verkar inte har läst mitt exempel speciellt bra.
Det du gör att du väljer typ
SELECT * FROM minDbTabell1 som du fyller upp det första dataset tabellen "minDbTabell1" med.
Sedan kör du
SELECT * FROM minDbTabell2 och sedan fyller du upp datasettabellen "minDbTabell2"
Sedan tar du ut varje rad i minDbTabell2 som har det idt som du söker efter.

Medlem sedan feb. 20046 inlägg
#6

dim SQL as string = "SELECT Present.PID,Present.PV11,Present.PV12,Present.PV13,Present.PV14,Present.PV15,Present.PV16,
Present.PV17,Present.PV18,Present.PV19,Present.PV20,Present.PV21,Present.PV22,Present.PV23,Present.
PSID,Students.SID,Students.SFIRSTNAME,Students.SLASTNAME,Students.SCLASS FROM Present INNER JOIN
Students ON Present.PSID = Students.SID Where Present.PCID = " & (Request.Querystring("CID")) &""

Den blir lite onödigt lång tycker jag... finns det inget bättre sätt??

Medlem sedan maj 20012 812 inlägg
#7

Present.PV11,Present.PV12,Present.PV13,Present.PV14,Present.PV15,Present.PV16,
Present.PV17,Present.PV18,Present.PV19,Present.PV20,Present.PV21,Present.PV22,Present.PV23

Du har alltså lagt en ny kolumn för varje vecka i din Tabell Present????

Om det är fallet, så finns det bättre sätt, en korrekt databasdesign. Kan du inte visa hur dina tabeller ser ut, för just nu ser det väldigt fel ut.

- Magnus

Medlem sedan feb. 20046 inlägg
#8

Du råkar inte ha ICQ? enklare att ta allt där då..

// Fredrik

UIN:9336651

Medlem sedan maj 20012 812 inlägg
#9

Dumt att missa chansen att få hjälp av flera personer, samt att jag sällan sitter vid datorn hemma, utan mest på jobb, och där finns ingen ICQ.

Du kan dock läsa på lite om Normalisering av databaser, vilket din databasdesign säkert behöver:

http://databases.about.com/library/weekly/aa080501a.htm
Läs även de relaterade artiklarna för att förstå mer.

- M

Medlem sedan jan. 2004501 inlägg
#10

Bara att adda mig på icq...finns i mitt info.

Medlem sedan feb. 20046 inlägg
#11

Databasen kan ni kika på http://ankan.ath.cx/nv.mdb

Vet inte riktigt hur jag ska fixa den eftersom det är ett närvaro system för en skola.

Många elever, klasser, lektioner, tider etc

ideer på bättre upplägg vore bra iaf..

och ja jag leker fortfarande med access =)

Medlem sedan jan. 2004501 inlägg
#12

Du måste nog sätta dig med papper och penna en del och rita små fyrkanter och så. Lära dig lite databas modelering.

Och du måste lära dig att namnge kolumnerna och tabellerna bättre. CID, PID, TID fattar inget av vad de betyder utan att kolla det i de andra tabellerna.

Men om jag har fattat det rätt:
En klass innehåller flera elever
En kurs har ett standaliserat schema
En kurs har har en lärare
En kurs går över flera veckor
För varje kurstilfälle ska elever registrera närvaro

Medlem sedan feb. 20046 inlägg
#13

jao. Eftersom det är grymt många elever lektioner och närvaro tillfällen så visste jag inte riktigt hur jag skulel dela upp det..

Satte
lärare i en tabell
elever i en tabell
lektioner i en tabell och så närvaron som hämtar info från de 3 andra.

men men ideer välkomnas iaf.

TID = TeachersID
CID = ClassID
PID = PresentID
SID = StudentID

sätter första bokstaven i Tabell namnet i alla kolumner. logiskt för mig iaf

Medlem sedan jan. 2004501 inlägg
#14

TID = TeachersID varför vad är det för fel på TeacherID? Det är inte ett långt namn och det beskriver vem id tillhör.

Medlem sedan jan. 2004501 inlägg
#15

Du borde göra om lite i dina tabeller.

En tabell för:
Lärare
Elever
Klasser(Som innehåller alla elever så man vet vilken klass de till hör, bra att veta när man programmerar)
KlassTillElever
Kurs
KursTillKlass
SchemaDag(Innehåller veckodag, sluttid och start tid)
KursTillSchemadag
Kurstillfälle(ska innehålla tiddatum, kursID, elevID och en närvaro bit)

Detta handlar mer om databaser än asp.net du borde ta det i SQL forumet i stället.

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)