Avatar billede willi Nybegynder
24. februar 2005 - 09:23 Der er 10 kommentarer og
2 løsninger

Join to tabeller

Hvorfor skal det være sværere end her:
<% SQL ="Select * From users, felt Where users.omraade = felt.omraade"
Response.write RS("users.namn")
%>

Jeg har to tabeller i forbindelse med login.
Users har et id, navn, brugernavn, adgangskode, link, omraade.
Felt har id, omraade.

Tabellen område anvender jeg hovedsagelig fordi jeg her henter dataerne til en selectbox.
Hentes disse fra Users vil der f.eks. være 20 enslydende "fiskeri" i selectboxen (én for hver users.navn).
(Dette kan dog sikkert undgås gennem .asp)

Det som jeg skal er at hæfte id, navn fra Users til Felt omraade.
Det vil sige at brugeren i adgangen vælger område i selectboxen.
Kun hvis der er overensstemmelse mellem navn og område kan han logge ind på dette område.

Det fungere fint. Men altså ikke når jeg laver to tabeller.

Det skulle da ikke være så svært...
Avatar billede willi Nybegynder
24. februar 2005 - 11:14 #1
Jeg har læst (og søger at bruge arne_v's art. om sql. Men jeg anvender access og med denne:

SELECT users.navn, felt.omraadeNavn FROM users INNER JOIN omraade ON users.omraade=felt.omraadeNavn;
Response.Write  RS("omrId")

...får jeg denne besked:
'Case' var ventet
test.asp, line 24, column 7
SELECT users.navn, felt.omraadeNavn FROM users INNER JOIN omraade ON users.omraade=felt.omraadeNavn;

hvad betyder det, at der mangler en case.
Eller kan formateringen eller syntaxen ikke anvendes i access?
Avatar billede terry Ekspert
24. februar 2005 - 12:59 #2
THis looks OK
SELECT users.navn, felt.omraadeNavn FROM users INNER JOIN omraade ON users.omraade=felt.omraadeNavn;

The recordset only contains fields you select in the SQL so
Response.Write  RS("omrId")
will fail because omrId is NOT in the SQL!!!
Avatar billede terry Ekspert
24. februar 2005 - 13:01 #3
But I dont see where you initialize the recordset (RS)!!!

<% SQL ="Select * From users, felt Where users.omraade = felt.omraade"
Response.write RS("users.namn")
%>

is this the only code? It isnt enough!
Avatar billede willi Nybegynder
24. februar 2005 - 15:17 #4
No it isnt. I have this string to the db:
db = Server.MapPath("db/datab.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

But nothing else
Avatar billede terry Ekspert
24. februar 2005 - 15:29 #5
Avatar billede -thomas- Nybegynder
24. februar 2005 - 15:34 #6
Prøv dette:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/datab.mdb")

sql = "Select * From users, felt Where users.omraade = felt.omraade"
set rs = Conn.Execute(sql)´

Do While Not rs.Eof
Response.Write rs("users.namn")
rs.Movenext
Loop

Set rs = nothing
   
conn.Close
Set conn = Nothing
%>
Avatar billede -thomas- Nybegynder
24. februar 2005 - 15:37 #7
Det er da i øvrigt lidt forkert, det du prøver på.

Du kan lave det i én tabel "users":
id, navn, brugernavn, adgangskode, link, omraade

Hvis du skal hente alle områder ud én gang, kan du bruge :

SELECT DISTINCT omraade FROM users;

Hvis du skal hente alle navne ud i tabellen, skriver du:

SELECT navn FROM users

Der er ingen grund til at bruge to tabeller, hvis du ikke har knyttet andre informationer til "omraade".
Avatar billede -thomas- Nybegynder
24. februar 2005 - 15:40 #8
Og du skal bruge noget lign. den kode jeg skrev 15:34:00 - du kan ikke bare skrive SQL direkte i filen, som om det var ASP-kode. Derfor får du fejlen "case var ventet" osv. Den tror, at du er i gang med en Select Case i ASP, og det er jo ikke meningen.
Avatar billede willi Nybegynder
03. marts 2005 - 12:28 #9
sender du også et svar thomas. så kan i dele p.
Avatar billede -thomas- Nybegynder
03. marts 2005 - 13:57 #10
svar
Avatar billede terry Ekspert
03. marts 2005 - 18:04 #11
thanks willi
Avatar billede -thomas- Nybegynder
04. marts 2005 - 08:55 #12
tak for point :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester