Avatar billede jmc Nybegynder
03. oktober 2001 - 08:39 Der er 18 kommentarer og
1 løsning

giv mig hvor.... ?

Jeg har en tabel som hedder emne_gruppe som samler relationerne imellem emne og gruppe ID. Jeg vil gerne lave en liste men behøver dertil navnet og ikke ID. Jeg vil helst kun holde mig til ID og ingen navne i denne tabel. Det er ikke en relation, da man skal kunne sætte en ny relation har jeg en update rutine til den pågædende emne_gruppe tabel.

Er der en måde spørge på værdi på anden recordset efter hvilken værdi dette recordset har?


eksempel:

giv mig værdien fra recordset
<%=(rs_gruppe.Fields.Item(\"gruppe\").Value)%>
hvor ID fra samme recordset <%=(rs_gruppe.Fields.Item(\"gruppe_id\").Value)%>
Matcher med
<%=(rs_emne_gruppe.Fields.Item(\"gruppe_id\").Value)%>

Så vil jeg kunne hente navnet ud, i stedet for kun at liste ID!

På samme måde med <%=(rs_emne_gruppe.Fields.Item(\"emne_id\").Value)%>
Avatar billede eagleeye Praktikant
03. oktober 2001 - 08:53 #1
du skal lave det med SQL. Jeg ville lave en SQL sætninge som denne:

SQL = \"SELECT gruppe.*, emne.* FROM (emne_gruppe LEFT JOIN emne ON emne_gruppe.emne_ID = emne.ID) LEFT JOIN gruppe ON emne_gruppe.gruppe_ID = gruppe.ID WHERE emne_gruppe.ID=\"& valgt_emne_gruppe

set rs = con.execute(sql)
emne id = rs(\"emne.id\")
gruppe id = rs(\"gruppe.id\")
emne navne = rs(\"emne_navn\")  \'hvis fltet hedder emne_navn naturligvis
gruppe navne = rs(\"gruppe_navn\")
Avatar billede jmc Nybegynder
03. oktober 2001 - 09:04 #2
Den siger:

Microsoft VBScript runtime error \'800a01a8\'
Object required: \'con\'
/relation_emne_gruppe.asp, line 47

Det er linien: set rs = con.execute(sql)
Avatar billede eagleeye Praktikant
03. oktober 2001 - 09:05 #3
con skal du rette til navnet på din connection.
Avatar billede jmc Nybegynder
03. oktober 2001 - 15:16 #4
min connectionstring hedder:MM_data_STRING

Jeg har rettet:

<%
SQL = \"SELECT gruppe.*, emne.* FROM (emne_gruppe LEFT JOIN emne ON emne_gruppe.emne_ID = emne.ID) LEFT JOIN gruppe ON emne_gruppe.gruppe_ID = gruppe.ID WHERE emne_gruppe.ID=\"& valgt_emne_gruppe

set rs = MM_data_STRING.execute(sql)
emne id = rs(\"emne.id\")
gruppe id = rs(\"gruppe.id\")
emne navne = rs(\"emne_navn\")  \'hvis feltet hedder emne_navn naturligvis
gruppe navne = rs(\"gruppe_navn\")
%>

Den giver følgende fejl:

Microsoft VBScript runtime error \'800a01a8\'
Object required: \'MM_data_STRING\'
/relation_emne_gruppe.asp, line 47
Avatar billede eagleeye Praktikant
03. oktober 2001 - 15:20 #5
Din connectionsting MM_Data_STRING er en srtng som forteller en connection hvad database type og hvor databasen ligger.

MM_data_STRING = \"DBQ=database.......\"
Con.Open MM_data_STRING  \' har du ikke sådan en linie den hedder nok ikke Con men noget.
Avatar billede jmc Nybegynder
03. oktober 2001 - 15:21 #6
De andre steder stå der: rs_emne.ActiveConnection = MM_data_STRING
Jeg har prøvet at rette til:
rs_emne.ActiveConnection = MM_data_STRING men det hjælper ikke. Hvor har du valgt_emne_gruppe fra??
Avatar billede eagleeye Praktikant
03. oktober 2001 - 15:23 #7
bruger du rs_emne.Open \"bla\" ?
Avatar billede jmc Nybegynder
03. oktober 2001 - 15:27 #8
Jeg har prøvet at lave det hele om og nu der det sådan ud:

<%
set rs_gruppe_navn = Server.CreateObject(\"ADODB.Recordset\")
rs_gruppe_navn.ActiveConnection = MM_data_STRING
rs_gruppe_navn.Source = \"SELECT gruppe.*, emne.* FROM (rs_emne_gruppe LEFT JOIN rs_emne ON rs_emne_gruppe.emne_ID = rs_emne.ID) LEFT JOIN gruppe ON rs_emne_gruppe.gruppe_ID = rs_gruppe.ID WHERE rs_emne_gruppe.ID=\"& valgt_emne_gruppe

\'set rs = MM_data_STRING
emne id = rs_gruppe_navn(\"emne.id\")
gruppe id = rs_gruppe_navn(\"gruppe.id\")
emne navne = rs_gruppe_navn(\"emne\")  \'hvis feltet hedder emne_navn naturligvis
gruppe navne = rs_gruppe_navn(\"gruppe\")
%>

og giver denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in JOIN operation.

/relation_emne_gruppe.asp, line 50

Jeg tror der er noget galt med: valgt_emne_gruppe som er sidst i SQL sætningen!
Avatar billede eagleeye Praktikant
03. oktober 2001 - 15:31 #9
WHERE rs_emne_gruppe.ID=\"& valgt_emne_gruppe

kan du evt fjerne i første omgang men jeg tror ikke det er problemmet.
Prøv lige at tjekke om jeg har stavet dine Tabel og Felt navne rigtigt.
Avatar billede jmc Nybegynder
03. oktober 2001 - 15:47 #10
Hvis du kan forklare mig jvad LEFT JOIN betyder kan jeg måske regne det ud, hvad der går galt! ;o)

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in JOIN operation.

/relation_emne_gruppe.asp, line 51
Avatar billede jmc Nybegynder
03. oktober 2001 - 15:48 #11
Ken jeg ikke bruge :

The DISTINCTROW predicate is used to omit duplicate values in an entire record of fields. This can be very useful when you use a INNER JOIN to join two tables together and you do not want any duplication. This code create a table that does not repeat any of the last names:
Avatar billede eagleeye Praktikant
03. oktober 2001 - 16:05 #12
jeg mener stadig det er en stavefejl.
Avatar billede jmc Nybegynder
03. oktober 2001 - 16:15 #13
Jeg er gået det hele efter og nu der SQL sådan ud:

rs_gruppe_navn.Source = \"SELECT gruppe_id.*, emne_id.* FROM (rs_emne_gruppe LEFT JOIN rs_emne ON rs_emne_gruppe.emne_ID = rs_emne.ID) LEFT JOIN rs_gruppe ON rs_emne_gruppe.gruppe_ID = rs_gruppe.ID\"

giver denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error \'80004005\'

[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot find the input table or query \'rs_emne_gruppe\'. Make sure it exists and that its name is spelled correctly.

/relation_emne_gruppe.asp, line 49

men rs_emne_gruppe eksistere helt sikkert!
Linie 49 er den første linie som efter dit foreslag skulle se sådan ud:
emne_id = rs_gruppe_navn(\"emne.id\")

Som også er linie 49. Kan det tænkes at jeg ikke kan gøre sådan? rs_gruppe_navn er den nye SQL hvor jeg sætter emne_id som jeg kan bruge senere via rs_gruppe_navn(\"emne.id\") - Jeg ved for lidt om dette??? Jeg hæver lige points for din hjælp!
Avatar billede eagleeye Praktikant
03. oktober 2001 - 16:22 #14
I databasen har du som jeg har forstået 3 tabllerr (emne, gruppe, emne_gruppe) er det rigtigt?
Avatar billede jmc Nybegynder
03. oktober 2001 - 16:27 #15
Det er nogle recordsets jeg har oprettet som hedder rs_emne, rs_gruppe og re_emne_gruppe. mine tabeller hedder tbl_emne, tbl_gruppe og sys_emne_gruppe. Beklager hvis jeg ikke opfangede dette. Jeg er en newbie inden for dette felt!
Avatar billede jmc Nybegynder
03. oktober 2001 - 16:30 #16
Jeg har ændret til:
rs_gruppe_navn.Source = \"SELECT gruppe_id.*, emne_id.* FROM (tbl_gruppe LEFT JOIN tbl_emne ON sys_emne_gruppe.emne_id = tbl_emne.id) LEFT JOIN tbl_gruppe ON sys_emne_gruppe.gruppe_id = tbl_gruppe.id\"
Avatar billede eagleeye Praktikant
03. oktober 2001 - 16:30 #17
\"SELECT tdl_emne.*, tbl_gruppe.* FROM (sys_emne_gruppe LEFT JOIN tbl_emne ON sys_emne_gruppe.emne_ID = tbl_emne.ID) LEFT JOIN tbl_gruppe ON sys_emne_gruppe.gruppe_ID = tbl_gruppe.ID\"


Hedder dine felter i sys_emne_gruppe:
gruppe_ID
emne_ID      ?
Avatar billede jmc Nybegynder
03. oktober 2001 - 16:34 #18
Det lader til at køre nu. Kan jeg så response.write en af disse (emne id, gruppe is osv.) eller hvordan fungere dette?

emne id = rs(\"emne.id\")
gruppe id = rs(\"gruppe.id\")
emne navne = rs(\"emne_navn\")  \'hvis fltet hedder emne_navn naturligvis
gruppe navne = rs(\"gruppe_navn\")

Jeg siger tak for hjælpen!
Avatar billede eagleeye Praktikant
03. oktober 2001 - 18:01 #19
hej ok jeg var lige væk et stykke tid.

Response.write \"Emne ID : \" & rs(\"emne.id\")
Response.write \"Gruppe ID : \" & rs(\"gruppe.id\")
Response.write \"Emne navn : \" & rs(\"emne_navn\")
Response.write \"Gruppe navn : \" & rs(\"gruppe_navn\")

du skal muligvis lige rette emne_navn og gruppe_navn til de rigtige felt navne som du har i henholdsvis tbl_emne og tbl_gruppe tabellerne.
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
Kurser inden for grundlæggende programmering

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