Just nu i M3-nätverket
Gå till innehåll

UPDATE många..


Miljarder

Rekommendera Poster

Tjingeling pling kling,

 

Jag har en db med en massa poster varav en kolumn heter "antal" och innehåller antal besökare.

 

Nu skulle jag vilja lista alla poster samt lägga in alla "antal"-värden i ett textfield, som man sedan ska kunna ändra och sedan endast trycka på en knapp och då ska den uppdatera samtliga listade poster med det nya "antal"-värdet. Hur gör i update-satsen och hur namnger jag textfielden så att jag vet vilket id jag ska uppdatera?

 

 

fil 1

 

do while not rs.eof

 

<input type="text" value="<%=rs("antal")%>" name="???">

 

rs.movenext

loop

 

 

fil 2

 

UPDATE TblTest SET Antal=" & request.form("???") & " WHERE ID=" & request.form("???")

 

 

 

Tack för hjälpen och ha det bra!

 

//Tomas

 

 

Länk till kommentar
Dela på andra webbplatser

Om du nu ska uppdatera samtliga poster med samma värde så behöver du ju ingen WHERE-sats i din UPDATE. Missuppfattade jag vad du ville göra?

 

Länk till kommentar
Dela på andra webbplatser

Ja det gjorde du.. =) Alla har inte samma värde, annars hade det varit busenkelt.. =)

 

 

www.a.se [6] info

www.b.se [7] info

www.c.se [49] info

 

[uppdatera]

 

 

Siffrorna inom [] betyder att de är "antal"-värden i ett textfield, [uppdatera] ska föreställa knappen som jag ska trycka på.. =)

 

//Tomas

 

Länk till kommentar
Dela på andra webbplatser

Ok, då är jag med =)

 

På sid1 sätt namnen till id-fältens värden:

 

<input type=[GRÅ]"text"[/GRÅ] value=[GRÅ]"<%=rs("[/GRÅ]antal[GRÅ]")%>"[/GRÅ] name=[GRÅ]"<%=rs("[/GRÅ]id[GRÅ]")%>"[/GRÅ]>

 

På sid2 får du köra updates i en loop för varje post:

 

arrReq=[color="#0000ff"]Split[/color]([b]Request[/b].form,[GRÅ]"&"[/GRÅ])
[color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] pair [color="#0000ff"]In[/color] arrReq
arrPair=[color="#0000ff"]Split[/color](pair,[GRÅ]"="[/GRÅ])
id=arrPair(0):value=arrPair(1)
strQuery=[GRÅ]"UPDATE TblTest SET Antal="[/GRÅ] & value & [GRÅ]" WHERE ID="[/GRÅ] & id
         [color="#006400"]' Kör queryn[/color]
[color="#0000ff"]Next[/color]

 

Exemplet förutsätter att det bara fanns fält av den typen i formuläret.

 

Länk till kommentar
Dela på andra webbplatser

Tackar, ser bra ut och avancerat för min del =) men jag har även checkboxar med, det strular väl till det hela? Dom å andra sidan heter del och har ID-värdet..

 

Det är inget problem för mig att ta bort dessa med

 

sSQL = "DELETE FROM TblTest WHERE ID IN (" & request.form("del") & ")"

 

Hur ska jag blanda in detta? =)

 

//Tomas

 

Länk till kommentar
Dela på andra webbplatser

Ok, döp om namnen på antal-värden till ex. V1, V2 osv.

 

<input type=[GRÅ]"text"[/GRÅ] value=[GRÅ]"<%=rs("[/GRÅ]antal[GRÅ]")%>"[/GRÅ] name=[GRÅ]"<%='V' & rs("[/GRÅ]id[GRÅ]")%>"[/GRÅ]>

 

På sid2:

 

arrReq=[color="#0000ff"]Split[/color]([b]Request[/b].form,[GRÅ]"&"[/GRÅ])
[color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] pair [color="#0000ff"]In[/color] arrReq
arrPair=[color="#0000ff"]Split[/color](pair,[GRÅ]"="[/GRÅ])
id=arrPair(0):value=arrPair(1)
[color="#0000ff"]If[/color] [color="#0000ff"]Left[/color](id,1)=[GRÅ]"V"[/GRÅ] [color="#0000ff"]Then[/color]
	strQuery=[GRÅ]"UPDATE TblTest SET Antal="[/GRÅ] & value & [GRÅ]" WHERE ID="[/GRÅ] & [color="#0000ff"]Right[/color](id,[color="#0000ff"]Len[/color](id)-1)
         [color="#006400"]' Kör queryn[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[color="#0000ff"]Next[/color]
