27. december 2000 - 16:22Der er
29 kommentarer og 1 løsning
Søg i flere tabeller !
Hej
Jeg er ved at lave en søgemaskine, som skal søge i en database med ca. 20 tabeller.
Men hvis jeg skriver: From tabel1, tabel2, tabel3 Where osv...
Men den kommer med følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers fejl \'80004005\'
[Microsoft][ODBC Microsoft Access Driver] The specified field \'LinkName\' could refer to more than one table listed in the FROM clause of your SQL statement.
Er der et eller flere kloge hoveder der kan hjælpe ?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
den ved jo ikke hvilken af de 2 den skal hente fra....altså først i den sql laver du forkortelser og i resten af dit statement skriver du forkortelsen.feltnavn ved hver eneste....
<center><!-- #include file=\"search.htm\"--></center> <% strKeyword = Trim(Request.Form(\"Keyword\")) If Len(strKeyword) = 0 Then Response.Clear Response.Redirect(\"search.asp\") Else strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If strSQL = \"SELECT * FROM sabatti_vaben WHERE\" strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\" strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"produktsog.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open strDSN Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then Response.Write \"<center>\" Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"80%\"\" cellpadding=\"\"3\"\" >\" Do While Not rs.EOF Response.Write \"<tr><td width=100% ><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >\" & rs(\"min\") & \"<a class=link href=redirect.asp?id=\"& rs(\"ID\")&\" TARGET=_self>\"& rs(\"Model\") &\"</A> - \" & rs(\"Beskrivelse\")&\"<BR></FONT><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"1\"\" ></FONT><HR></td></tr>\" rs.MoveNext Loop Response.Write \"</FONT></table>\" Else Response.Write \"<center><p><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >Søgningen fandt ikke noget til dig!</center>\" End If myConn.Close Set myConn = Nothing %>
Well, hvis i ikke allerede har luret mig, så er jeg altså ikke nogen ørn til det her, såderfor beder jeg jer om at kombinere det ind i eksemplet.... ;)
Men der er noget der tyder på, at du kunne samle dine tabeller til en tabel, og føje et ekstra felt til, hvor du kan angive om det sabatti_vaben, Aya_vaben, browning_vaben (osv), hvis du vil søge på denne egenskab i anden sammenhæng.
karstenin -> du skal bare skrive en forkortelse som ikke er redundant (altså som ikke hedder det samme som nogen anden) i din oprindelige sql og sætte den forkortelse ind foran feltnavn og adskille med et .
uffe_kld -> det kan være svært at sige om hans tabeller kan samles med optimeret effekt - det skal man se en tabeloversigt for at kunne finde ud af....
<center><!-- #include file=\"search.htm\"--></center> <% strKeyword = Trim(Request.Form(\"Keyword\")) If Len(strKeyword) = 0 Then Response.Clear Response.Redirect(\"search.asp\") Else strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If strSQL = \"SELECT * sabatti_vaben t1, Aya_vaben t2, browning_vaben t3 WHERE\" strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\" strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"produktsog.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open strDSN Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then Response.Write \"<center>\" Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"80%\"\" cellpadding=\"\"3\"\" >\" Do While Not rs.EOF Response.Write \"<tr><td width=100% ><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >\" & rs(\"min\") & \"<a class=link href=redirect.asp?id=\"& rs(\"ID\")&\" TARGET=_self>\"& rs(\"Model\") &\"</A> - \" & rs(\"Beskrivelse\")&\"<BR></FONT><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"1\"\" ></FONT><HR></td></tr>\" rs.MoveNext Loop Response.Write \"</FONT></table>\" Else Response.Write \"<center><p><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >Søgningen fandt ikke noget til dig!</center>\" End If myConn.Close Set myConn = Nothing %>
<center><!-- #include file=\"search.htm\"--></center> <% strKeyword = Trim(Request.Form(\"Keyword\")) If Len(strKeyword) = 0 Then Response.Clear Response.Redirect(\"search.asp\") Else strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If strSQL = \"SELECT * sabatti_vaben t1, Aya_vaben t2, browning_vaben t3 WHERE\" strSQL = strSQL & \" (t1.Model LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (t1.sogeord LIKE \'%\" & strKeyword & \"%\')\" strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"produktsog.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open strDSN Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then Response.Write \"<center>\" Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"80%\"\" cellpadding=\"\"3\"\" >\" Do While Not rs.EOF Response.Write \"<tr><td width=100% ><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >\" & rs(\"min\") & \"<a class=link href=redirect.asp?id=\"& rs(\"ID\")&\" TARGET=_self>\"& rs(\"Model\") &\"</A> - \" & rs(\"Beskrivelse\")&\"<BR></FONT><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"1\"\" ></FONT><HR></td></tr>\" rs.MoveNext Loop Response.Write \"</FONT></table>\" Else Response.Write \"<center><p><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >Søgningen fandt ikke noget til dig!</center>\" End If myConn.Close Set myConn = Nothing %>
<!-- Søgemaskine slutter -->
sådan......du skal have t1. ind før feltnavnet ved dine statements.....jeg ved ikke om denne virker....det kommer an på om model er i t1 tabellen er i t2........
jeg kan ikke hjælpe mere.....jeg kan ikke se ret meget af din kode, har meget lidt indblik i din database, men mener jeg har besvaret spm omkring fejlen som fremkom fordi din database var redundant og derfor meldte fejl!
hvorfor egentlig 25 point om man må spørge, he he....svarede jeg ikke på dit spm ?
du kan nok se at det kan være lidt svært for mig at hjælpe dig, selvom jeg gerne ville, jeg har da efterhånden skrevet en del til dette og mener da helt bestemt det er mere end 25 point værd, men hvis du gerne vil have de 30 tilbage opretter jeg da gerne et spm så du kan få dem retur.....
Nej... - som du selv siger, så har du nok fortjent de 55 pt.
Men så kan du også lige fortælle mig om det er bøvlet at sætte den til at søge med \"\"....
Synes godt om
Ny brugerNybegynder
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.