Her er noget kode som bruges, men det er her meningen at den skal tage nogle navne fra et array og så finde de værdier der står i de form felter, som passer til array navnene...
HJÆLLLPPP (Jeg ved godt jeg har stillet spørgsmålet en gang før, men kom desværre til at acceptere spørgsmålet, selvom svaret var forkert... ØV)
UPS : request.form("Maal") skulle have været : request.form(vaerdier(i)) Da den skal ændres igennem hele for sætningen, men her bliver alle værdier ved en response.write af strSQL sætningen tomme?
Men fra en dataabse... Her kommer lige lidt større udpluk af koden.. :
Sub ModeOK ' Kontrol og gem af data if request.form("Fabrikat") <> "Vælg fabrikat" then if request.form("Varenr") <> " " then if request.form("Pris") <> " " then strSQL2 = "SELECT * FROM " & Request("kategorivalgt") & " " Set database9 = con.Execute(strSQL2) if database9("Varenr") = request.form("Varenr") then response.write "Varenr. eksistere allerede - Beklager" else iFieldCount = database9.Fields.Count -1 dim vaerdier() ReDim vaerdier(iFieldCount) For i = 0 to iFieldCount vaerdier(i) = (database9)(i).name Next strSQL = "" strSQL = strSQL & "INSERT INTO " & request("kategorivalgt") & " (" ' her gennemløber vi de felter der er udtrukket for i = 0 to iFieldCount - 1 strSQL = strSQL & database9(i).name & ", " next strSQL = strSQL & database9(i).name strSQL = strSQL & ") " & vbCrLf& "VALUES (" for i = 0 to iFieldCount - 1 strSQL = strSQL & "'" & Request.Form.Item(i) & "'" next strSQL = strSQL & "'" & request.form(vaerdier(iFieldCount)) & "'" strSQL = strSQL & ");" response.write strSQL response.write "<br>" & vaerdier(2) ' con.execute(strSQL) Response.write "Du har nu gemt varen : " & request.form("Varenr") & " i databasen" end if else Response.write "Pris skal udfyldes" end if else Response.write "Fabrikat skal vælges, og varenr og pris skal udfyldes" end if else Response.write "Fabrikat skal vælges, og varenr og pris skal udfyldes" end if ' Type = "" end sub
Det skal lige siges at der er lavet et tilfældigt antal forms inden denne kodestump, som er lavet udfra database felter...
men det gør du på den måde. du skal nok lige skrive erstatte fgl.: strSql = strSql & "'" & Request.Form.Item(n) & "'" med If strSql = "" Then strSql & "'" & Request.Form.Item(n) & "'" Else strSql = strSql & ", '" & Request.Form.Item(n) & "'" End If
linje 154 Et matrixindeks ligger uden for det gyldige område.
Linie 154 = for i = 0 to Request.Form.Count If strSql = "" Then strSql = strSql & "'" & Request.Form.Item(i) & "'" Else strSql = strSql & ", '" & Request.Form.Item(i) & "'" ****Denne linie End If next
Ja, det er data der skal tilføjes til en tabel, først vælger man hvilken hovedgruppe varen er i. derefetr hvilken kategori varen er, og herefter vælger man hvilket fabrikat varen er - disse 3 er i OPTION felter, derefetr SKAL der indtastes varenr, så den vil altid eksister og så kommer der efterfølgende flere felter som ikke altid er med, det er alt efter hvilken type vare det drejer sig om...
Dette var et forsøg på at lave form felterne om til at blive taget fra et array istedet for at bruge : strSQL = strSQL & "'" & request.form(database9(i).name) & "', " men det lykkedes mig ikke...
A: Jeg har lavet en funktion der sætter plinger(') omkring en værdi hvis denne ikke er numerisk
Function cParam(ByVal Param) cParam = Param If Numeric(Param) = False Then cParam = "'" & Param & "'" End If End Function
For n = 1 To Request.Form.Count If strKolonne = "" Then strKolonne = Request.Form.Key(n) Else strKolonne = strKolonne & "," & Request.Form.Key(n) End If
If strKolonneVaerdi = "" Then strKolonneVaerdi = cParam(nChar(Request.Form.Item(n)) Else strKolonneVaerdi = strKolonneVaerdi & "," & cParam(nChar(Request.Form.Item(n)) End If Next
<% if request("type") <> "" then Response.write "<form name='form1' action='" & request.serverVariables("SCRIPT_NAME") & "' method='post'>" Response.write "Kategori : " response.write "<select onChange='document.form1.submit()' name='kategorivalgt' size='1'>" Response.write "<option>Vælg kategori</option>" SQL = "SELECT * FROM emne INNER JOIN kategori ON kategori.emnenr = emne.emnenr WHERE emne.typenr=" & request("type") & " " set database = con.execute(SQL) while not database.eof if not(isnull(database("kategori"))) then response.write "<option value='" & database("kategori") & "'" if request("kategorivalgt") = database("kategori") then response.write "selected" response.write ">" & konverter(database("kategori")) & "</option>" else response.write "<option value='" & database("emne") & "'" if request("kategorivalgt") = database("emne") then response.write "selected" response.write ">" & konverter(database("emne")) & "</option>" end if database.movenext wend Response.write "</select><br>"
if (request("kategorivalgt") <> "" AND request("kategorivalgt") <> "Vælg varenr") then
strSQL2 = "SELECT * FROM " & Request("kategorivalgt") & " " Set database2 = con.Execute(strSQL2) 'her tæller vi hvor mange felter der er udtrukket i recordsettet iFieldCount = database2.Fields.Count - 1
if not database2.eof then response.write"</form></tr><tr><td colspan='3'><center><br>Indtast vare oplysninger<br></td>" ' her gennemløber vi de felter der er udtrukket for i = 0 to iFieldCount str = Replace(database2(i).name, "aa", "å") str = Replace(str, "oe", "ø") str = Replace(str, "ae", "æ") str = Replace(str, "Aa", "Å") str = Replace(str, "Ae", "Æ") str = Replace(str, "Oe", "Ø")
if (database2(i).name = ("Fabrikat") OR database2(i).name = ("Specifikationer") OR database2(i).name = ("Tilbud") ) then if database2(i).name = ("Fabrikat") then Response.write "<tr><td><div align='right'>" & str & " : </td><td><select name='fabrikat' size='1'>" Response.write "<option>Vælg Fabrikat</option>" strSQL = "SELECT * FROM fabrikat" set database3 = con.execute(strSQL) while not database3.eof response.write "<option value='" & database3("Fabrikatnavn") & "'>" & database3("Fabrikatnavn") & "</option>" database3.movenext wend Response.write "</select></tr>" end if if database2(i).name = ("Specifikationer") then Response.write "<tr><td><div align='right'>" & str & " : </td><td><input type='checkbox' checked name='" & database2(i).name & "' value=''></tr>" end if else Response.write "<tr><td><div align='right'>" & str & " : </td><td><INPUT NAME='" & database2(i).name & "' TYPE='text' VALUE=''></tr>" end if next end if response.write "<td></td></tr>" response.write "<tr><td colspan='3'><div align='right'><FORM ACTION='vareopret.asp?mode=ok&kategorivalgt=" & request("kategorivalgt") & "' METHOD='POST'><input type='submit' value='Opret vare'></td>" if request.querystring("mode") = "ok" then call ModeOK else 'Her sker ikke noget end if end if end if %> <% end if %> </tr> <% Sub ModeOK ' Kontrol og gem af data if request.form("Fabrikat") <> "Vælg fabrikat" then if request.form("Varenr") <> " " then if request.form("Pris") <> " " then strSQL2 = "SELECT * FROM " & Request("kategorivalgt") & " " Set database9 = con.Execute(strSQL2) if database9("Varenr") = request.form("Varenr") then response.write "Varenr. eksistere allerede - Beklager" else iFieldCount = database9.Fields.Count -1
For n = 1 To Request.Form.Count If strKolonne = "" Then strKolonne = Request.Form.Key(n) Else strKolonne = strKolonne & "," & Request.Form.Key(n) End If
If strKolonneVaerdi = "" Then strKolonneVaerdi = cParam(nChar(Request.Form.Item(n))) Else strKolonneVaerdi = strKolonneVaerdi & "," & cParam(Request.Form.Item(n)) End If Response.Write Request.Form.Item(n) & "<br>" Next
SqlQ = "Insert Into " & request("kategorivalgt") & "(" & strKolonne & ") Values(" & strKolonneVaerdi & ")" response.write strSQL ' con.execute(strSQL) Response.write "Du har nu gemt varen : " & request.form("Varenr") & " i databasen" end if else Response.write "Pris skal udfyldes" end if else Response.write "Fabrikat skal vælges, og varenr og pris skal udfyldes" end if else Response.write "Fabrikat skal vælges, og varenr og pris skal udfyldes" end if ' Type = "" end sub end if
%> </body> </html>
Dette er hele koden, du får 200 point, hvis du vil hjælpe mig med at finde fejlen...
Databasen kan jeg desværre ikke sende, da det er en del af et større projekt, som vi desværre ikke må vidregive... Men det bør evt. også være heri fejlen er, har en ide om at det er fordi alle form felter laves i top scriptet og afsluttes der, før det kommer ned i det nederste del af scriptet og derfor ikke vil læses på alm. vis længere...
Hvis det er med henblik på de includede filer, er det ikke andet end en fil som sikrer at folk har logget ind og en anden til at sørge for database forbindelsen, og en til at konverterer æ,ø,å over til ae, oe, aa og så en sidste, som bare er en test om hvad siden indeholder og hvem der har lavet hvad...
Du har en form start lige inden du indsætter din submit knap. Derfor kommer der ingen værdier med når du submitter. Ovenstående linie skal se således her ud:
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.