Avatar billede plaf Nybegynder
01. juni 2002 - 22:57 Der er 14 kommentarer og
1 løsning

Formular og Request.Querystring...For få parametre. Der var vente

Forsøger mig udi ASP...

På baggrund af databasen Northwind, har jeg lavet en tabel. Herfra er der links til at rette og slette i dataene. Det går fint med at slette, jeg kan ikke kalde siden til at slette...

Linket fra tabellen, ser således ud:

<a href="ret_kunde.asp?KundeID=<%=rs("KundeID")%>">Ret</a>

Og siden ret_kunde.asp ser således ud:

<% @Language=VBScript %>

<%

SET Conn = Server.CreateObject("ADODB.Connection")
DSN = "Driver={Microsoft Access Driver (*.mdb)};"
DSN = DSN & "DBQ=" & Server.MapPath("Databaser/../Northwind.mdb")
Conn.Open DSN

SQL = "SELECT * FROM kunder WHERE KundeId = " & Request.Querystring("KundeID")
Set rs = Conn.Execute(SQL)

%>


<html>
<head>
    <title>Ret kunde</title>

</head>

<body>
<!--#INCLUDE FILE="brevhoved.asp"-->
<h2 align="center">Ret kundedata:</h2>
<br>

<form action="gem_ret_kunde.asp" method="POST" target="_self">
  <p align="center">KundeID p&aring; kunde, der skal rettes:
    <input type="text" size="10" name="KundeID" value="<%=rs("KundeID")%>">
  </p>
  <table border="0" width="300" align="center">
    <tr>
      <td height="29" align="left" width="273"><b>Rettes til:</b></td>
      <td height="29" align="left" width="130">&nbsp;</td>
    </tr>
    <tr>
      <td height="29" align="left" width="273">Firmanavn:</td>
      <td height="29" align="left" width="130">
        <input type="text" name="Firmanavn" value="<%=rs("Firmanavn")%>">
      </td>
    </tr>
    <tr>
      <td align="left" width="273">Adresse :</td>
      <td align="left" width="130">
        <input type="text" name="Adresse" value="<%=rs("Adresse")%>">
      </td>
    </tr>
    <tr>
      <td align="left" width="273">Postnummer:</td>
      <td align="left" width="130">
        <input type="text" name="Postnr" value="<%=rs("Postnr")%>">
      </td>
    </tr>
    <tr>
      <td align="left" width="273">By:</td>
      <td align="left" width="130">
        <input type="text" name="Bynavn" "<%=rs("Bynavn")%>">
      </td>
    </tr>
    <tr>
      <td align="left" width="273">Land:</td>
      <td align="left" width="130">
        <input type="text" name="Land" "<%=rs("Land")%>">
      </td>
    </tr>
    <tr>
      <td colspan="2" align="center">
        <input type="submit" value="Gennemf&oslash;r rettelsen" name="submit">
      </td>
    </tr>
  </table>
</form>
<div align="center">
  <p><a href="Kunder.asp">Tilbage til oversigten over kunder&nbsp</a> </p>
  <p>&nbsp;</p>
</div>
<%
Conn.Close
Set Conn = nothing
%>
</body>
</html>

Når jeg forsøger at kalde denne side, skrives der:

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

[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.


Findes der et klogt hoved derude, som kan finde fejlen og som har tålmodighed til at forklare mig, hvad jeg har gjort forkert...er som sagt ny udi det hersens..

/Plaf
Avatar billede pfp Nybegynder
01. juni 2002 - 23:07 #1
Er du sikker på at datatyperne stemmer overens? I hvilken linie får du fejlen?
Avatar billede -master-d- Nybegynder
01. juni 2002 - 23:07 #2
Der må stå en linie i fejlmeddelsen, hvilken er det ?
Avatar billede plaf Nybegynder
01. juni 2002 - 23:11 #3
Det er i linie 11 - altså :

Set rs = Conn.Execute(SQL)
Avatar billede -master-d- Nybegynder
01. juni 2002 - 23:18 #4
Ja det må næsten være typerne der ikke stemmer overens med hinanden.
Avatar billede -master-d- Nybegynder
01. juni 2002 - 23:19 #5
Ellers prøv med den her

SQL = "SELECT * FROM kunder WHERE KundeId = " & Request.Querystring("KundeID") & "
Avatar billede -master-d- Nybegynder
01. juni 2002 - 23:20 #6
en anden mulighed er at tvinge den til at være et ID (går ud fra det er et nummer)

SQL = "SELECT * FROM kunder WHERE KundeId = CInt(" & Request.Querystring("KundeID") & ")
Avatar billede plaf Nybegynder
01. juni 2002 - 23:24 #7
KundeID er (mærkeligt nok) ikke tal, men bogstaver... Jeg kikker lige, om der i databasen er andet end tekst (kunne f.eks være tlf. nr...)
Avatar billede plaf Nybegynder
01. juni 2002 - 23:26 #8
Niks - det alle felter er tekst (det er den her prøve-database, der følger med access)
Avatar billede plaf Nybegynder
01. juni 2002 - 23:28 #9
-master-d-

Hvis jeg skriver, som du foreslår, skrives der:

Der opstod en Microsoft VBScript-kompileringsfejl fejl '800a0409'

Strengkonstanten er uafsluttet

/forsog/ret_kunde.asp, linje 10

SQL = "SELECT * FROM kunder WHERE KundeID = CInt(" & Request.Querystring("KundeID") & ")
----------------------------------------------------------------------------------------^
Avatar billede -master-d- Nybegynder
01. juni 2002 - 23:42 #10
ups
SQL = "SELECT * FROM kunder WHERE KundeID = CInt(" & Request.Querystring("KundeID") & ")"

Så er den fejlmeddelse væk
Avatar billede plaf Nybegynder
01. juni 2002 - 23:44 #11
Der skrives stadig "Der er for få parametre. Der var ventet 1."

Øv, altså
Avatar billede fet321 Nybegynder
02. juni 2002 - 09:08 #12
Prøv lige at rette din sql til dette

SQL = "SELECT * FROM kunder WHERE KundeId = '" & Request.Querystring("KundeID") & "';"
Avatar billede plaf Nybegynder
02. juni 2002 - 21:10 #13
fet321:

Det virker!!!!

- Der er point, når jeg får svar på hvorfor det her virker, men min kode ikke gjorde....

/Plaf
Avatar billede fet321 Nybegynder
02. juni 2002 - 21:21 #14
Det er fordi din KundeID i databasen er et tekst-felt.
Når du indsætter tekst-felter i en sql sætning skal der ' rundt om
' <- det er en gnyf
Avatar billede plaf Nybegynder
02. juni 2002 - 22:21 #15
fet321:

Tak for det!! - jeg lærer jo ikke noget af, bare at få et svar, hvis jeg ikke også får en forklaring...

Her kommer dine point!
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