webForumDet fria alternativet
Logga in / Bli medlem

problem med uppdatering

ASP

38 svar · 619 visningar · startad av erka · sida 2 av 2

Frågan, av erka

Hejsan! jag tänkte att jag skulle ha 10 st säkra kort i en databas som bara ska ändras en gång i månaden. Då tänkte jag att de funkar med update. jag har 2 fält i tabellen, de är namn (text) samt id(tal) jag plockar ut dem med en text box med start värdet namn samt en liten textbox revid med numret (1-10) sedan en loop på det för att få fram alla tio. Jag ska ju bara ändra namnet inte nummret

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#21

angående ditt sista inlägg med adress emission så är det för att du glömt en avslutande apostrof runt id.

så här ska det se ut:

SQLStmt="UPDATE LISTAN SET namn='" & namnarr(i) &"' WHERE Id='" & idarr(i) & "'"

mvh

Medlem sedan dec. 19996 522 inlägg
#22

Anders: Hmm hur menar du då ? ja den är kommabaserad tror jag eftersom först gör jag en

på andravideo.asp

<%
dim connect, art
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("../db/video.mdb")
Connect.Open DSNtemp
SQLStmt = "SELECT * FROM LISTAN"
Set RS = Connect.Execute(SQLStmt)
%> 

<form name="film" method="post" action="andravideo_app.asp">
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="1"> <% Do until RS.EOF %> 
    <input type="text" name="id2" value="<%=RS("id")%>" maxlength="3" size="2">
    . 
    <input type="text" name="namn2" value="<%=RS("namn")%>">
    <br>
    <%
RS.MoveNext
Loop
RS.Close
%>

och på den app.asp sidan kommer denna kod

<%Dim conntemp, DSNtemp,objconn, connect, namnarr,idarr
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("../db/video.mdb")
Connect.Open DSNtemp

namnarr=split(request.form("namn2"),",")
idarr=split(request.form("id2"),",")
for i=0 to ubound(namnarr)
SQLStmt="UPDATE LISTAN SET namn='" & namnarr(i) & "' WHERE Id= '" & idarr(i) & "'"
Connect.Execute(SQLStmt)
Next

%>

hur ska jag göra för att göra så som du skrev. jag är rätt kass på kolla med if sattser..=) tack anders

[Redigerat av erka den 06 okt 2000]

Medlem sedan dec. 19996 522 inlägg
#23

Anders - jo så hade jag oxå först, men sen blev jag förvirrad att jag hade missat någe skummt i asp eftersom emission nästan aldrig har fel..=)

Medlem sedan juni 200032 967 inlägg
#24

hinner tyvärr inte kolla på det nu, jag måste hinna med ett plan hem till kära arlanda, men jag ska försöka kika på't ikväll, ok?

om inte någon annan hinner före förstås... ;)

Medlem sedan dec. 19996 522 inlägg
#25

Anders - Vore skitsnällt ! skulle verkligen uppskatta det.

Sen undrar jag vad följande gör exakt

for 1=0 to unbound(namnarr)

??

tack på förhand

Medlem sedan dec. 19996 522 inlägg
#26

tror det är något med denna del som knasar upp det

namnarr=split(request.form("namn2"),",")
idarr=split(request.form("id2"),",")
for i=0 to ubound(namnarr)
SQLStmt="UPDATE LISTAN SET namn='" & namnarr(i) & "' WHERE Id= '" & idarr(i) & "'"
Connect.Execute(SQLStmt)
Next

Jag får felmedelandet felaktig matrisindex: "i"

Det verkar lite konstigt att anropa den så här
[kod}
for i=0 to ubound(namnarr)
SQLStmt="UPDATE LISTAN SET namn='" & namnarr(i) & "' WHERE Id= '" & idarr(i) & "'"

idarr(i), vad betyder det, det står ju inte med i for i=0 to unbound (namnarr), sen idarr(i) i koden. Någon ting är väldans konstigt.. Någon

Medlem sedan juni 200032 967 inlägg
#27

idarr(i), vad betyder det, det står ju inte med i for i=0 to unbound (namnarr), sen idarr(i) i koden.

