beskrivning
-- id (räknare)tal
-- fakturaNr (tal)
-- beskrivning (Text)
-- antal (tal)
-- pris (text)
När jag ska ändra en faktura så skriver jag ut alla saker som finns med i den fakturan. Hämtar först fakturan och sen loopar jag ut alla beskrivningar.
Hur gör jag nu för att enkelt kunna ändra ALLT som hör till fakturan på en och samma gång?
Men jag måste alltså på nåt sätt göra en For slinga när jag uppdaterar beskrivningarna? Före det räkna antal beskrivningar i den fakturan?!? Eller har jag fel?
Har du fler än 1 beskrivning till varje faktura ?:
SQL = "SELECT COUNT(id) AS AntalBeskrivningar FROM Beskrivning WHERE fakturanr = " & FakturaNr & "
Set rs = objConnection.Execute(SQL)
Antal = rs("AntalBeskrivningar")
rs.Close
Set rs = Nothing
For i = 0 to Antal
SQL = "UPDATE" osv
Som jag har nu så skriver jag ut alla värden i den inputtaggarna så här:
<%Set Bes=Conn.Execute("Select beskrivning From beskrivning Where Fakturanr=" & RS("fakturanr") & " Order By pris desc")
x=1
Do Until Bes.EOF%>
<input type="text" name="bes<%=x%>" size="45" value="<%=Bes("beskrivning")%>"> <br>
<%x=x+1
Bes.MoveNext
Loop%>
På detta sätt kan jag enkelt fixa forslingan i javascriptvalideringen!
Set Antal=Conn.Execute("Select Count(*) As Antal From beskrivning Where fakturaNr=" & RS("fakturaNr"))%>
<script language="javaScript">
function Check() {
<%For i = 1 To Antal("antal")%>
if (document.faktura.bes<%=i%>.value==""){
alert("Du glömde beskrivning nr <%=i%>!");
return false;
<%Next%>
}
}
</script>
Det går ju inte! Men vet ju då inte vilken som är vilken! Vilket ex svar som har vilket id. Med endast ett fält är det enkelt för då kan man ju göra en
For Each
Men i detta fall är det ju 3 fält och så ska man uppdatera förfallodatum och fakturadatum med!
Men i så fall uppdaterar du väl inte mer än 1 faktura åt gången ? isåfall ska det väl inte vara några problem.
Du kan väl inte låt oss säga uppdatera 4 fakturor på en gång? Det skulle ju innebära i så fall 12 st ställen på 4 fakturor i 3 olika tabeller att uppdatera?
*suck* För trött nu..... kanske kan hjälpa till imorgon
<% SQL = " SELECT faktura.*, beskrivning.* " _
& " FROM faktura " _
& " INNER JOIN beskrivning " _
& " ON faktura.fakturanr = beskrivning-fakturanr" _
& " WHERE fakturanr = " & Request.Querystring("fanr")
& " ORDER BY beskrivning.id ASC"
Set objRS = objConn.Execute(SQL)
If not rs.EOF then
fanr = objRS("fakturaNr")
fakdat = objRS("fakturadatum")
forfalldat = objRS("forfallodatum")
%>
<form method="post" action="update.asp?fanr=<%= fan %>">
<input name="form_fakdat" type="text" value="<%= faktdat %>"><br>
<input name="form_forfalldat" type="text" value="<%= forfalldat %>"><br>
<%
i = 0
do while not rs.eof
id = objRS("id")
beskriv = objRS("beskrivning")
antal = objRS("antal")
pris = objRS("pris")
%>
<input type="hidden" name="form_id" value="<%= id %>">
<input name="form_beskriv" type="text" value="<%= beskriv %>"><br>
<input name="form_antal" type="text" value="<%= antal %>"><br>
<input name="form_pris" type="text" value="<%= pris %>"><br>
<%
objRS.movenext
i= i + 1
loop
%>
<input type="submit">
</form>
Sådär någonting skulle första delen som plockar fram all information kunna se ut, lägg märke till att det enda som skiljer från dig är att jag hämtar information från två tabeller med en enkel JOIN.
Så över till nästa sak då på sidan update.asp som skulle kunna se ut ungefär som nedan: