Avatar billede w13 Novice
15. marts 2004 - 15:44 Der er 23 kommentarer og
2 løsninger

Fri tekst

Hej eksperter

Jeg håber virkelig, at nogen her kan hjælpe mig...
På min side kan brugeren udfylde nogle søgefelter (et for hvert felt i databasen) og trykke 'søg', hvorefter de bliver sendt til en side, som viser resultaterne fra søgningen... Men nu har jeg lavet endnu et søgefelt, kaldet 'fritekst', som skal tjekke om dens værdi findes i nogen som helst af felterne i databasen... hvad skal jeg tilføje i koden (nedenfor) for at få det til at virke?

sqlWhere = ""
if Request.Form("alder") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " alder = '" & Request.Form("alder") & "'"
end if
if Request.Form("kon") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kon= '" & Request.Form("kon") & "'"
end if
if Request.Form("amt") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " amt= '" & Request.Form("amt") & "'"
end if
if Request.Form("kommune") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kommune= '" & Request.Form("kommune") & "'"
end if
if Request.Form("job") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " job= '" & Request.Form("job") & "'"
end if

strSQL = "SELECT id, brugernavn, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning "
if sqlWhere <> "" then strSQL = strSQL & " WHERE " & sqlWhere
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:01 #1
if Request.Form("fritekst") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " fritekst LIKE '%" & Request.Form("fritekst") & "%'"
end if
Avatar billede w13 Novice
15. marts 2004 - 16:05 #2
Hmmm... Jeg får dette at vide:
___________________________________________________________

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/sog/fritidsjobs/sog_arbejdere.asp, line 75
Avatar billede w13 Novice
15. marts 2004 - 16:08 #3
Det er vist disse linjer:
_____________________________________

' Skaber DSNLess forbindelse til DBen
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/ansogning.mdb")
___________________________

(De kommer lige efter dét af koden, jeg skrev i mit første indlæg!)
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:17 #4
du har formentlig en sætninger der ligner noget a la

set rs = conn.execute(strSQL)

prøv lige før den at skrive

response.write strSQL
response.end
Avatar billede w13 Novice
15. marts 2004 - 16:19 #5
SELECT id, brugernavn, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning WHERE alder = '13' AND fritekst LIKE '%amt%'
Avatar billede w13 Novice
15. marts 2004 - 16:21 #6
'13' og 'amt' var noget, jeg skrev i søgefelte´rne!
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:22 #7
hvilke kolonnetyper har de forskellige felter i databasen?
Avatar billede w13 Novice
15. marts 2004 - 16:27 #8
Id          - Autonummerering
brugernavn  - Notat
password    - Notat
email      - Notat
navn        - Notat
alder      - Notat
kon        - Notat
amt        - Notat
kommune    - Notat
job        - Notat
ansogning  - Notat
dato        - Dato og klokkeslet
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:32 #9
prøv ryk de to linier lige ned under den

set rs = conn.execute(strSQL)
Avatar billede w13 Novice
15. marts 2004 - 16:33 #10
Hvad? Hvilke to linier?
Avatar billede w13 Novice
15. marts 2004 - 16:34 #11
'response.write strSQL
response.end' ?
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:34 #12
response.write strSQL
response.end
Avatar billede w13 Novice
15. marts 2004 - 16:37 #13
Det driller lidt... Lige nu ser min kode sådan her ud:
______________________________________________________
<%
' Opbygger en dynamisk SQL streng
sqlWhere = ""
if Request.Form("alder") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " alder = '" & Request.Form("alder") & "'"
end if
if Request.Form("kon") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kon= '" & Request.Form("kon") & "'"
end if
if Request.Form("amt") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " amt= '" & Request.Form("amt") & "'"
end if
if Request.Form("kommune") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kommune= '" & Request.Form("kommune") & "'"
end if
if Request.Form("job") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " job= '" & Request.Form("job") & "'"
end if
if Request.Form("fritekst") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " fritekst LIKE '%" & Request.Form("fritekst") & "%'"
end if

strSQL = "SELECT id, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning "
if sqlWhere <> "" then strSQL = strSQL & " WHERE " & sqlWhere

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)

response.write strSQL
response.end

' Skaber DSNLess forbindelse til DBen
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/ansogning.mdb")

If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<font face='Verdana' size='2pt.'><b>Alle job-ansøgere<br></b><hr color='#000000' size='1'><br></font>"
    Response.Write "<table width='100%' border=1 cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#000000'>"
    Response.Write "<tr><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Fuld ansøgning</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Navn</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Alder</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Amt</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Kommune</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Jobønske</font></th></tr>"
    Do While Not rs.EOF
