Avatar billede asp_rookie Nybegynder
10. marts 2003 - 11:44 Der er 40 kommentarer og
1 løsning

Søg i flere tabeller..

Jeg har en access db. med 6 tabeller hvordan kan jeg søge i dem alle??
select * from tabel1, tabel2 osv??
Avatar billede chrisrj Forsker
10. marts 2003 - 11:46 #1
ja

:)
Avatar billede asp_rookie Nybegynder
10. marts 2003 - 11:49 #2
Får denne fejl så...:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/internet/site_search.asp, line 85
Avatar billede chrisrj Forsker
10. marts 2003 - 11:49 #3
Hvad står der i linie 85?
Avatar billede asp_rookie Nybegynder
10. marts 2003 - 11:50 #4
<td width="61%"><a href="main_org.asp?id=<%= rsGlobalWeb("ID")%>"><%= rsGlobalWeb("profil")%></a>
Avatar billede chrisrj Forsker
10. marts 2003 - 11:51 #5
heh, prøv at dele linien op i to:

<td width="61%"><a href="main_org.asp?id=<%= rsGlobalWeb("ID")%>">
<%= rsGlobalWeb("profil")%></a>

Og sig mig hvor fejl så kommer.
Avatar billede asp_rookie Nybegynder
10. marts 2003 - 11:54 #6
Samme fejl i denne...
<td width="61%"><a href="main_org.asp?id=<%= rsGlobalWeb("ID")%>">
Avatar billede -mundi- Nybegynder
10. marts 2003 - 11:55 #7
Du har højst sansynligt flere ID felter i tabellerne, du blive nødt til at kalde dem noget forskelligt ved udtrækket ellers ved SQL ikke hvilken ID det er du vil have trukket ud

eks:

select tabel1.id as tabel1id, tabel2.id as tabel2id osv
Avatar billede chrisrj Forsker
10. marts 2003 - 11:55 #8
ok, hvordan ser dit sql kald ud?
Avatar billede chrisrj Forsker
10. marts 2003 - 11:58 #9
Det er ikke nødvendigt. Man bare angive tabellen i RS:

rsGlobalWeb("tabel1.ID")
Avatar billede chrisrj Forsker
10. marts 2003 - 11:59 #10
Man kan bare angive tabellen i RS:
Avatar billede -mundi- Nybegynder
10. marts 2003 - 12:17 #11
Det kan man slf også, det er 2 forskellige løsninger til det samme problem
Avatar billede chrisrj Forsker
10. marts 2003 - 12:20 #12
:)

Netop....
Avatar billede chrisrj Forsker
10. marts 2003 - 14:00 #13
Hva' så?

Har du fundet ud af om det virker?
Avatar billede asp_rookie Nybegynder
11. marts 2003 - 09:56 #14
Jo, men hvad skal jeg skrive hvis jeg skal
Avatar billede chrisrj Forsker
11. marts 2003 - 10:04 #15
Hvis du skal hvad?

Tak for points. :)
Avatar billede asp_rookie Nybegynder
11. marts 2003 - 10:10 #16
ups ... fløj lige af...
.. når jeg nu skal have listet alle resultaterne?
Hvordan laver jeg en sætning som lister resultater fra flere tabeller?
Avatar billede chrisrj Forsker
11. marts 2003 - 10:23 #17
lav en løkke der løber alle tabellerne igennem.
Avatar billede asp_rookie Nybegynder
11. marts 2003 - 10:24 #18
Do While Not rsGlobalWeb.EOF
a href="main_org.asp?id=<%= rsGlobalWeb("Id")%>">
<%= rsGlobalWeb("profil")%></a>


                            <%=rsGlobalWeb("dato")%>
                       
                      <% rsGlobalWeb.MoveNext
Avatar billede chrisrj Forsker
11. marts 2003 - 10:35 #19
ja...?
Avatar billede asp_rookie Nybegynder
11. marts 2003 - 10:36 #20
Men så tager den jo kun den ene tabel...??
Avatar billede asp_rookie Nybegynder
11. marts 2003 - 10:42 #21
Her er min sql .. hvordan fa'en ... skal min løkke så se ud...

