Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:10 Der er 32 kommentarer og
1 løsning

Request.form...

strSQL = strSQL & ") " & vbCrLf& "VALUES ("
for i = 0 to iFieldCount - 1
  strSQL = strSQL & "'" & request.form("Maal") & "', "
next
strSQL = strSQL & "'" & request.form(vaerdier(iFieldCount)) & "'"
strSQL = strSQL & ");"

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)
Avatar billede entracore Nybegynder
30. januar 2002 - 00:13 #1
Hvad er iFieldCount ???
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:14 #2
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?
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:15 #3
iFieldCount er den variabel som er max værdien (Hvis der er 15 ting i arryet, er den = 14 (15 ting) og den tilpasses automatisk efter den værdi...
Avatar billede entracore Nybegynder
30. januar 2002 - 00:15 #4
ahh ok... er dette ikke noget som det her du vil ha:

For n = 1 To Request.Form.Count
strSql = strSql & "'" & Request.Form.Item(n) & "'"
Next

???
Avatar billede entracore Nybegynder
30. januar 2002 - 00:16 #5
Du vil gennemløbe indholdet at en formular der er posted til serveren... ikke sandt ???
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:17 #6
ja :-)
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:19 #7
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&aelig;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...
Avatar billede entracore Nybegynder
30. januar 2002 - 00:19 #8
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
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:26 #9
Så får jeg følgende fejl :

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
Avatar billede entracore Nybegynder
30. januar 2002 - 00:26 #10
Der er en nemmere måde at gøre ovenstående på...

Pkt. 1. Valider dine data ude på klienten. Ingen grund til at behandle data på serveren når man ligeså godt kunne på det på klienten.

Pkt. 2. strSQL2 = "SELECT * FROM " & Request("kategorivalgt") & " "
Dvs. at Request("kategorivalgt") = TABELNAVN ???

Pkt. 3. Hvad nu hvis database9("Varenr") ikke eksisterere dvs. = NULL

Det er en gang uoverskueligt snask du har banket sammen der.

Så vidt jeg kan se vil du smide data i en tabel... det kan gøres meget nemmere.

Prøv at forklare din fremgangsmåde.
Avatar billede entracore Nybegynder
30. januar 2002 - 00:27 #11
dim vaerdier()
ReDim vaerdier(iFieldCount) 

Hvad gør dette ?
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:30 #12
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...
Avatar billede entracore Nybegynder
30. januar 2002 - 00:30 #13
Ahhh ok.

Dine forfelter har det samme navn som dine kolonne navne ikke sandt.
Også vil du først hente de navne i dit loop og dernæste loope værdierne igennem.

Prøv at se her.... poster lige noget kode om lidt....
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:32 #14
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...
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:32 #15
ok :-)
Avatar billede entracore Nybegynder
30. januar 2002 - 00:38 #16
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

