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
38 svar · 619 visningar · startad av erka · sida 2 av 2
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 →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
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]
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..=)
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...
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
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
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
?
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..
Jag undrade vad for i=0 to betydde ?
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?
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..??
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 ?
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..
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 ?
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
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'"
?
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]