SqlJunk = "select * from tabel1, tabel2, tabel3, tabel4, tabel5"
Avatar billede chrisrj Forsker
11. marts 2003 - 10:57 #22
<%
tal = 1
for 1 to 5
  Do While Not rsGlobalWeb.EOF
    response.write "a href='main_org.asp?id="&rsGlobalWeb("tabel"&tal&".Id")&"'>"& rsGlobalWeb("profil")&"</a>"
    response.write rsGlobalWeb("dato")
    rsGlobalWeb.MoveNext
  loop
tal = tal + 1
next
%>

Jeg ved ikke om man kan gøre sådan, men det er da et forsøg... :)
Avatar billede chrisrj Forsker
11. marts 2003 - 14:20 #23
Virker det?
Avatar billede asp_rookie Nybegynder
12. marts 2003 - 09:06 #24
Nu ser det sådan her ud:


Dim SqlJunk


Set dbGlobalWeb = Server.CreateObject("ADODB.Connection")
dbGlobalWeb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("admin/news/nyheder.mdb")

SqlJunk = "select * from profil, vision, mission, test, nyheder"


If Request.Form("TypeSearch") = "frmSiteSearch" Then
    SqlJunk = SqlJunk & " WHERE sagsnavn LIKE '%" & Request.Form("DaInBox") & "%'"
End If

Set rsGlobalWeb = Server.CreateObject("ADODB.Recordset")
rsGlobalWeb.Open SqlJunk, dbGlobalWeb, 3

%>
                      <%
If rsGlobalWeb.BOF and rsGlobalWeb.EOF Then%>
                    <div align="center">
                      <!--#include file="projekt_nomatch.asp" -->

<%

  Do While Not rsGlobalWeb.EOF
    response.write "a href='main_org.asp?id="&rsGlobalWeb("Profil, vision, mission, test, nyheder"".Id")&"'></a>"
    rsGlobalWeb.MoveNext
  loop
End if

Men siden viser ingen resultater..??
Avatar billede chrisrj Forsker
12. marts 2003 - 09:46 #25
Mangler du ikke et "NOT" eller to i denne linie:

If rsGlobalWeb.BOF and rsGlobalWeb.EOF Then%>
Avatar billede chrisrj Forsker
12. marts 2003 - 09:48 #26
Jeg tror ikke at du kan skrive sådan:
rsGlobalWeb("Profil, vision, mission, test, nyheder"".Id")

Du bliver nok nødt til at dele det op.
Avatar billede asp_rookie Nybegynder
12. marts 2003 - 09:51 #27
Den er vist også helt gal med den sql sætning...
Jeg sletter det...

Hvordan ville du gøre... når det kommer fra en form på en anden side??

Set dbGlobalWeb = Server.CreateObject("ADODB.Connection")
dbGlobalWeb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("admin/news/nyheder.mdb")

SqlJunk = "select * from profil, vision, mission, test, nyheder"
???
Avatar billede chrisrj Forsker
12. marts 2003 - 09:55 #28
Her er en søgefunktion fra noget jeg har lavet engang:

searchterms = Split(Request.form("searchterms"), " ")
searchuser = Request.form("searchuser")

if Request.form("searchterms") <> "" then
    %>
<!--#include file="databaseconn.asp"-->
<%   
    if searchuser <> "" then
        sql = "SELECT DISTINCT * FROM modeller WHERE modelnr='" & searchuser & "' AND "
    else
        sql = "SELECT DISTINCT * FROM modeller WHERE "
    end if
   
    for count = 0 to UBound(searchterms)
        sql = sql & "(modelnr LIKE '%" & searchterms(count) & "%' or modelnavn LIKE '%" & searchterms(count) & "%') AND "
    next
   
    sql = Left(sql, Len(sql)-4)
    sql = sql & " ORDER BY modelnr asc"
   
    'Set rsEntries = Server.CreateObject("ADODB.Recordset")
    'rsEntries.Open sql, conn
    Set rsEntries = Conn.Execute(SQL)
    'response.write sql
end if

Så sætter du bare dine tabeller ind her:

sql = "SELECT DISTINCT * FROM modeller WHERE modelnr='" & searchuser & "' AND "

og:

sql = "SELECT DISTINCT * FROM modeller WHERE "


Og her skriver du hvilke konner der skal søges i:

sql = sql & "(modelnr LIKE '%" & searchterms(count) & "%' or modelnavn LIKE '%" & searchterms(count) & "%') AND "


Til sidst hvordan du vil sortere resultatet:

sql = sql & " ORDER BY modelnr asc"
Avatar billede chrisrj Forsker
12. marts 2003 - 09:56 #29
Request.form("searchterms") er naturligvis fra formen. :)
Avatar billede asp_rookie Nybegynder
12. marts 2003 - 09:58 #30
Jep... jeg prøver lige...:o)
Avatar billede asp_rookie Nybegynder
12. marts 2003 - 10:23 #31
Men hvis jeg nu har 5 tabeller i min db..
I hver tabel er der en kolonne der hedder 'profil'
Hvordan kommer det så til at se ud??

For du har jo 2 formfelter ik'??
Avatar billede chrisrj Forsker
12. marts 2003 - 13:24 #32
Der er et indtastningsfelt og en dropdownbox med profiler.

Prøv at vise mig dine tabeller og skriv hvilke kolonner du vil søge i.
Avatar billede asp_rookie Nybegynder
13. marts 2003 - 11:30 #33
Nu er jeg måske kommet et stykke...;o)

Dim SqlJunk
sog = request.Form("sogning")

Set dbGlobalWeb = Server.CreateObject("ADODB.Connection")
dbGlobalWeb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("admin/news/nyheder.mdb")

SqlJunk = "SELECT * FROM nyheder WHERE nyhed LIKE '%" & Request.Form("sogning") & "%'"


Set rsGlobalWeb = Server.CreateObject("ADODB.Recordset")
rsGlobalWeb.Open SqlJunk, dbGlobalWeb, 3

Nu er det kun 1 tabel og i 1 kolonne...
Men den udskriver alt i kolonnen .. hvad er fejlen.. det må være min sql???
Avatar billede chrisrj Forsker
13. marts 2003 - 11:52 #34
Du er sikker på at du ikke søger på noget der står i alle rækker? :)
Avatar billede asp_rookie Nybegynder
13. marts 2003 - 11:55 #35
Jep...
Avatar billede chrisrj Forsker
13. marts 2003 - 12:06 #36
Du har fjernet "DISTINCT". Prøv at sætte det ind i igen:

SqlJunk = "SELECT DISTINCT * FROM nyheder WHERE nyhed LIKE '%" & sog & "%'"
Avatar billede asp_rookie Nybegynder
13. marts 2003 - 12:28 #37
Den tager stadigvæk hele tabellen...??
Avatar billede asp_rookie Nybegynder
13. marts 2003 - 12:59 #38
Dim SqlJunk
sog = request.Form("sogning")

Set dbGlobalWeb = Server.CreateObject("ADODB.Connection")
dbGlobalWeb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("admin/news/nyheder.mdb")

SqlJunk = "SELECT * FROM nyheder WHERE nyhed LIKE '%" & Request.Form("sogning") & "%'"


Set rsGlobalWeb = Server.CreateObject("ADODB.Recordset")
rsGlobalWeb.Open SqlJunk, dbGlobalWeb, 3


%>
                      <%
If rsGlobalWeb.BOF and rsGlobalWeb.EOF Then%>
                    <div align="center">
                      <!--#include file="projekt_nomatch.asp" -->
                      <%Else%>
                      <%If Not rsGlobalWeb.BOF Then%>
                 
                      <%
    Do While Not rsGlobalWeb.EOF
    %>
                   
                      <a href="sog_opl.asp?id=<%= rsGlobalWeb("NyhedID")%>"><%= rsGlobalWeb("nyhed")%></a> <---KAN DET IKKE VÆRE DENNE HER DER BARE UDSKRIVE KOLONNEN??
                     
                      <% rsGlobalWeb.MoveNext
    Loop
    %>
                    </table>
                    <%End If%>
                    <%End If%>
                    <%
rsGlobalWeb.Close
dbGlobalWeb.Close
%>
Avatar billede chrisrj Forsker
13. marts 2003 - 13:04 #39
Den udskriver kun kolonnen "nyhed" hvis det er det du mener.
Avatar billede asp_rookie Nybegynder
13. marts 2003 - 13:20 #40
Ja... men den udskriver hele kolonnen... og ikke ud fra søge ord. der må være noget galt..
Avatar billede chrisrj Forsker
13. marts 2003 - 19:27 #41
Har du prøvet det jeg forslog tidligere?

Dvs:
Du har fjernet "DISTINCT". Prøv at sætte det ind i igen:

SqlJunk = "SELECT DISTINCT * FROM nyheder WHERE nyhed LIKE '%" & sog & "%'"
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