%> 
<tr><td><font color="#000000" face="Verdana" size=2><p align=center><a href="#" onclick="popup('profil.asp?id=<%=rs("id")%>','Ansøgning','220','480');">Læs hel profil</a></p></font></td>
<%
        Response.Write "<td>&nbsp;<a href='mailto:" & rs("email") & "?subject=Angående job-ansøgning på Søg.dk'><font color='#000000' face='Verdana' size=2>" & rs("navn") & "&nbsp;</font></a></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("alder") & "&nbsp;</font></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("amt") & "&nbsp;</font></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("kommune") & "&nbsp;</font></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("job") & "&nbsp;</font></td>"
        rs.MoveNext
    Loop
    Response.Write "</table><br><hr color='#000000' size='1'><font color='#000000' face='Verdana' size=1><a href='#' onClick='history.go(-1)'>&lt;-Tilbage</a></font>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p><font color='#000000' face='Verdana' size=2>Der er ikke fundet noget på denne søgning!</font><br><br><font color='#000000' face='Verdana' size=1><a href='#' onClick='history.go(-1)'>&lt;-Tilbage</a></font></p>"
End If

' Rydder op efter os
'myConn.Close
'Set myConn = Nothing
%>
________________________________________________

Men den siger bare:
___________________
Microsoft VBScript runtime error '800a01a8'

Object required: 'myConn'

/sog/fritidsjobs/sog_arbejdere.asp, line 71
Avatar billede w13 Novice
15. marts 2004 - 16:41 #14
Nu rodede jeg lidt i den og fik den til at sige:
_______________________________________________

SELECT id, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning WHERE alder = '13'
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:48 #15
i den kode er der så vidt jeg kan se ingen linie 71?
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:49 #16
men hov!!

du kan jo heller ikke skrive

Set rs = myConn.Execute(strSQL)

når du først definerer MyConn længere nede i scriptet

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

derfor bliver du nødt til at bytte om på det
Avatar billede w13 Novice
15. marts 2004 - 16:51 #17
Og så siger den:

SELECT id, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning WHERE alder = '13'
Avatar billede keysersoze Ekspert
15. marts 2004 - 16:57 #18
ja - så skal du selvfølgelig fjerne mine 2 linier igen...
Avatar billede w13 Novice
15. marts 2004 - 16:59 #19
Ja, nu har jeg fjernet dem... Men det virker stadig ike, hvis man for eksempel søger på 'amt' i feltet ' Fritekst'!

Så siger den dette:
___________________
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/sog/fritidsjobs/sog_arbejdere.asp, line 75
_______________________

(Og jo, der ER over 70 linjer, men jeg har bare ikke skrevet al HTML uden om ASP-koden herinde på Eksperten! Skal jeg gøre det, så du kan se det hele?)
Avatar billede keysersoze Ekspert
15. marts 2004 - 17:04 #20
ja tak
Avatar billede w13 Novice
15. marts 2004 - 17:08 #21
<% Response.Buffer = True %>
<html><head>
<title></title>
<script type="text/javascript">
<!-- Start

function popup(url,name,win_height,win_width) {
    pos_horizon = ((screen.width/2)-(win_width/2));
    pos_vertical = ((screen.height/2)-(win_height/2));
    window.open(url,name,"width="+win_width+",height="+win_height+",top="+pos_vertical+",left="+pos_horizon+",scrollbars=1");
    }

// Slut -->
</script>
<style type="text/css">
a:link {
    text-decoration:none;
    color:#000000;
}

a:active  {
    text-decoration:none;
    color:#000000;
}

a:visited {
    text-decoration:none;
    color:#000000;
}

a:hover {
    text-decoration:underline;
    color:#000000;
}
</style>
</head>
<body link="#000000" vlink="#000000" alink="#000000">

<%
' Opbygger en dynamisk SQL streng
sqlWhere = ""
if Request.Form("alder") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " alder = '" & Request.Form("alder") & "'"
end if
if Request.Form("kon") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kon= '" & Request.Form("kon") & "'"
end if
if Request.Form("amt") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " amt= '" & Request.Form("amt") & "'"
end if
if Request.Form("kommune") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kommune= '" & Request.Form("kommune") & "'"
end if
if Request.Form("job") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " job= '" & Request.Form("job") & "'"
end if
if Request.Form("fritekst") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " fritekst LIKE '%" & Request.Form("fritekst") & "%'"
end if

strSQL = "SELECT id, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning "
if sqlWhere <> "" then strSQL = strSQL & " WHERE " & sqlWhere

