13. maj 2006 - 02:37
Der er
39 kommentarer og 1 løsning
Indsamling af data fra TextBox og DropDownMenu til DB
Problemstilling: DB-tabellen 24Kalibreringskomponent skal opdateres og ID_Leverandør er fremmednøgle hvorfor jeg skal have denne vist i en DropDownMenu, som jeg kan vælge fra. De øvrige data indtastes blot. Min kode (der ikke fungerer): <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>ID_Apparat</title> </head> <%@LANGUAGE="VBSCRIPT"%> <!--#include file="dbconnect.asp" --> <% Set list = Server.CreateObject ("ADODB.Recordset") list.Open "SELECT [05Leverandør].ID_Leverandør FROM 05Leverandør ", Conn %> <body> <form name="form1" method="get" action="testconnect171.asp"> <form name="form2" method="post" action=""> ID_Kalibreringskomponent: Automatisk<br> Kalibreringskomponent: <input type="text" name= "Kalibreringskomponent"><br> KalibreringskomponentPris: <input type="text" name= "KalibreringskomponentPris"><br> Bemærkning: <input type="text" name= "Bemærkning"><br> ID_Leverandør: <select name="menu1" onChange="DropDownMenu(this)"> <% Do While Not rs.EOF %> <option value="<%= list("ID_Leverandør") %>.asp"><%= list("ID_Leverandør") %></option> <% rs.MoveNext Loop %> </select> </form> </body> </html>
Annonceindlæg fra Computerworld
<form name="form1" method="get" action="testconnect171.asp"> refererer til opsamlingsscriptet og dermed 24Kalibreringskomponent
Det ene sted kalder du dit recordset for "list", mens du andetsteds kalder det for rs. Det skal selvfølgeligt hedde det samme over alt. Desuden kan jeg ikke se hvor du forbinder til din database henne. Det sker formentlig i dbconnect.asp filen, korrekt?
Fejlen med recordset er rettet og nu kommer der en rullemenu, men jeg skal jo så have overført input til DB og det sker også fra alle TextBox´e, men jeg får fejl fra DropDownMenu´en.
Forbindelsen til DB oprettes ganske rigtigt via dbconnect.asp filen
Her er formularen: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>ID_Apparat</title> </head> <%@LANGUAGE="VBSCRIPT"%> <!--#include file="dbconnect.asp" --> <% Set list = Server.CreateObject ("ADODB.Recordset") list.Open "SELECT [05Leverandør].ID_Leverandør FROM 05Leverandør ", Conn %> <body> <form name="form1" method="get" action="testconnect171.asp"> <form name="form2" method="post" action=""> ID_Kalibreringskomponent: Automatisk<br> Kalibreringskomponent: <input type="text" name= "Kalibreringskomponent"><br> KalibreringskomponentPris: <input type="text" name= "KalibreringskomponentPris"><br> Bemærkning: <input type="text" name= "Bemærkning"><br> ID_Leverandør: <select name="menu1" onChange="DropDownMenu(this)"> <% Do While Not list.EOF %> <option value="<%= list("ID_Leverandør") %>.asp"><%= list("ID_Leverandør") %><br> <% list.MoveNext Loop %> <input type="submit" name="Submit" value="Opdater"> </select> </form> </body> </html>
Her er siden hvor data opsamles: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Ny side 1</title> </head> <%@LANGUAGE="VBSCRIPT"%> <!--#include file="dbconnect.asp" --> <% Set Apparater = Server.CreateObject("ADODB.Recordset") Apparater.Open "24Kalibreringskomponent", Conn, 2, 2 %> <% Apparater.AddNew 'Apparater("ID_Kalibreringskomponent") = Request.QueryString("ID_Kalibreringskomponent")' Apparater("Kalibreringskomponent") = Request.QueryString("Kalibreringskomponent") Apparater("KalibreringskomponentPris") = Request.QueryString("KalibreringskomponentPris") Apparater("ID_Leverandør) = Request.QueryString("ID_Leverandør") Apparater("Bemærkning") = Request.QueryString("Bemærkning") Apparater.UPDATE Response.Redirect("testconnect17.asp") %> <body> </body> </html>
Linien 'Apparater("ID_Kalibreringskomponent") = Request.QueryString("ID_Kalibreringskomponent")' skal faktisk ikke længere bruges, da ID_Kalibreringskomponent nummereres automatisk
Du skal rette din select: <select name="menu1" onChange="DropDownMenu(this)"> - til: <select name="ID_Leverandør" onChange="DropDownMenu(this)">
... bortset fra at du kan få nogle problemer hvis du insistere på at bruge danske bogstaver.
OK, ja de danske bogstaver har jeg tænkt mig at erstatte. Jeg implementerer lige dit forslag
Jeg får stadig fejlen: Microsoft VBScript compilation error '800a03ee' Expected ')' /SpecialeLogbog/testconnect171.asp, line 22 Apparater("ID_Leverandør) = Request.QueryString("ID_Leverandør") -------------------------------------------------^
OK, jeg har altså lige rettet æ , ø, å men får alligevel fejl
Du mangler et "-tegn. Ret: Apparater("ID_Leverandør) = Request.QueryString("ID_Leverandør") - til: Apparater("ID_Leverandør") = Request.QueryString("ID_Leverandør")
OK, nu kører det uden fejl, men der overføres ikke fra DropDownMenu til DB
Det er nok det ø som driller: Hvis du ændre din select til: <select name="ID_Leverandoer" onChange="DropDownMenu(this)"> - og afspejler dette ved at ændre: Apparater("ID_Leverandør") = Request.QueryString("ID_Leverandør") - til: Apparater("ID_Leverandør") = Request.QueryString("ID_Leverandoer") - så burde det hjælpe.
OK, det hele fungerer hvis linien:' Apparater("ID_Leverandoer") = Request.QueryString("ID_Leverandoer") ved opsamlingen
Sorry, ja altså hvis nævnte linie fjernes
Jeg kan se at du også har ændret ø'et i din: Apparater("ID_Leverandoer") Dette kræver at du også ændre navnet internt i datbasen. Har du gjort det?
Ja, jeg har ændret navne på/i de pågældende tabeller
Ja, jeg er jo noget på bar bund som det fremgår...
Så burde det faktisk fungere nu. Siden at det alligevel ikke gør det, så må det være fordi at dit javascript - onChange="DropDownMenu(this)" - går et eller andet uhensigtsmæssigt.
Du skal ikke tage dig af linien vedr. lokomotiver - det stammer fra et andet system jeg har...
Jeg han se at der er en fejl i dit javascript - når jeg vælger noget i din dropdown, får jeg ihvertfald den lille gule trekant ("Der opstod en fejl på siden") nede i venstre hjørne af browseren.
Desværre kan jeg ikke se dit javasvript, og en af årsagerne er nok denne her:
<script language='javascript' src='
http://127.0.0.1:1029/js.cgi?pca&r=9734'></script> Den er helt gal! IP-adressen 127.0.0.1 peger på brugerens *egen* maskine (altså min maskine i dette tilfælde). Men dit javascript ligger jo på din server - ikke her hos mig.
Umiddelbart er det dog slet ikke klart hvad du egentlig bruger kaldet til DropDownMenu(this) til? Prøv at ændre: <select name="ID_Leverandoer" onChange="DropDownMenu(this)"> - til: <select name="ID_Leverandoer">
OK, har du et andet forslag til løsningen ? (du får point´s, du har brugt meget tid på det her)
Har du prøvet forslaget 13/05-2006 11:06:46?
Jeg har prøvet dit forslag fra 13/05-2006 11:06:46, men det fungerer ikke og giver fejl i testconnect171.asp, line 22 For en ordens skyld har jeg checket, at jeg via TextBox kan indtaste leverandør og det fungerer. Det vil sige der er noget at bygge videre på (til beroligelse for mig selv)
Der er bare en simpel ASP-fejl i din kode på linje 22 .. det er såmen alt. Hvad står der i linje 22?
Jeg vil ønske du har ret: Apparater("ID_Leverandoer") = Request.QueryString("ID_Leverandoer")
Hvilken type er dit felt ID_Leverandoer derfineret som i din database?
ID_Leverandoer er derfineret som tal, er fremmednøgle i tabel 24Kalibreringskomponent og primær nøgle i 05Leverandoer
Hvis ID_Leverandoer er defineret som tal så er det ikke såecielt hensigsmæssigt at din HTML-kode ser sådan her ud: ID_Leverandoer: <select name="ID_Leverandoer"> <option value="1.asp">1<br> <option value="2.asp">2<br> <option value="3.asp">3<br> <option value="4.asp">4<br> <option value="5.asp">5<br> <option value="6.asp">6<br> <option value="7.asp">7<br> <input type="submit" name="Submit" value="Opdater"> </select> - for så er det nemlig værdierne "1.asp", "2.asp" osv, som den forsøger at indsætte. I stedet bør den se sådan her ud: ID_Leverandoer: <select name="ID_Leverandoer"> <option value="1">1<br> <option value="2">2<br> <option value="3">3<br> <option value="4">4<br> <option value="5">5<br> <option value="6">6<br> <option value="7">7<br> </select> <input type="submit" name="Submit" value="Opdater"> - eller endnu simplere: ID_Leverandoer: <select name="ID_Leverandoer"> <option>1<br> <option>2<br> <option>3<br> <option>4<br> <option>5<br> <option>6<br> <option>7<br> </select> <input type="submit" name="Submit" value="Opdater"> (BEMÆRK: at jeg har flyttet submit-knappen ud. Den høre ikke til indenfor i select'en.)
MANGE TAK du har reddet mig læg endelig et svar.
Min kode ser så sådan ud (jeg valgte din simplere løsning):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>ID_Apparat</title>
</head>
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="dbconnect.asp" -->
<%
Set list = Server.CreateObject ("ADODB.Recordset")
list.Open "SELECT [05Leverandoer].ID_Leverandoer FROM 05Leverandoer ", Conn
%>
<body>
<form name="form1" method="get" action="testconnect171.asp">
<form name="form2" method="post" action="testconnect171.asp">
ID_Kalibreringskomponent:
Automatisk<br>
Kalibreringskomponent: <input type="text" name= "Kalibreringskomponent"><br>
KalibreringskomponentPris: <input type="text" name= "KalibreringskomponentPris"><br>
Bemaerkning: <input type="text" name= "Bemaerkning"><br>
ID_Leverandoer: <select name="ID_Leverandoer">
<% Do While Not list.EOF %>
<option> <%= list("ID_Leverandoer") %></option><br>
<%
list.MoveNext
Loop
%>
</select>
<input type="submit" name="Submit" value="Opdater">
</p>
</form>
<p>Kig til den opdaterede liste:
<a href="
http://www.hybenvang.dk/SpecialeLogbog/leverandoerer.asp"> http://www.hybenvang.dk/SpecialeLogbog/leverandoerer.asp</a></p> <p> </p>
</body>
</html>
OK og endnu en gang TAK - jeg vil ikke udelukke at jeg bliver nød til, at oprette flere spørgsmål i denne her sammenhæng hvor det drejer sig om, at lave logbogssystem
Kurser inden for grundlæggende programmering