[color="#006400"]' Gör dina andra [GRÅ]"vanliga"[/GRÅ] operationer[/color]
sSQL = [GRÅ]"DELETE FROM TblTest WHERE ID IN ("[/GRÅ] & [b]Request[/b].form([GRÅ]"del"[/GRÅ]) & [GRÅ]")"[/GRÅ]

 

Länk till kommentar
Dela på andra webbplatser

Tack tack tack.. =) Nästan i klass med J-O! =)

 

Haha, tack, men Kungen står i en klass för sig, även om han inte gick hela vägen =)

 

Länk till kommentar
Dela på andra webbplatser

Fungerar fint det där efter liten knep och knåp, en till sak som jag inte får till är.. om värdet är satt till 0 eller inget så ska denna tas bort men det fungerar inte om textfield är tomt såsom jag har gjort det.. hur ska jag lägga till det?

 

<!-- #include virtual="/includes/db.inc" -->

<%

arrReq=Split(Request.form,"&")

For Each pair In arrReq

arrPair=Split(pair,"=")

id=arrPair(0):value=arrPair(1)

If Left(id,1)="V" Then

IF value = 0 OR value = "" then

strQuery = "DELETE FROM TblTest WHERE ID=" & Right(id,Len(id)-1)

end if

if value <> 0 AND value <> "" then

strQuery="UPDATE TblTest SET Antal=" & value & " WHERE ID=" & Right(id,Len(id)-1)

end if

 

......

 

Snart är det läggdags också.. - äntligen!

 

Länk till kommentar
Dela på andra webbplatser

Scriptet gillar tydligen inte namnet "value" så ändra det till strValue istället så ska det funka.

 

Länk till kommentar
Dela på andra webbplatser

Type mismatch: 'strvalue' får jag som felmeddelande

på rad 8 som innehåller IF strvalue = 0 OR strvalue = "" then

 

strvalue = "" är ju det som är felet men.. WHY?

 

//Tomas

_________________________________________________

"Det är när det går långsamt som man förlorar sekunder!"

 

 

Länk till kommentar
Dela på andra webbplatser

Sätt fnuttar kring nollan:

[color="#0000ff"]If[/color] strValue=[GRÅ]"0"[/GRÅ] or strValue = [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]

 

Länk till kommentar
Dela på andra webbplatser

Nej det fungerar om jag sätter värdet till 0, då plockar den bort posten, och jag får felmeddelande om jag tar bort allt..

 

Länk till kommentar
Dela på andra webbplatser

Konstigt. Det här fungerar för mig både vid 0 eller tomt fält

 

[log]