idarr är en array som innehåller alla id'n som skall uppdateras, och namnarr innehåller alla namnen som skall in i tabellen. dessa arrayer bör ju vara lika långa, så det är inga konstigheter att du anropar både namnarr och idarr i koden, det måste du göra. men man måste då vara säker på att båda arrayerna har lika många giltiga index...

ubound heter funktionen som plockar fram hur många positioner som finns i din array.

för att detta överhuvudtaget skall fungera så måste man vara säker på att id har samma position i idarr, som namnet i namnarr. annars blir det ju galet.

jag hade inte gjort på det sätt du har gjort, utan jag hade nog (förmodligen) kört en uppdatering i taget, fast nu förstår jag å andra sidan inte syftet med uppdateringen. om jag vore du så hade jag kollat igenom arrayerna du skapar med split(), skrivit ut alla sql-frågor istället för att göra en execute på dem.

och vad händer om du gör så här istället:

for i=0 to ubound(namnarr)-1

?

Medlem sedan dec. 19996 522 inlägg
#28

Anders: Får fortfarande felmedelandet

Feltyp:
Körningsfel i Microsoft VBScript (0x800A0009)
Felaktigt matrisindex: 'i'

Förstod inte hur du menade riktigt innan, lite kod skulle inte skada..Tack på förhand.. Annars kan man ju göra så att man fyller på databasen och lägger till en månadssiffra för varje ny sak man lägger in. Sen tar man bara ut de första ur databasen med högsta nummret eller någe sånnt. Men jag vill lära mig på detta sätt oxå. Jag vill slippa klicka massa gånger..Tänkte att det vore smidigt att uppdatera alla på en gång..

Medlem sedan dec. 19996 522 inlägg
#29

Jag undrade vad for i=0 to betydde ?

Medlem sedan juni 200032 967 inlägg
#30

for i = 0 to .... är ett sätt att få en viss programdel utförd ett antal gånger.

i det här fallet skall koden i for-loopen utföras lika många gånger som du har platser i din array namnarr.

kan du försöka förklara exakt vad det är du vill få ut av det hela, det är betydligt enklare att förstå, och kanske hitta ett bättre sätt att utföra uppgiften?

Medlem sedan dec. 19996 522 inlägg
#31

Så här är det. Jag har en databas med filmer i. Två tabeller, en med rescensioner som heter RESC och en tabell som heter LISTAN som är aktuell i detta fall..

Där finns det 10 stycken namn på filmtittlar som är min favorittopp just nu. Jag har två fält. ID och NAMN (båda är text), id är numrerat 1-10 och tänkte användas som placering på listan.

Varje vecka eller 2 ggr i månaden ska jag uppdatera dessa och då tänkte jag att man bara skulle kunna uppdatera namnet för id kommer ju alltid finnas kvar (1-10 då).

Jag tänkte att man på första sidan skulle ta ut alla värden ur namn och id i 2 textboxar på varje rad. Sätta de på initialvalue filmtitel och id och sedan loppa som jag har gjort. Så när man ska ändra behöver man bara ändra namnen i de tip texboxarna och trycka på submitt så ändras sig bara texten där och inte id.

Är det klarare nu eller är jag för förvirrad..??

Medlem sedan dec. 19996 522 inlägg
#32

Du skrev

for i = 0 to .... är ett sätt att få en viss programdel utförd ett antal gånger.
i det här fallet skall koden i for-loopen utföras lika många gånger som du har platser i din array namnarr.

Måste in då id oxå göras så med ? för id måste ju oxå splittas upp ?

Medlem sedan dec. 19996 522 inlägg
#33

Varför har massa inlägg försvunnit ??

Någon som vet det. Anyway, Anders:

Jag har en databas med 2 tabeller, listan och filmer. Filmer har inget med denna att göra utan det är Listan. Listan besår av två kollummer, id och namn (båda är text).

Det är till en lista som har placeringar 1-10, id fälten är således numrerade 1-10. Dessa sak alltid vara 1-10 och jag är ute efter att bara uppdatera namnen, inte id:na (placeringen). Ettan kommer ju alltid att vara en etta osv.

