Avatar billede ponyboye Nybegynder
27. august 2004 - 22:29 Der er 51 kommentarer og
1 løsning

Lave select om så der hentes fra access database

Hvordan laver jeg denne om så den hentes fra database og så der er mulighed for at vælge flere kategorier?

Jeg har denne fra en ret form men den kan jeg ikke få til at virke, den siger at der er en fejl: Type mismatch: 'rs'

<%OpenDatabase
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Response.write "<select name=""hojtid"" id=""hojtid"">"
do while not katrs.EOF
  response.write "<option value=""" & katrs("hojtid") & """"
  if Cstr(rs("hojtid"))=Cstr(katrs("hojtid")) then response.write "selected"
  response.write ">" & katrs("hojtidnavn") & "</option>"
  katrs.Movenext
loop
response.write "</select>"
CloseDatabase
%>

Her er den alm. form:


<td height="22" colspan="2"><div align="center">
              <select name="hojtid" id="hojtid">
                <option value="0">V&aelig;lge H&oslash;jtid</option>
                <option value="1">Jul</option>
                <option value="2">P&aring;ske</option>
                <option value="3">Fastelavn</option>
                <option value="4">Nyt&aring;r</option>
                <option value="5">Helligtrekonger</option>
                <option value="6">Valentinsdag</option>
                <option value="7">Mors &amp; Fars dag</option>
                <option value="8">Sankt Hans</option>
                <option value="9">Halloween</option>
              </select>
Avatar billede ponyboye Nybegynder
27. august 2004 - 22:44 #1
og hvordan får jeg den til at se forskel fra kategori id´erne da de lægger i samme felt?
Avatar billede cpufan Juniormester
27. august 2004 - 22:51 #2
du mangler blot at ændre rs til katrs et sted i din kode:
if Cstr(rs("hojtid"))=Cstr(katrs("hojtid")) then response.write "selected"

til
if Cstr(katrs("hojtid"))=Cstr(katrs("hojtid")) then response.write "selected"
Avatar billede cpufan Juniormester
27. august 2004 - 22:53 #3
næ, det var noget vrøvl jeg sagde,
men det er denne rs der giver fejl, hvor definerer du rs henne?
Avatar billede ponyboye Nybegynder
27. august 2004 - 23:02 #4
hvad mener du med definerer rs.?

jeg bruger denne i en ret form og disse dataer ser sådamme ud:


<%Dim Id

OpenDatabase
if Request("knap") = "" then
strSQL="SELECT * FROM opskrifter WHERE id= "&Request.Querystring("id")
    Set rs = Conn.Execute(strSQL)

else
   
    strSQL="UPDATE opskrifter SET navn='"&Request.QueryString("navn")&"', af='"&Request.QueryString("af")&"', in1='"&Request.QueryString("in1")&"', fremgang='"&Request.QueryString("fremgang")&"', tilbe='"&Request.QueryString("tilbe")&"', tid="&Request.QueryString("tid")&", personer="&Request.QueryString("personer")&" , hojtid="&Request.QueryString("hojtid")&" , vare="&Request.QueryString("vare")&" , emme="&Request.QueryString("emme")&" , kategori="&Request.QueryString("kategori")&" , godkendt="&Request.QueryString("godkendt")&" WHERE id= "&Request.Querystring("id")
    Conn.Execute(strSQL)
    response.buffer=true
    response.clear
    response.redirect "oversigt.asp"
    response.end

end if
    %>
   
    <%if not rs.EOF then%>
    <form method="GET" action="<%=request.servervariables("SCRIPT_NAME")%>
<%OpenDatabase
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Response.write "<select name=""hojtid"" id=""hojtid"">"
do while not katrs.EOF
  response.write "<option value=""" & katrs("hojtid") & """"
  if Cstr(rs("hojtid"))=Cstr(katrs("hojtid")) then response.write "selected"
  response.write ">" & katrs("hojtidnavn") & "</option>"
  katrs.Movenext
loop
response.write "</select>"
CloseDatabase
%>
<%end if%>
</form>
Avatar billede eagleeye Praktikant
27. august 2004 - 23:14 #5
Prøv kun at kalde OpenDatabse en gang

Så prøv at fjerne den her:
<%OpenDatabase
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)

så det bliver:

<%
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Avatar billede ponyboye Nybegynder
27. august 2004 - 23:20 #6
jeg er da nød til at åbne min database?

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/admin/opret.asp, line 57


set katrs = Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
27. august 2004 - 23:25 #7
Ja men connection bliver også åbnet oppe i toppen af din kode:

<%Dim Id

OpenDatabase


Det kan måsek være katrs den brokker sig over. Prøv at definere katrs som recordset:
<%
set katrs = Server.CreateObject("ADODB.Recordset")
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Avatar billede ponyboye Nybegynder
27. august 2004 - 23:33 #8
nej, for det er en af mine andre sider hvor jeg kan rette i disse dataer.

Det her er opret siden og der har jeg kun indsat dette:

<%OpenDatabase
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Response.write "<select name=""hojtid"" id=""hojtid"">"
do while not katrs.EOF
  response.write "<option value=""" & katrs("hojtid") & """"
  if Cstr(rs("hojtid"))=Cstr(katrs("hojtid")) then response.write "selected"
  response.write ">" & katrs("hojtidnavn") & "</option>"
  katrs.Movenext
loop
response.write "</select>"
CloseDatabase
%>

Her er båre åben , kald og lukke
Avatar billede eagleeye Praktikant
27. august 2004 - 23:46 #9
I toppen åbner du til databasen og fylder et recordset med data:

OpenDatabase
if Request("knap") = "" then
strSQL="SELECT * FROM opskrifter WHERE id= "&Request.Querystring("id")
    Set rs = Conn.Execute(strSQL)

else


hvis man lukker eller åbner den samem connection nedlægges rs og det kan ikke bruges som et recordset. Da det er samme Conn skulle det ikke være nødvendigt at åbne og lukke flere gange, men åbne i toppen og lukke igen bunden.
Avatar billede ponyboye Nybegynder
27. august 2004 - 23:53 #10
Okay vi starter forfra. Glem spørgsål: 27/08-2004 23:02:42 (dette er ikke noget der er på den side jeg ønsker at lave)

Det jeg har på er kun dette:

<%OpenDatabase
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Response.write "<select name=""hojtid"" id=""hojtid"">"
do while not katrs.EOF
  response.write "<option value=""" & katrs("hojtid") & """"
  if Cstr(rs("hojtid"))=Cstr(katrs("hojtid")) then response.write "selected"
  response.write ">" & katrs("hojtidnavn") & "</option>"
  katrs.Movenext
loop
response.write "</select>"
CloseDatabase
%>

Det jeg har er nogle "select" felter som jeg vil lave så den henter fra databasen med vælge mulighed.

Det skal være sådanne at der kan vælges flere felter fra "selecten" og så hvordan det hentes ud igen da dette vil blive indsat i samme felt i databasen
Avatar billede eagleeye Praktikant
28. august 2004 - 00:02 #11
hvis du kan vælge flere fra samme select får du et som en komma liste med values

request.form("hojtid")  = "1,3,5,78"

Så kan du lave det om sådan den tjekker på denn måde:

if inStr(1, ","&Cstr(rs("hojtid"))&",", ","&Cstr(katrs("hojtid"))&",")>0 then response.write "selected"
Avatar billede ponyboye Nybegynder
28. august 2004 - 08:38 #12
Microsoft VBScript runtime error '800a000d' Type mismatch: 'rs'
Avatar billede eagleeye Praktikant
28. august 2004 - 10:15 #13
Forklaring på det problem er givet 27/08-2004 23:46:48

Det fordi du genåbner din connection med OpenDatebase så laer du et ny connection og de recordset som er åbenet med den gamle connection forsvinder.

Så du nød til at ligge alle din kolonner over i variable så dette:
if Request("knap") = "" then
strSQL="SELECT * FROM opskrifter WHERE id= "&Request.Querystring("id")
    Set rs = Conn.Execute(strSQL)

else


Bliver til:

if Request("knap") = "" then
strSQL="SELECT * FROM opskrifter WHERE id= "&Request.Querystring("id")
    Set rs = Conn.Execute(strSQL)
    hojtid=rs("hojtid")
    'dem alle sammen
    '...=rs("...")
else


og så kan du i rettes rs("hojtid") til hojtid:
if inStr(1, ","&Cstr(hojtid)&",", ","&Cstr(katrs("hojtid"))&",")>0 then response.write "selected"
Avatar billede ponyboye Nybegynder
29. august 2004 - 00:19 #14
poster lige hele min kode for vi misforstår hinanden og der er jo ikke nogen grund til at spille tid. Du skal bare glemme alt hvad der er skrevet til nu.

Det er bare en simpel dropdown list jeg vil have lavet så skal hentes fra databasen.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="css.css" rel="stylesheet" type="text/css">
</head>

<body><form action="indsat.asp" method="post">
                                  <center>
                                   
    <div align="center">
      <table width="550" cellpadding="2" cellspacing="3" bgcolor="#CCCCCC" class="formadmin">
        <tr>
          <td width="250"><div align="center">Opskrift navn:<br>
              <input name="navn" type="text" id="navn">
            </div></td>
          <td width="250"><div align="center">Skrivet af:<br>
              <input name="af" type="text" id="af" value="M Damslund Jensen" >
            </div></td>
        </tr>
        <tr>
          <td width="250"><div align="center">Ingedienser:<br>
              <textarea name="in1" cols="40" rows="10" id="in1"></textarea>
            </div></td>
          <td width="250"><div align="center">Fremgansm&aring;de:<br>
              <textarea name="fremgang" cols="40" rows="10" id="fremgang"></textarea>
            </div></td>
        </tr>
        <tr>
          <td><div align="center"> </div></td>
          <td><div align="center">Tilbeh&oslash;r:<br>
              <textarea name="tilbe" cols="40" rows="10" id="tilbe"></textarea>
            </div></td>
        </tr>
        <tr>
          <td width="250"><div align="center">Tilberedings tid:<br>
              <input name="tid" type="text" id="tid" size="10" maxlength="10">
            </div></td>
          <td width="250"><div align="center">Antal personer:<br>
              <input name="personer" type="text" id="personer" size="10" maxlength="10">
            </div></td>
        </tr>
        <tr>
          <td width="250"><div align="center"></div></td>
          <td width="250"><div align="center"></div></td>
        </tr>
        <tr>
          <td colspan="2"><div align="center"></div>
            <div align="center">Tilf&oslash;j til kategorier</div></td>
        </tr>
        <tr>
          <td height="22" colspan="2"><div align="center">
              <select name="hojtid" id="hojtid">
                <option value="0">V&aelig;lge H&oslash;jtid</option>
                <option value="1">Jul</option>
                <option value="2">P&aring;ske</option>
                <option value="3">Fastelavn</option>
                <option value="4">Nyt&aring;r</option>
                <option value="5">Helligtrekonger</option>
                <option value="6">Valentinsdag</option>
                <option value="7">Mors &amp; Fars dag</option>
                <option value="8">Sankt Hans</option>
                <option value="9">Halloween</option>
              </select>

              &nbsp;&nbsp;
              <select name="emme" id="emme">
                <option value="0">V&aelig;lge Emme</option>
                <option value="1">Afrikansk</option>
                <option value="2">Amerikansk</option>
                <option value="3">Asiatisk</option>
                <option value="4">Australsk</option>
                <option value="5">Belgisk</option>
                <option value="6">Bulgarsk</option>
                <option value="7">Engelsk</option>
                <option value="8">Fransk</option>
                <option value="9">Gr&aelig;sk</option>
                <option value="10">Hollandsk</option>
                <option value="11">Irsk</option>
                <option value="12">Italiensk</option>
                <option value="13">Jugoslavisk</option>
                <option value="14">Polsk</option>
                <option value="15">Portugisisk</option>
                <option value="16">Russisk</option>
                <option value="17">Schweizisk</option>
                <option value="18">Spansk</option>
                <option value="19">Tjekkisk</option>
                <option value="20">Tysk</option>
                <option value="21">Ungarsk</option>
                <option value="22">Arabisk</option>
                <option value="23">Iransk</option>
                <option value="24">Tyrkisk</option>
                <option value="25">Finsk</option>
                <option value="26">F&aelig;r&oslash;sk</option>
                <option value="27">Gr&oslash;nlandsk</option>
                <option value="28">Islandsk</option>
                <option value="29">Norsk</option>
                <option value="30">Svensk</option>
              </select>
              &nbsp;&nbsp;
              <select name="kategori" id="kategori">
                <option value="0">V&aelig;lge M&aring;ltid</option>
                <option value="1">Forret</option>
                <option value="2">Hovedret</option>
                <option value="3">Dessert</option>
                <option value="4">Morgenmad</option>
                <option value="5">Frokost</option>
                <option value="6">Natmad</option>
                <option value="7">Tilbeh&oslash;r</option>
                <option value="8">Andet</option>
              </select>
              &nbsp;&nbsp;
              <select name="vare" id="vare">
                <option value="0">V&aelig;lge kategori</option>
                <option value="1">Suppe Garniturer</option>
                <option value="2">Klare Supper</option>
                <option value="3">Kolde Supper</option>
                <option value="4">Brune Supper</option>
                <option value="5">Pur&eacute; Supper</option>
                <option value="6">Velout&eacute; Supper</option>
                <option value="7">Cr&eacute;me Supper</option>
                <option value="8">Danske Supper</option>
                <option value="9">Udenlanske Supper</option>
                <option value="10">Grund Saucer</option>
                <option value="11">Brune Saucer</option>
                <option value="12">Velout&eacute; Saucer</option>
                <option value="13">Fiske Saucer</option>
                <option value="14">Specielle Saucer</option>
                <option value="15">Kolde Saucer</option>
                <option value="16">Kolde Sm&oslash;r Saucer</option>
                <option value="17">&AElig;gge Retter</option>
                <option value="18">Fars Retter</option>
                <option value="19">Fiske Garniturer</option>
                <option value="20">Oksek&oslash;d&acute;s Retter</option>
                <option value="21">kalvek&oslash;d&acute;s Retter</option>
                <option value="22">Lamme &amp; F&aring;re Retter</option>
                <option value="23">Svinek&oslash;d&acute;s Retter</option>
                <option value="24">Fjerkr&aelig; Retter</option>
                <option value="25">Vildt Retter</option>
                <option value="26">Gr&oslash;nt Retter</option>
                <option value="27">Ris &amp; Mel retter</option>
                <option value="28">Varme Desserter</option>
                <option value="29">Kolde Desserter</option>
                <option value="30">Br&oslash;d &amp; Bagev&aelig;rk</option>
                <option value="31">Kager</option>
                <option value="32">Syltning</option>
              </select>
            </div>
            <div align="center"></div></td>
        </tr>
        <tr>
          <td height="22" colspan="2"><div align="center">Godkend opskrift? &nbsp;&nbsp;
              Ja
              <input name="godkendt" type="radio" value="true" checked>

              &nbsp;&nbsp; Nej
              <input type="radio" name="godkendt" value="false">

            </div></td>
        </tr>
        <tr>
          <td height="21" colspan="2">&nbsp;</td>
        </tr>
        <tr>
          <td height="16" colspan="2"><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><b>
              <input type="Submit" value="Tilf&oslash;j" name="Submit">
              <input type="Reset" value="Slet" name="Reset">
              </b></font></div>
            <div align="center"></div></td>
        </tr>
        <tr>
          <td width="250"><div align="center"></div></td>
          <td width="250"><div align="center"></div></td>
        </tr>
      </table>
      </div>
  </center>
</form>

</body>
</html>


så vil jeg gerne have at den går ind i databasen og henter navnet på kategorien og id´en. Og så når jeg gemmer opskriften så indsætter den id´en for hvor opskriften høre til.

Der udover vil jeg have lavet så det var muligt at vælge flere kategorier fra fx højtider så jeg kan indsætte opskriften under både jul og nytår.
Avatar billede eagleeye Praktikant
29. august 2004 - 00:28 #15
Så kan du jo bruge koden du har vist 27/08-2004 23:53:34 her rettet lidt til.
Hvis en drop-down skal kunne vælge flere så skal man sætte multiple ind:


<%OpenDatabase
SQL = "select hojtid, hojtidnavn from kategorier order by hojtid"
set katrs = Conn.Execute(SQL)
Response.write "<select name=""hojtid"" id=""hojtid"" multiple>"
do while not katrs.EOF
  response.write "<option value=""" & katrs("hojtid") & """>"
  response.write katrs("hojtidnavn") & "</option>"
  katrs.Movenext
loop
response.write "</select>"
CloseDatabase
%>
Avatar billede ponyboye Nybegynder
29. august 2004 - 01:26 #16
jeg får en fejl når jeg prøver at indsætte data, men vises fint nu.

Data type mismatch in criteria expression.
indsat.asp, line 32

<!--#include virtual="connection.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body><%
OpenDatabase
text = replace(request("in1"), "_", "<br>")
strSQL = "insert into opskrifter (navn, af, in1, fremgang, tilbe, tid, personer, hojtid, emme, kategori, vare, godkendt)"
strSQL = strSQL & " values ("
strSQL = strSQL & "'" & Request.Form("navn") & "', "
strSQL = strSQL & "'" & Request.Form("af") & "', "
strSQL = strSQL & "'" & text & "', "
strSQL = strSQL & "'" & Request.Form("fremgang") & "', "
strSQL = strSQL & "'" & Request.Form("tilbe") & "', "
strSQL = strSQL & "'" & Request.Form("tid") & "', "
strSQL = strSQL & "" & Request.Form("personer") & ", "
strSQL = strSQL & "'" & Request.Form("hojtid") & "', "
strSQL = strSQL & "'" & Request.Form("emme") & "', "
strSQL = strSQL & "'" & Request.Form("kategori") & "', "
strSQL = strSQL & "'" & Request.Form("vare") & "', "
if Request.Form("godkendt") = "true" then
  godkendt = "true"
else
  godkendt="false"
end if
strSQL = strSQL & "" & godkendt & ""
strSQL = strSQL & ")"
Conn.Execute(strSQL)
CloseDatabase
%>

<h1>Databasen er opdateret!</h1>
</body>
</html>
Avatar billede eagleeye Praktikant
29. august 2004 - 01:34 #17
Og der er kun ping ' omkring de kolonner som er defineret som tekst?
du kan evt prøve at udksrive SQL sætnigen:

Response.Write strSQL
Response.End
Conn.Execute(strSQL)
Avatar billede ponyboye Nybegynder
29. august 2004 - 01:46 #18
Nu får jeg en ny fejl: Provider error '80004005'
Unspecified error
Avatar billede ponyboye Nybegynder
29. august 2004 - 02:03 #19
når det virker da nu. Der er bare et lille problem når jeg vil udtrække data. Den kan ikke finde nogen data da den ikke kan finde ud af at hente id´en

<%
OpenDatabase

strSQL = "Select * From opskrifter Where hojtid = '"&Request.Querystring("id")&"'"
Set rs = Conn.Execute(strSQL)

  if rs.EOF then

  ' her skriver du det...
  response.write "Der er ikke nogen opskrifter i denne kategori."

  else ' her er så HVIS der er records.. nu skal de vises

  i = 1
    while not rs.EOF
 
  strNavn = rs("navn")
  strLink = "<a href='visopskrift.asp?id=" & rs("id") & "' title='Se opskriften'>" & strNavn & "</a>"

  With Response
      .Write"<td width='150'>"
      .Write"<li>" & strLink & "</li>"
      .Write"</td>" & vbcrlf
    End With
    if (i mod 3) = 0 then
      Response.Write "</tr><tr>" & vbcrlf
    end if
    i = i + 1   
    rs.MoveNext
    wend
  end if ' her afsluttes dit check.

CloseDatabase

%>
Avatar billede eagleeye Praktikant
29. august 2004 - 02:16 #20
Så skal det laves på en lidt anden måde for nu kan der stå 1,3,6

prøv sådan her:

strSQL = "Select * From opskrifter Where instr(','+hojtid+',',',"&Request.Querystring("id")&",')>0"
Avatar billede ponyboye Nybegynder
29. august 2004 - 08:01 #21
Hvad så med søgningen her:

if Request.Form("checkbox3") <> "" then
    if Request.Form("hojtidIDer") <> "" then
        if sql = "" then
            sql = "where hojtid in ('"& Request.Form("hojtidIDer") &"') "
        else
            sql = "and hojtid in ('"& Request.Form("hojtidIDer") &"') "
        end if
    end if
end if
Avatar billede ponyboye Nybegynder
29. august 2004 - 08:10 #22
og

<%
    OpenDatabase
    strSQL = "Select * From kategorier Order By hojtidnavn"
    Set rs = Conn.Execute(strSQL)
   
    while not rs.EOF
   
    strNavn = rs("hojtidnavn")
    strLink = "<a href='adminhojtid.asp?id=" & rs("hojtid") & "'>" & strNavn & "</a>"
   
    With Response
      .Write"<li>" & strLink & "</li>"
      End With
    rs.MoveNext
    wend
    %>
Avatar billede ponyboye Nybegynder
29. august 2004 - 08:11 #23
du må meget gerne forkalre hvad der sker
Avatar billede eagleeye Praktikant
29. august 2004 - 10:39 #24
Du kan måke bruge omvendt in:

sql = "where " & Request.Form("hojtidIDer") & " in (hojtid) "


Når alle ID ligger i samme kolonne vil du havde det som en komma seperet streng.
hojtid = "2,4,7,11"

Så kan man ikke længere tjekke på om den er = "1" så må man søge efter den man ønsker at tjekke for. Hvis man søger efter "1" uden noget omkring vil den så tro "1" er i strengen pga. 11. Så derfor sættes komma omkring alle tal ",2,4,7,11," så søger man efter <komma>ID<komma> eksempel ",1,". Så vil den kun finde hvor der står 1.
Avatar billede ponyboye Nybegynder
29. august 2004 - 12:28 #25
jeg indsat dette men den gider ikke ud som ,1,30,11 men kun som enkel id

if Request.Form("checkbox3") <> "" then
    if Request.Form("hojtidIDer") <> "" then
        if sql = "" then
            sql = "where instr(','+'" & Request.Form("hojtidIDer") & "'+',',', in (hojtid) "
            else
            sql = "and ','+'"& Request.Form("hojtidIDer") &"'+',',', in (hojtid) "
        end if
    end if
end if
Avatar billede eagleeye Praktikant
29. august 2004 - 16:23 #26
HVad kommer der fra Request.Form("hojtidIDer") ?
Avatar billede ponyboye Nybegynder
29. august 2004 - 23:01 #27
Det er data fra en søgnings form:

<% set rs = conn.Execute("select * from kategorier Order By hojtidnavn")
        do while not rs.eof
            response.write "<input type=""checkbox"" name=""hojtidIDer"" value="""& rs("hojtid") &""">"& rs("hojtidnavn")
            response.write "<br>"
            rs.MoveNext
        loop
       
        %>
Avatar billede eagleeye Praktikant
29. august 2004 - 23:13 #28
Ok så Request.Form("hojtidIDer") kan også være en liste?  1,4,6
Avatar billede ponyboye Nybegynder
29. august 2004 - 23:22 #29
øhhh.. det ser sådanne ud. www.danskehojtider.dk/sog.asp
Avatar billede eagleeye Praktikant
29. august 2004 - 23:29 #30
Så Request.Form("hojtidIDer") kan være en liste. Så er man nød til at splitte dem op så dette :
if Request.Form("checkbox3") <> "" then
    if Request.Form("hojtidIDer") <> "" then
        if sql = "" then
            sql = "where instr(','+'" & Request.Form("hojtidIDer") & "'+',',', in (hojtid) "
            else
            sql = "and ','+'"& Request.Form("hojtidIDer") &"'+',',', in (hojtid) "
        end if
    end if
end if


bliver:


if Request.Form("checkbox3") <> "" then
    if Request.Form("hojtidIDer") <> "" then
        if sql = "" then
          sql = " where ("
        else
          sql = sql & " and ("
        end if
        arr=split(Request.Form("hojtidIDer"),",")
        for i=0 to ubound(arr)
          sql = sql & arr(i) & " in (hojtid)"
          if i<ubound(arr) then sql = sql & " OR "
        next
        sql = sql & ")"
    end if
end if
Avatar billede ponyboye Nybegynder
29. august 2004 - 23:43 #31
får fejl: Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/sogresultat.asp, line 142
Avatar billede ponyboye Nybegynder
29. august 2004 - 23:43 #32
set rs = conn.Execute("select opskrifter.* from opskrifter "& sql &" order by navn")
Avatar billede eagleeye Praktikant
29. august 2004 - 23:45 #33
Prøv at rette denne linje_

          sql = sql & arr(i) & " in (hojtid)"

Til:

          sql = sql & "'" & arr(i) & "' in (hojtid)"
Avatar billede ponyboye Nybegynder
30. august 2004 - 00:33 #34
jeg får denne fejl når jeg søger i måltid:

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

/sogresultat.asp, line 142

if Request.Form("checkbox6") <> "" then
    if Request.Form("maltidIDer") <> "" then
        if sql = "" then
          sql = " where ("
        else
          sql = sql & " and ("
        end if
        arr=split(Request.Form("maltidIDer"),",")
        for i=0 to ubound(arr)
        sql = sql & "'" & arr(i) & "' in (kategoriid)"
          if i<ubound(arr) then sql = sql & " OR "
        next
        sql = sql & ")"
    end if
end if
Avatar billede eagleeye Praktikant
30. august 2004 - 17:21 #35
Prvøv at uskrive SQL sætningen i stedet for at "execute" den, måske der er et komma for meget eller noget. Skriv evt resultet her.
Avatar billede ponyboye Nybegynder
30. august 2004 - 19:32 #36
jeg trode  at det var execute man brugte til det.
Avatar billede ponyboye Nybegynder
30. august 2004 - 23:02 #37
Jeg kan ikke finde nogen form for fejl:

<%
OpenDatabase
sql = ""
if Request.Form("textfield") <> "" then
    if sql = "" then
        sql = "where navn like '%"& Request.Form("textfield") &"%' "
    else
        sql = "and navn like '%"& Request.Form("textfield") &"%' "
    end if
end if
sql = ""
if Request.Form("textfield1") <> "" then
    if sql = "" then
        sql = "where in1 like '%"& Request.Form("textfield1") &"%' "
    else
        sql = "and in1 like '%"& Request.Form("textfield1") &"%' "
    end if
end if
if Request.Form("textfield2") <> "" then
    if sql = "" then
        sql = "where tid <= '"& Request.Form("textfield2") &"' "
    else
        sql = "and tid <= '"& Request.Form("textfield2") &"' "
    end if
end if
if Request.Form("textfield3") <> "" then
    if Request.Form("checkbox") <> "" then
        if sql = "" then
            sql = "where personer <= "& Request.Form("textfield3") &" "
        else
            sql = "and personer <= "& Request.Form("textfield3") &" "
        end if
    end if
    if Request.Form("checkbox2") <> "" then
        if sql = "" then
            sql = "where personer >= "& Request.Form("textfield3") &" "
        else
            sql = "and personer >= "& Request.Form("textfield3") &" "
        end if
    end if
end if
if Request.Form("checkbox3") <> "" then
    if Request.Form("hojtidIDer") <> "" then
        if sql = "" then
          sql = " where ("
        else
          sql = sql & " and ("
        end if
        arr=split(Request.Form("hojtidIDer"),",")
        for i=0 to ubound(arr)
          sql = sql & "'" & arr(i) & "' in (hojtid)"
          if i<ubound(arr) then sql = sql & " OR "
        next
        sql = sql & ")"
    end if
end if

if Request.Form("checkbox4") <> "" then
    if Request.Form("emeIDer") <> "" then
        if sql = "" then
          sql = " where ("
        else
          sql = sql & " and ("
        end if
        arr=split(Request.Form("emmeIDer"),",")
        for i=0 to ubound(arr)
          sql = sql & "'" & arr(i) & "' in (emme)"
          if i<ubound(arr) then sql = sql & " OR "
        next
        sql = sql & ")"
    end if
end if

if Request.Form("checkbox5") <> "" then
    if Request.Form("katIDer") <> "" then
        if sql = "" then
          sql = " where ("
        else
          sql = sql & " and ("
        end if
        arr=split(Request.Form("katIDer"),",")
        for i=0 to ubound(arr)
        sql = sql & "'" & arr(i) & "' in (vare)"
          if i<ubound(arr) then sql = sql & " OR "
        next
        sql = sql & ")"
    end if
end if

if Request.Form("checkbox6") <> "" then
    if Request.Form("maltidIDer") <> "" then
        if sql = "" then
          sql = " where ("
        else
          sql = sql & " and ("
        end if
        arr=split(Request.Form("maltidIDer"),",")
        for i=0 to ubound(arr)
          sql = sql & "'" & arr(i) & "' in (kategoriid)"
          if i<ubound(arr) then sql = sql & " OR "
        next
        sql = sql & ")"
    end if
end if
  set rs = conn.Execute("select opskrifter.* from opskrifter "& sql &" order by navn")
response.write "<table width='500' border='0' cellspacing='10' align='center'>"
f = 0
do while not rs.eof
  if f mod 3 = 0 then
    response.write "</tr><tr><td width='225'>"
  else
    response.write "<td width='225'>"
  end if

  strNavn = rs("navn")
  strLink = "<a href='visopskrift.asp?id=" & rs("id") & "'>" & strNavn & "</a>"
  response.write "<li>" & strLink & "</li><br>"
  response.write "&nbsp;&nbsp;&nbsp;&nbsp;Tilberedningstid: "& rs("tid") & "<br>"
  response.write "&nbsp;&nbsp;&nbsp;&nbsp;Antal personer: "& rs("personer") & "<br>"

  response.write "</td>"
  f = f + 1
  rs.MoveNext
loop
response.write "</tr>"
response.write "</table>"
CloseDatabase
%>
Avatar billede ponyboye Nybegynder
30. august 2004 - 23:04 #38
jeg tror det kunne være fordi der mengler ' nogle steder da database format er notat, men kan ikke lige se hvor de skulle være.
Avatar billede eagleeye Praktikant
30. august 2004 - 23:06 #39
Prøv at udskrive SQL sætningen i stedet for at udføre den med conn.Execuete sådan her:

response.write "select opskrifter.* from opskrifter "& sql &" order by navn"
response.end
set rs = conn.Execute("select opskrifter.* from opskrifter "& sql &" order by navn")


Så et tit lettere at se om der er noget som mangler. Du kan evt. prøve at poste det ind her. Og fejlen med mindre det er den samme som før.
Avatar billede ponyboye Nybegynder
30. august 2004 - 23:17 #40
Hvis jeg erstatter:

set rs = conn.Execute("select opskrifter.* from opskrifter "& sql &" order by navn")
Med:

response.write "select opskrifter.* from opskrifter "& sql &" order by navn"
response.end
set rs = conn.Execute("select opskrifter.* from opskrifter "& sql &" order by navn")


udskriver den dette:

select opskrifter.* from opskrifter where ('8' in (kategoriid) OR ' 7' in (kategoriid)) order by navn
Avatar billede ponyboye Nybegynder
30. august 2004 - 23:24 #41
var det hvad du skulle bruge?
Avatar billede eagleeye Praktikant
30. august 2004 - 23:41 #42
Ja det var det. Det kan man åbenbrat ikke på den måde så må det blive med inStr.

Prøv at rette disse linjer:

        for i=0 to ubound(arr)
          sql = sql & "'" & arr(i) & "' in (kategoriid)"
          if i<ubound(arr) then sql = sql & " OR "
        next


Til:

        for i=0 to ubound(arr)
          sql = sql & "inStr(','+kategoriid+',','," & trim(arr(i)) & ",')>0"
          if i<ubound(arr) then sql = sql & " OR "
        next
Avatar billede ponyboye Nybegynder
30. august 2004 - 23:55 #43
men det er lidt sjov at der ikke kommer fejl i de 3 andre felter
Avatar billede ponyboye Nybegynder
30. august 2004 - 23:56 #44
det er kun når jeg søger i det felt
Avatar billede eagleeye Praktikant
30. august 2004 - 23:58 #45
ok er kategoriid så et notalt/tekst felt?
Avatar billede ponyboye Nybegynder
31. august 2004 - 00:02 #46
ja det er det
Avatar billede eagleeye Praktikant
31. august 2004 - 00:07 #47
Ja det lyder underligt, nå jeg er nød til at smutte for i aften
Avatar billede ponyboye Nybegynder
31. august 2004 - 00:09 #48
okay takker
Avatar billede ponyboye Nybegynder
31. august 2004 - 07:16 #49
Jeg prøver lige at spørge fennec som har lavet søgningen om han/hun kan se nogle fejl
Avatar billede ponyboye Nybegynder
31. august 2004 - 23:50 #50
du har ikke fundet en løsning på problemet?
Avatar billede eagleeye Praktikant
01. september 2004 - 19:09 #51
Ikke andet end som forslået i 30/08-2004 23:41:55
Avatar billede ponyboye Nybegynder
11. september 2004 - 15:59 #52
point til dig for den store hjælp
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