SqlQ = "Insert Into " & request("kategorivalgt") & "(" & strKolonne & ") Values(" & strKolonneVaerdi & ")"
Avatar billede entracore Nybegynder
30. januar 2002 - 00:39 #17
Ups cParam(nChar(Request.Form.Item(n)) = cParam(Request.Form.Item(n))
Avatar billede entracore Nybegynder
30. januar 2002 - 00:40 #18
og erstat funktionen med denne... der er vist gået lidt for stærkt...

Function cParam(ByVal Param)
    cParam = Param
    If IsNumeric(Param) = False Then
          cParam = "'" & Param & "'"
    End If
End Function
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:44 #19
Er der nogen bestemt sted i kildekoden function skal placeres, dem har jeg ikke fået arbejdet med før endnu?
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:45 #20
Der er en syntaksfejl

/projekt/admin/vareopret.asp, linje 137

Function cParam(ByVal Param)
Avatar billede entracore Nybegynder
30. januar 2002 - 00:46 #21
Prøv at skrive Function cParam(Param) i stedet for.
Avatar billede entracore Nybegynder
30. januar 2002 - 00:47 #22
Din funktion må heller ikke indgå i en løkke
Avatar billede entracore Nybegynder
30. januar 2002 - 00:49 #23
>>Er der nogen bestemt sted i kildekoden function skal placeres, dem har jeg ikke fået arbejdet med før endnu? <<

Placer din funktion i toppen af dokumentet...
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:52 #24
Den fanger heller ikke værdierne, som er indtastet i formfelterne...
Avatar billede entracore Nybegynder
30. januar 2002 - 00:54 #25
Det gør den.

Prøv at udskrive hver enkelt værdi i løkken

Response.Write Request.Form.Item(n) & "<br>"
Avatar billede entracore Nybegynder
30. januar 2002 - 00:55 #26
Jeg smutter i seng nu.... bare kom med dine spørgsmål + fejlbeskrivelser også kigger jeg på det i morgen formiddag.
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:57 #27
hmmm jeg tror det er mig der er ved at være helt galdt på den...
Der skriver ingen værdier, selvom jeg har skrevet 1 i alle form felterne....
Avatar billede wanda13 Nybegynder
30. januar 2002 - 00:59 #28
<!--#include file="ssi/beskyt.asp"-->
<!--#include file="ssi/45tn73gf4347y.asp"-->
<!--#include file="ssi/trans.asp"-->
<!--#include file="ssi/made.pri"-->
<html>
<%
'--------------------------------------------------------------------'
' Heri kan oprettes en ny vare med tilhørende oplysninger            '
'--------------------------------------------------------------------'
%>

<body>

<%
Function cParam(ByVal Param)
    cParam = Param
    If IsNumeric(Param) = False Then
          cParam = "'" & Param & "'"
    End If
End Function

if request.querystring("mode") = "ok" then
  call ModeOK
  else


if request("Varenr") <> "" then
  strSQL = "Tester"
  response.write strSQL
'  con.execute(strSQL)
  Response.write "Du har nu oprettet varen " & request.form("varenr")
  else
%>
<div align="center"><center>
<table border="0" width="600" cellspacing="0" cellpadding="3" style="border-left: 1px solid rgb(0,0,0); border-right: 1px solid rgb(0,0,0); border-top: 1px solid rgb(0,0,0); border-bottom: 2px solid rgb(0,0,0)">
<tr>
<td width="100%" bgcolor="#2908FF"><p align="center"><font size="4" color="#FFFFFF"><b>BAK-ELteknik - Opret vare</b></font></td>
</tr>
<tr align="center">
<td width="100%">
<table border="0" width="100%" cellspacing="0" cellpadding="2" style="color:#2908FF">
<tr>
<td colspan="4" valign="middle" align="center" colspan="2"><font size="3"><br>
Her kan du oprette en vare<br><br>
</font></td>
</tr>
<tr align="center">
  <td colspan="4">
       
<form name="form1" action="<%=request.serverVariables("SCRIPT_NAME")%>" method="post">
<font size="6"></font>Type : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select onChange="document.form1.submit()" name="TYPE" size="1">
<option>V&aelig;lg Type</option>
<option value="1"<%if request("type") = "1" then response.write "selected" %>>Hårde hvidevarer</option>
<option value="2"<%if request("type") = "2" then response.write "selected" %>>Belysning</option>
<option value="3"<%if request("type") = "3" then response.write "selected" %>>El-apparater</option>
<option value="4"<%if request("type") = "4" then response.write "selected" %>>El artikler</option>
</select><br>

<%   
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&aelig;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", "&aring;")
          str = Replace(str, "oe", "&oslash;")
          str = Replace(str, "ae", "&aelig;")
          str = Replace(str, "Aa", "&Aring;")
          str = Replace(str, "Ae", "&AElig;")
          str = Replace(str, "Oe", "&Oslash;")

          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&aelig;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&aelig;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...
Avatar billede entracore Nybegynder
30. januar 2002 - 07:57 #29
Gider du ikke at smide hele skidtet i en zip fil (Alle nødvendige filer + database) og sende til mig på følgende adresse: jg@parnell.dk
Avatar billede wanda13 Nybegynder
30. januar 2002 - 21:05 #30
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...
Avatar billede entracore Nybegynder
30. januar 2002 - 21:15 #31
Yes - her er fejlen tror jeg nok:

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>"

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:

response.write "<tr><td colspan='3'><div align='right'><input type='submit' value='Opret vare'></td>"
Avatar billede wanda13 Nybegynder
30. januar 2002 - 23:54 #32
så virker knappen slet ikke????
Avatar billede entracore Nybegynder
31. januar 2002 - 08:07 #33
Følgdende linie: response.write"</form></tr><tr><td colspan='3'><center><br>Indtast vare oplysninger<br></td>"

Slettes følgdende: "</form>"
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-specialist til Lokal IT Servicecenter ved Personelkommandoen

Capgemini Danmark A/S

AI/Data Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Specialister til Netværksoperations til Forsvarets nye Digitale Backbone