Jag har tänkt att plocka ut dem med textboxar på en starsida, 2 på varje rad, en med id och med namn. SÅ att man då ser vilken placering (id) de filmer man skriver in får. Jag loopar igenom och får då upp 10 rader, placeringarna 1-10. (sätter textboxen på initvalue).

Sen är det bara att ändra titlarna på filmerna om låt oss säga, nr 8 har slagits ut på listan, eller om några har bytt placeringar med varandra.

Är det något mer som är oklar ?

mycket tacksam som sagt..

Medlem sedan dec. 19996 522 inlägg
#34

Finns det något annat sätt om man ska föra in tex. 10 stycken nya värden i en tabell och man skriver in dem i textboxar ? måste man döpa alla textboxar olika och request.form på alla ?

Medlem sedan juni 200032 967 inlägg
#35

måste man döpa alla textboxar olika och request.form på alla ?

så hade jag absolut gjort.

Medlem sedan dec. 19996 522 inlägg
#36

Hmm ahh det kanske är enklast. Men nu blir det väldigt mycket kod, blir inte det segt med denna kod..??

<%Dim Connect, conntemp, DSNtemp

Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("../db/video.mdb")
Connect.Open DSNtemp

dim namn1, namn2, namn3, namn4, namn5, namn6, namn7, namn8, namn9, namn10

namn1=request.form("namn1")
namn2=request.form("namn2")
namn3=request.form("namn3")
namn4=request.form("namn4")
namn5=request.form("namn5")
namn6=request.form("namn6")
namn7=request.form("namn7")
namn8=request.form("namn8")
namn9=request.form("namn9")
namn10=request.form("namn10")

SQLStmt1 = "UPDATE LISTAN SET namn= '" & namn1 & "' WHERE Id='"& 1 & "'"
SQLStmt2 = "UPDATE LISTAN SET namn= '" & namn2 & "' WHERE Id='"& 2 & "'"
SQLStmt3 = "UPDATE LISTAN SET namn= '" & namn3 & "' WHERE Id='"& 3 & "'"
SQLStmt4 = "UPDATE LISTAN SET namn= '" & namn4 & "' WHERE Id='"& 4 & "'"
SQLStmt5 = "UPDATE LISTAN SET namn= '" & namn5 & "' WHERE Id='"& 5 & "'"
SQLStmt6 = "UPDATE LISTAN SET namn= '" & namn6 & "' WHERE Id='"& 6 & "'"
SQLStmt7 = "UPDATE LISTAN SET namn= '" & namn7 & "' WHERE Id='"& 7 & "'"
SQLStmt8 = "UPDATE LISTAN SET namn= '" & namn8 & "' WHERE Id='"& 8 & "'"
SQLStmt9 = "UPDATE LISTAN SET namn= '" & namn9 & "' WHERE Id='"& 9 & "'"
SQLStmt10 = "UPDATE LISTAN SET namn= '" & namn10 & "' WHERE Id='"& 10 & "'"

Connect.Execute(SQLStmt1)
Connect.Execute(SQLStmt2)
Connect.Execute(SQLStmt3)
Connect.Execute(SQLStmt4)
Connect.Execute(SQLStmt5)
Connect.Execute(SQLStmt6)
Connect.Execute(SQLStmt7)
Connect.Execute(SQLStmt8)
Connect.Execute(SQLStmt9)
Connect.Execute(SQLStmt10)

Connect.close
set Connect=nothing

%>

anders, tack för din hjälp! snällt

Medlem sedan juni 200032 967 inlägg
#37

det blir nog inte segare än dina första försök om du hade fått dem att funka... ;)

men jag förstår inte varför du skriver:

...WHERE Id='"& 1 & "'"

varför inte:

...WHERE Id='1'"

?

Medlem sedan dec. 19996 522 inlägg
#38

miss av mig..;) Nu slår det mig ännu mer att det kanske är bättre att baka sina kakor själv än att gå 2 km till farmor för att äta hennes. Inte alltid det krångligaste som är bäst..=)

[Redigerat av erka den 08 okt 2000]

Medlem sedan juni 200032 967 inlägg
#39

japp, baka alltid dina egna kakor, men låna gärna socker av grannen om ditt är slut. ;)

fattaru? :)

280 ms totalt · 4 externa anrop · v20260731065814-full.1b2494f0
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
148 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)