Avatar billede rickie Juniormester
29. maj 2008 - 22:30 Der er 6 kommentarer og
1 løsning

Insert med loop

Hej,

Har nogle inputbokse som henter i en database med en loop funktion som virker fint.

<%Do While Not Rs.EOF%>
<input type="text" name="kptName" size="10" value="<%=rs("kptName")%>">
<%Rs.MoveNext
Loop%>

<...name"kptName"...> får en værdi fra DB feks. Fornavn, Efternavn etc.

Nu til mit spm. Jeg vil nu gerne lave en insert med en loop (?) som så skriver til DB.

Feks:
Felt  = "kptName" som blive sat til "Fornavn" med...
...Værdi - "Peter"
Felt  = "kptName" som blive sat til "Efternavn" med...
...Værdi - "Peter"
Osv.

Har haft dette spm på Eksperten tidligere men uden held med svar. Smider 100 points på spil og håber på mere held :-)

Det er en Access DB jeg bruger. Kan poste min kode ved ønske.

Mvh Rickie
Avatar billede keysersoze Guru
29. maj 2008 - 22:38 #1
vil det ikke blive lidt nemmere hvis hvert formfelt fik hver deres name?
Avatar billede mitbrugernavn Praktikant
30. maj 2008 - 08:38 #2
du skal give hvert formfelt unik navn

<%
a = 0
Do While Not Rs.EOF

%>
<input type="text" name="kptName_<%=a%>" size="10" value="<%=rs("kptName")%>">
<%
a = a + 1
Rs.MoveNext
Loop
%><input type="hidden" name="antal"  value="<%=a%>">

der hvor du så indsætter laver du så et loop
antal = request("antal")
for aa = 0 to int(antal)
response.write request("kptName_"&aa) & "<br>"
next

'jeg udskriver det bare her du kan selv sætte det i databasen
Avatar billede rickie Juniormester
30. maj 2008 - 10:00 #3
Tak for det! Lige det jeg skal bruge - tusind tak! :-) Udskriften af kptName virker perfekt, men jeg har lidt problemer med Inserten. Her er min kode:

<%ElseIf Request.QueryString("Department") = Department AND Request.QueryString("DateChoice") = DateChoice Then%>

<table border="0" cellspacing="5" cellpadding="2" widht="940" height="65">
    <tr>
<td width="235" height="65" class="Chk"><div class="DB1ChkText1">1</div><div class="DB1ChkText2">Vælg afdeling</div><div class="DB1Chk"></div><div class="BoxNumber1"><!-- #Include File="DBDepartment.asp" --></div></td>
<td width="235" height="65" class="Chk"><div class="DB2ChkText1">2</div><div class="DB2ChkText2">Vælg afdeling</div><div class="DB2Chk"></div><div class="BoxNumber2"><!-- #Include File="DBDate.asp" --></div></td>
<td width="235" height="65" class="Act"><div class="DB3ChkText1">3</div><div class="DB3Act"></div></td>
<td width="235" height="65" class="Act"><div class="DB4ChkText1">4</div><div class="DB4Act"></div></td>
    </tr>
</table>


    <Form method="post" action="index.asp?Department=<%=(Department)%>&KPI=Add">

        <%SQL = "SELECT * FROM tblKPIType WHERE depDepartment = '"&Request.QueryString("Department")&"'"
        Set RecSet = Connect.Execute(SQL)%>

        <table border="0" cellspacing="0" cellpadding="0" width="483" height="600" class="DivLeftMain BorderOrange">
        <tr>
            <td width="200" height="30" valign="top" class="FontColorRed"><p><b><%=(Department)%></b></p></td>
            <td width="283" height="30" valign="top"><p></p></td>
        </tr>
        <tr>
            <td width="200" height="30" valign="top"><p>Valgt dato:</p></td>
            <td width="283" height="30" valign="top"><p><input type="text" name="Date" size="12" value="<%=(DateChoice)%>"></p></td>
        </tr>

       
        <%
        a = 0
        Do While Not RecSet.EOF
        %>

        <tr>
            <td width="200" height="30" valign="top"><p><%=RecSet("kptNameShow")%></p></td>
            <td width="283" height="30" valign="top"><p><input type="text" name="kptName_<%=a%>" size="12" value=""></p></td>
        </tr>

        <%
        a = a + 1
        RecSet.MoveNext
        Loop
        %>
       
        <tr>
            <td width="483" valign="top" colspan="2"><p><input type="submit" value="Gem">&nbsp;<input type="reset" value="Afbryd"><input type="hidden" name="antal" value="<%=a%>"></p></td>
        </tr>
        </table

    </form>


<%End if%>


<%If Request.QueryString("Department") = Department AND Request.QueryString("KPI") = "Add" Then

    antal = request("antal")
    for aa = 0 to int(antal)
    SQL = "INSERT INTO tblKPI (kpiDate, depDepartment, kptName) VALUES('" & Request.Form("Date") & "', '"&(Department)&"', '" & Request.Form("kptName_"&aa) & "')"
    response.write request("kptName_"&aa) & "<br>"
    next
    Response.Write "KPI er registreret for <b>" & (Department) & "</b>"

End if%>
Avatar billede rickie Juniormester
30. maj 2008 - 10:12 #4
Hov havde lige glemt att connecte til DB men det er rettet nu
Set RecSet = Connect.Execute(SQL)

...virker dog stadig ikke.
Avatar billede mitbrugernavn Praktikant
30. maj 2008 - 10:37 #5
hvad er dette - <Form method="post" action="index.asp?Department=<%=(Department)%>&KPI=Add">

skal der ikke stå <Form method="post" action="index.asp?Department=Department&KPI=Add">


og så i denne linie

If Request.QueryString("Department") = "Department" AND Request.QueryString("KPI") = "Add" Then

Response.Write "KPI er registreret for <b>" & Request.QueryString("Department")  & "</b>"
Avatar billede rickie Juniormester
30. maj 2008 - 11:14 #6
Har fået det til at virke - perfekt! Mange tak for hjælpen!
Her har du dine velfortjente points :-)


    antal = request("antal")
    for aa = 0 to int(antal)
    SQL = "INSERT INTO tblKPI (kpiDate, depDepartment, kptName, kptValue) VALUES('" & Request.Form("Date") & "', '"&(Department)&"', '" & Request.Form("kptName_"&aa) & "', '" & Request.Form("kptValue_"&aa) & "')"
    Set RecSet = Connect.Execute(SQL)
    next
    response.write request("kptName_"&aa) & "<br>"
Avatar billede mitbrugernavn Praktikant
30. maj 2008 - 11:36 #7
super - og takker - god weekend
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