webForumDet fria alternativet

Databas funderingar

30 svar · 848 visningar · startad av Trumpf

TrumpfMedlem sedan feb. 2004213 inlägg
#1

Jag har en accessbas med en post som heter "members". Och kolumn som heter id och username.
Där samlar jag alla medlemmar som har loggat in.

Sen har jag en post som heter klubb där har jag id och klubb i kolumnerna.

Jag använder följande sql i inledningen.

<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/members.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM members WHERE id=" & Request.Querystring("id")

RecSet.Open SQL, Conn, 1, 3
%>

Men hur ska jag sammankoppla medlem och klubb ?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Skapa en kolumn i tabellen 'members'; som heter typ "klubbid". Sen joinar du dem med SQL-en.

SELECT * FROM members m INNER JOIN klubb k ON m.klubbid = k.id

Vidare; se till att byta ut den där IDG-koden mot nåt sånt här istället;

<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/members.mdb")

SQL = "SELECT * FROM members m INNER JOIN klubb k ON m.klubbid = k.id WHERE m.id = " & CLng(Request("id"))
Set RecSet = Conn.Execute(SQL)%>
TrumpfMedlem sedan feb. 2004213 inlägg
#3

Tack ska kolla direkt nu ikväll (lördag)

TrumpfMedlem sedan feb. 2004213 inlägg
#4

jag vill inte ha kolumnen "klubb" i members.
Jag vill skapa en ny tabell med namn klubb och där har jag id och klubb.

HUr ska select koden se ut då?

@ndersMedlem sedan juni 200032 969 inlägg
#5

Det är väl bara att joina på användar-ID då istället?

TrumpfMedlem sedan feb. 2004213 inlägg
#6

Hur ser det ut?

@ndersMedlem sedan juni 200032 969 inlägg
#7

Hmm?

SQL = "SELECT * FROM members m INNER JOIN klubb k ON [b]m.id = k.memberid[/b] WHERE m.id = " & CLng(Request("id"))

Har du ytterligare en tabell så får du joina ett steg till.

TrumpfMedlem sedan feb. 2004213 inlägg
#8

En fråga till.
Hur gör jag i nästa steg för att få fram namn och klubb?

Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters

Just nu får jag detta. Men det fattas väl något eller?!

@ndersMedlem sedan juni 200032 969 inlägg
#9

Felmeddelandet betyder att det är ett tabell- eller fältnamn i frågan som inte stämmer. Kontrollera.

Du får nog beskriva hur dina tabeller och fält ser ut.

TrumpfMedlem sedan feb. 2004213 inlägg
#10

members
id, username

klubb
id, klubb

@ndersMedlem sedan juni 200032 969 inlägg
#11

Hur knyter du ihop medlem och klubb då, eftersom du inte ville ha klubbtillhörigheten i medlemstabellen?

TrumpfMedlem sedan feb. 2004213 inlägg
#12

Det är väl det jag undrar.

@ndersMedlem sedan juni 200032 969 inlägg
#13

Om en medlem ska kunna vara medlem i en klubb tycker jag du kan lagra det i medlemstabellen. Om man ska kunna vara medlem i fler klubbar får du lagra det i en tabell.

tblMembership
---------------------
memberID
clubID

Sedan får du joina in den tabellen också. Kanske något sånt här:

SQL = "SELECT members.*, k.klubb FROM (members m INNER JOIN tblMembership ms ON m.id = ms.memberID) INNER JOIN klubb k ON ms.clubID = k.ID WHERE m.id = " & CLng(Request("id"))

Men det är svårt att gissa vad du frågar efter.

TrumpfMedlem sedan feb. 2004213 inlägg
#14

Om man gör en korsfråga i access programmet kan jag använda funktionen visa funktionen (SQL) och ta koden där och klistra in?

Exempel fick jag denna kod:

TRANSFORM Count(members.antal) AS Antalförantal
SELECT members.id, members.username, members.klubben, Count(members.antal) AS [Summa av antal]
FROM members
GROUP BY members.id, members.username, members.klubben
PIVOT members.fnamn;

Är det bara klistra in den då?

Jag gjorde det men fick felmeddelande.

SQL = "SELECT TRANSFORM Count(members.antal) AS Antalförantal

Vad beror det på tro?

ToonsterMedlem sedan feb. 20001 590 inlägg
#15

Username är nog ett reserverat ord. Så byt namn på fältet, så löser det nog en del av problemet.

SprayMaphiaMedlem sedan jan. 2004128 inlägg
#16

Toonster skrev:

Username är nog ett reserverat ord. Så byt namn på fältet, så löser det nog en del av problemet.

Nejje, det behövs ju inte ;)
Skriv [username] i stället för username.

@ndersMedlem sedan juni 200032 969 inlägg
#17

Trumpf skrev:

Vad beror det på tro?

Du kan inte bara klistra in och använda radbrytningar hur som helst. Antingen:

strSQL = "bla bla bla bla" & _
         "bla bla bla"

eller

strSQL = "bla bla bla bla"
strSQL = strSQL & "bla bla bla"
TrumpfMedlem sedan feb. 2004213 inlägg
#18

Jag får felmeddelande då:

SQL = TRANSFORM Count(members.antal) AS Antalförantal
----------------^

Använder denna SQL:

<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/members.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = TRANSFORM Count(members.antal) AS Antalförantal
SELECT members.id, members.[username], members.klubben, Count(members.antal) AS [Summa av antal]
FROM members
GROUP BY members.id, members.[username], members.klubben
PIVOT members.fnamn;

RecSet.Open SQL, Conn, 1, 3
%>

@ndersMedlem sedan juni 200032 969 inlägg
#19

Hmm...

Vad hände med mitt förra inlägg? Syns det inte?

TrumpfMedlem sedan feb. 2004213 inlägg
#20

Fattar inte vad du menar riktigt.

132 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)