' Skaber DSNLess forbindelse til DBen
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/ansogning.mdb")

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<font face='Verdana' size='2pt.'><b>Alle job-ansøgere<br></b><hr color='#000000' size='1'><br></font>"
    Response.Write "<table width='100%' border=1 cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#000000'>"
    Response.Write "<tr><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Fuld ansøgning</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Navn</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Alder</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Amt</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Kommune</font></th><th bgcolor='#5E9464' background='../images/table_header1.bmp'><font color='#ffffff' face='Verdana' size=2>Jobønske</font></th></tr>"
    Do While Not rs.EOF
%> 
<tr><td><font color="#000000" face="Verdana" size=2><p align=center><a href="#" onclick="popup('profil.asp?id=<%=rs("id")%>','Ansøgning','220','480');">Læs hel profil</a></p></font></td>
<%
        Response.Write "<td>&nbsp;<a href='mailto:" & rs("email") & "?subject=Angående job-ansøgning på Søg.dk'><font color='#000000' face='Verdana' size=2>" & rs("navn") & "&nbsp;</font></a></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("alder") & "&nbsp;</font></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("amt") & "&nbsp;</font></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("kommune") & "&nbsp;</font></td>"
        Response.Write "<td><font color='#000000' face='Verdana' size=2>&nbsp;" & rs("job") & "&nbsp;</font></td>"
        rs.MoveNext
    Loop
    Response.Write "</table><br><hr color='#000000' size='1'><font color='#000000' face='Verdana' size=1><a href='#' onClick='history.go(-1)'>&lt;-Tilbage</a></font>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p><font color='#000000' face='Verdana' size=2>Der er ikke fundet noget på denne søgning!</font><br><br><font color='#000000' face='Verdana' size=1><a href='#' onClick='history.go(-1)'>&lt;-Tilbage</a></font></p>"
End If

' Rydder op efter os
'myConn.Close
'Set myConn = Nothing
%>

</body></html>
Avatar billede keysersoze Ekspert
15. marts 2004 - 17:59 #22
nåååh - nu kan jeg se fejlen... første gang jeg læste dit spm. forstod jeg på det at du havde et felt i databasen der hed fritekst og det har du jo ikke :)

Så prøv denne i stedet;

sqlWhere = ""
if Request.Form("alder") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " alder = '" & Request.Form("alder") & "'"
end if
if Request.Form("kon") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kon= '" & Request.Form("kon") & "'"
end if
if Request.Form("amt") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " amt= '" & Request.Form("amt") & "'"
end if
if Request.Form("kommune") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " kommune= '" & Request.Form("kommune") & "'"
end if
if Request.Form("job") <> "" then
  if sqlWhere <> "" then sqlWhere = sqlWhere & " AND "
  sqlWhere = sqlWhere & " job= '" & Request.Form("job") & "'"
end if
if Request.Form("fritekst") <> "" then
  sqlWhere2 = " alder = '" & Request.Form("fritekst") & "'"
  sqlWhere2 = sqlWhere2 & " OR kon = '" & Request.Form("fritekst") & "'"
  sqlWhere2 = sqlWhere2 & " OR amt = '" & Request.Form("fritekst") & "'"
  sqlWhere2 = sqlWhere2 & " OR kommune = '" & Request.Form("fritekst") & "'"
  sqlWhere2 = sqlWhere2 & " OR job = '" & Request.Form("fritekst") & "'"
end if


strSQL = "SELECT id, brugernavn, [navn], email, alder, amt, kommune, job, ansogning FROM ansogning "
if sqlWhere <> "" then strSQL = strSQL & " WHERE (" & sqlWhere & ")
if sqlWhere2 <> "" and sqlWhere <> "" then
    strSQL = strSQL & " AND (" & sqlWhere2 & ")
else
    strSQL = strSQL & " WHERE (" & sqlWhere2 & ")
end if
Avatar billede w13 Novice
15. marts 2004 - 18:04 #23
Jeps... Den er der næsten nu... Det eneste der er galt er, at den søger i databasen efter PRÆCIS hvad jeg skriver i feltet 'Fritekst'... Det vil sige skriver jeg 'Amt' kommer den ikke med nogen resultater... Kun hvis jeg skriver 'københavns amt'! Ka' du hjælpe med det?
Avatar billede keysersoze Ekspert
15. marts 2004 - 18:13 #24
så skal du gøre som først foreslået - bruge LIKE og så %
Avatar billede w13 Novice
15. marts 2004 - 18:17 #25
Hurra! Det virker! tak...
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