<html><head>
[MÄRK]<%[/MÄRK]
arrReq=[color="#0000ff"]Split[/color]([b]Request[/b].form,[GRÅ]"&"[/GRÅ])
[color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] pair [color="#0000ff"]In[/color] arrReq
arrPair=[color="#0000ff"]Split[/color](pair,[GRÅ]"="[/GRÅ])
id=arrPair(0):strValue=arrPair(1)
[color="#0000ff"]If[/color] [color="#0000ff"]Left[/color](id,1)=[GRÅ]"V"[/GRÅ] [color="#0000ff"]Then[/color]
	[color="#0000ff"]If[/color] strValue=[GRÅ]"0"[/GRÅ] or strValue = [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
		strQuery = [GRÅ]"DELETE FROM TblTest WHERE ID="[/GRÅ] & [color="#0000ff"]Right[/color](id,[color="#0000ff"]Len[/color](id)-1) 
	[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
	[color="#0000ff"]If[/color] value <> 0 [color="#0000ff"]And[/color] value <> [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
		strQuery=[GRÅ]"UPDATE TblTest SET Antal="[/GRÅ] & value & [GRÅ]" WHERE ID="[/GRÅ] & [color="#0000ff"]Right[/color](id,[color="#0000ff"]Len[/color](id)-1)
	[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[color="#0000ff"]Next[/color]
[b]Response[/b].write strQuery
[MÄRK]%>[/MÄRK]
</head><body>
<form action=[GRÅ]"test.asp"[/GRÅ] method=[GRÅ]"post"[/GRÅ]>
<input type=[GRÅ]"text"[/GRÅ] value=[GRÅ]""[/GRÅ] name=[GRÅ]"V1"[/GRÅ]>
<input type=[GRÅ]"submit"[/GRÅ] value=[GRÅ]"Test"[/GRÅ]>
</form>
</body></html>

[/log]

 

Länk till kommentar
Dela på andra webbplatser

Är ju skitskumt det där, jag har provat sida 2 av din kod och den fungerar inte tillsammans med min sida 1 heller, kan det vara fel på min sida 1? (sidan med formuläret)

 

<% DO WHILE NOT RS.EOF %>

<tr>

<td height="23"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%=RS("ID")%></font></td>

<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%=RS("Titel")%></font></td>

<td align="center"><input name="V<%=rs("ID")%>" type="text" value="<%=RS("Antal")%>" size="1" maxlength="2"></td>

<td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%=RS("start")%></font></td>

<td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%=RS("stop")%></font></td>

<td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">

<input type="checkbox" name="delete" value="<%=RS("ID")%>">

</font></td>

</tr>

<% RS.MOVENEXT

loop %>

 

 

___________________________--

 

Skulle man inte kunna lägga in en replace(Request.form("V-ID"), " ", "0") - eller liknande för att gå kring problemet? Vart lägger jag in den? =)

 

___________________________--

 

Tack för hjälpen..

 

//Tomas

 

Länk till kommentar
Dela på andra webbplatser

Det ser ok ut tycker jag. Maila gärna båda filerna i sin helhet till mig så ska jag se vad jag hittar. Mailadressen i min profil.

 

Länk till kommentar
Dela på andra webbplatser

Nej det vågar jag inte.. =)

 

Skulle man inte kunna lägga in en replace(Request.form("antal"), " ", "0") - eller liknande vid arrReq=Split(Request.form,"&") för att gå kring problemet?

 

 

Länk till kommentar
Dela på andra webbplatser

Nja, det som skickas är inte ett mellanslag utan en tom sträng. Du kan ju pröva med If strValue="" then strValue="0" men jag tror inte det är problemet.

Hur ser hela din kod ut nu på sid2?

 

Länk till kommentar
Dela på andra webbplatser

Ja jo men det ska ju bli samma sak även om antalet tas bort och de sätter mellanslag där.. kan sätta replace på både "", " " och " ", (två tecken är max antal)

 

Detta är skitskumt.. tar jag bort antal nu så plockas den bort! Dock inte om jag sätter ett eller två mellanslag där! Skumt eller hur?

 

Jag har även testat med arrReq=Split(Trim(Request.form),"&") och replace men men.. kanske jag är på fel ställe i nattmössan.. :)

 

Här nedan följer hela min kod för sida 2:

 

______________________________________

<!-- #include virtual="/includes/bokdb.inc" -->

<%

IF session("UserID") = "" then

response.redirect("default.asp")

end if

 

arrReq=Split(Request.form,"&")

For Each pair In arrReq

arrPair=Split(pair,"=")

id=arrPair(0):strValue=arrPair(1)

If Left(id,1)="V" Then

If strValue="" then

strvalue=0

end if

IF strValue=0 then

strQuery = "DELETE FROM TblTest WHERE ID=" & Right(id,Len(id)-1)

end if

if strvalue <> 0 AND strvalue <> "" then

strQuery="UPDATE TblTest SET Antal=" & strValue & " WHERE ID=" & Right(id,Len(id)-1)

end if

Conn.Execute(strQuery)

 

End If

Next

IF request.form("delete") <> "" then

sSQL = "DELETE FROM TblTest WHERE ID IN (" & Request.form("delete") & ")"

Conn.Execute(sSQL)

end if

response.Redirect("main.asp")

%>

 

 

_______________________________________________

 

 

Nu lägger jag mig och sussar och brottas vidare med problemet imorgon, tack för hjälpen och ha det bra, natti natti!

 

//Tomas

 

 

Länk till kommentar
Dela på andra webbplatser

Ok, här kommer några substitutionsrader som tar hand om mellanslag, kontrollerar om värdet är numeriskt och om inte sätter det till 0

 

id=arrPair(0):strValue=[color="#0000ff"]Trim[/color](arrPair(1))
[color="#0000ff"]If[/color] [color="#0000ff"]Left[/color](id,1)=[GRÅ]"V"[/GRÅ] [color="#0000ff"]Then[/color]
  [color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] [color="#0000ff"]IsNumeric[/color](strValue) [color="#0000ff"]Then[/color]
      strvalue=0
  [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

...osv

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...