Hej!
Numeriska fält "& något &" textfält '"& något &"'
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
17 svar · 242 visningar · startad av mikael_a
Hej jag försöker göra en "update" av en accessdatabas, men jag har nog fått fel på min SQL string.
jag försöker att uppdatera flera objekt samtidigt... (en topplista, kunna flytta de olika positionerna)
men jag får följande fel:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e07'
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
/data/admin/topplistan_redigera.asp, rad 13
pos_vhs, pos_dvd och pos_barn är "tal" fält medans de andra i databasen är "text" fält, men det är bara dessa jag skall uppdatera. om jag har fattat det rätt så är det något med tecknet ' ?
kör jag response.write före sql strängen får jag följande fel:
False
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Ogiltigt SQL-uttryck. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' eller 'UPDATE' förväntades.
/data/admin/topplistan_redigera.asp, rad 13
koden ser ut så här:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/databas/film.mdb")
SQL = "Update filmer SET "
SQL = SQL & "pos_vhs = '" & Request.Form("pos_vhs") & "', pos_dvd = '" & Request.Form("pos_dvd") & "', pos_barn = '" & Request.Form("pos_barn") & "' Where ID = '" & Request.Form("id") & "'"
Connect.Execute(SQL)
Connect.Close
%>
------------------
Micke & Annas Sajt
micke@micke-anna.nu
Hej!
Numeriska fält "& något &" textfält '"& något &"'
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
pos_vhs, pos_dvd och pos_barn är "tal" fält
SQL = SQL & "pos_vhs = '" & Request.Form("pos_vhs") & "', pos_dvd = '" & Request.Form("pos_dvd") & "', pos_barn = '" & Request.Form("pos_barn") & "'
Inte enligt dig själv ;)
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
jag får samma fel, jag plockade bort alla ' men det fungerade fortfarande inte..
skulle du vilja visa hur du menar?
Tack
------------------
Micke & Annas Sajt
micke@micke-anna.nu
SQL = " UPDATE filmer Set " & _
" pos_vhs = " & Request.Form("pos_vhs") & "," & _
" pos_dvd = " & Request.Form("pos_dvd") & ", " & _
" pos_barn = " & Request.Form("pos_barn") & " " & _
" Where ID = " & Request.Form("id")
Connect.Execute SQL,,128
Under förutsättning att id också är ett numeriskt fält.
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
[Redigerat av jorgen den 24 aug 2001]
False
Microsoft OLE DB Provider for ODBC Drivers fel '80040e0c'
Det har inte angivits något kommando för kommandoobjektet
/data/admin/topplistan_redigera.asp, rad 12
får jag om jag använder din kod.
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/databas/film.mdb")
response.write SQL = " UPDATE filmer Set " & " pos_vhs = " & Request.Form("pos_vhs") & "," & " pos_dvd = " & Request.Form("pos_dvd") & ", " & " pos_barn = " & Request.Form("pos_barn") & " " & " Where ID = " & Request.Form("id")
Connect.Execute SQL,,128
Connect.Close
%>
id är en räknare...
------------------
Micke & Annas Sajt
micke@micke-anna.nu
[Redigerat av mikael_a den 24 aug 2001]
Hej!
Du kan inte skriva ut en SQL fråga så, du måste skriva:
SQL = " UPDATE filmer Set " & _
" pos_vhs = " & Request.Form("pos_vhs") & "," & _
" pos_dvd = " & Request.Form("pos_dvd") & ", " & _
" pos_barn = " & Request.Form("pos_barn") & " " & _
" Where ID = " & Request.Form("id")
Response.write SQL
Connect.Execute SQL,,128
Så får vi se vad frågan blir på "riktigt".
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
detta såg annorlunda ut...
UPDATE filmer Set pos_vhs = 10, 1, 2, 3, 4, 5, 6, 7, 14, 9, 20, 11, 12, 13, 15, 16, 17, 18, 19, 8, pos_dvd = 10, 1, 2, 3, 4, 5, 6, 7, 14, 9, 20, 11, 12, 13, 15, 16, 17, 18, 19, 8, pos_barn = 10, 1, 2, 3, 4, 5, 6, 7, 14, 9, 20, 11, 12, 13, 15, 16, 17, 18, 19, 8 Where ID =
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i UPDATE-uttryck.
/data/admin/topplistan_redigera.asp, rad 14
är det något med id???
formuläret hämtar data genom <%= RS("pos_vhs")%> i en txt box
jag har fler data som visas tex titel, men denna skall inte uppdateras så den behöver jag väll ingen "box" till ?
------------------
Micke & Annas Sajt
micke@micke-anna.nu
Hmm det ser skumt ut. :(
Hur som helst så finns det inget värde i Request.Form("id").
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
Hej!
du får kolla upp så du verkligen lägger in ett id i formuläret innan du skickar det, tex:
Response.write " "& RS("id") &" " eller vad det fältet nu heter.
Sedan kan du nog inte (är osäker) lägga in så många tal som är kommaseparerade i ett Intfält (fält av typen heltal). Då får du nog göra om det till text och spara dina värden som en kommaseparerad sträng och sedan splitta strängen för att ta ut värdena. Men som sagt det är jag mycket osäker själv på. Någon annan som vet kanske?
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
SQL = " UPDATE filmer Set " & _
" pos_vhs = '" & Request.Form("pos_vhs") & "'," & _
" pos_dvd = '" & Request.Form("pos_dvd") & "', " & _
" pos_barn = '" & Request.Form("pos_barn") & "' " & _
" Where ID = " & Request.Form("id")
[r]....och nej, man kan inte lägga in flera kommaseparerade siffor i ett int-fält. Det är ju liksom inte int längre då....[/r]
[Redigerat av emission den 24 aug 2001]
Hmm. är jag på turne.
pos_vhs, pos_dvd och pos_barn är "tal" fält medans de andra i databasen är "text" fält, men det är bara dessa jag skall uppdatera.
Men, men emission fälten pos_vhs, pos_dvd och pos_barn var ju taltyp.
Varför apostroftecken? :q
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
[Redigerat av jorgen den 24 aug 2001]
hmmm, jag har inte tålamod för detta :)
hur är då det smartaste sättet att göra en uppdatering som jag försöker mig på?
beskrivning:
i tabellen filmer jag jag en massa kolummer, tex: pos_barn, pos_vhs, pos_dvd (dessa 3 är tal), titel, handling, langd, nyhet, dvd, vhs och barn, datum osv...
sedan har jag ett formulär som användaren skriver in alla dessa uppgifter... laddar upp bilden till filmen, och väljer vilken kategori av film. kategorin sparas i nyhet, dvd, vhs och barn skriver dagen månad i kolummen "datum"
(hittils funkar allt)
för att sedan "generera" topplistan" har jag ett formulär där användaren kan välja "månad" eller "nyhet" eller vilken kategori de vill generera topplistan ifrån... (funkar också)
väljer jag sedan tex "nyhet" så visas alla som jag har valt "nyhet" som kategori...
här har jag 3 stycken text boxar, där den listar pos_vhs, pos_dvd, och pos_barn här skall användaren skriva vilken position filmen skall ha i topplistan, data hämtar jag genom <%= RS("pos_vhs")%> osv... med de andra två positionerna också...
är det gamla placeringar vissas de också så det kan vissa upp till 50 filmer, och varje film vissas i en egen text box, genom " en loop"
det jag vill göra är att man skall kunna skriva in tex:
pos_vhs pos_dvd pos_barn titel
1 2 kalle1
2 3 1 kalle2
4 2 3 kalle3
3 1 kalle4
det är bara "pos" som skall kunna ändras...
suck... eller har ni någon annanlösning? förutom att jag behöver lära mig mer asp ;)
------------------
Micke & Annas Sajt
micke@micke-anna.nu
Men, men emission fälten pos_vhs, pos_dvd och pos_barn var ju taltyp.
Varför apostroftecken?
Eftersom det var kommaseparerat så kunde inte gärna vara något annat än en sträng. Missade att det redan var angivet att det var tal.
Nu tror jag att jag förstår vad mikael_a vill göra.
Det finns alltså flera rader med textboxar? Du måste man hålla isär dessa.
<INPUT TYPE="TEXT" NAME="pos_vhs1">
<INPUT TYPE="TEXT" NAME="pos_dvd1">
<INPUT TYPE="TEXT" NAME="pos_barn1">
<INPUT TYPE="HIDDEN" NAME="ID" VALUE="1">
<BR>
<INPUT TYPE="TEXT" NAME="pos_vhs123">
<INPUT TYPE="TEXT" NAME="pos_dvd123">
<INPUT TYPE="TEXT" NAME="pos_barn123">
<INPUT TYPE="HIDDEN" NAME="ID" VALUE="123">
och...
for each strID in request.form("ID")
strSQL="UPDATE filmer SET pos_dvd=" & request.form("pos_dvd" & strID) & ",pos_vhs=" & request.form("pos_vhs" & strID) & ",pos_barn=" & request.form("pos_barn" & strID) & " WHERE ID=" & strID
Connect.Execute SQL,,128
next
emission: jag får följande fel om jag följer ditt kod exempel...
UPDATE filmer SET pos_dvd=,pos_vhs=,pos_barn= WHERE ID=1
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i UPDATE-uttryck.
/data/admin/topplistan_redigera.asp, rad 13
följande kod använder jag till valet av filmerna :
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("/databas/film.mdb")
SQLStmt = "SELECT * FROM filmer WHERE datum = '" & Request("month") & "' order by pos_vhs"
Set RS = Connection.Execute(SQLStmt)
%>
<html>
<head>
<meta name="Author" content="Mikael Andersson (micke@micke-anna.nu)">
<meta name="robots" content="noindex, nofollow">
<title>www.video-center.nu</title>
<script language="JavaScript">
<!--
function openwin(URL)
{
window.open(URL,"windowname","toolbar=no,location=no,directories=no,status=no,menubar=no,width=460,height=450");
}
// -->
</script>
</head>
<body bgcolor="#3C3960" text="#6C8DBF" link="#6C8DBF" vlink="#6C8DBF" alink="#6C8DBF">
<p><font face="Verdana" size="2"><b>Topplistan</b></font></p>
<table border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td width="47">pos vhs</td>
<td width="52">pos dvd</td>
<td width="56">pos barn</td>
<td width="197">Titel</td>
<td width="38">vhs</td>
<td width="38">dvd</td>
<td width="38">barn</td>
<td width="38">nyhet</td>
<td width="38">vecka</td>
<td width="38">månad</td>
</tr>
<%
If RS.EOF Then
response.write "finns inga filmer denna månad, välj ny månad."
Else
Do until RS.EOF
%>
</table>
<form method="POST" action="topplistan_redigera.asp">
<table border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td width="47"><font color="#FFFFFF" size="1" face="Verdana"><input type="text" name="pos_vhs" size="2" value="<%= RS("pos_vhs")%>">
</font>
</td>
<td width="52"><font color="#FFFFFF" size="1" face="Verdana"><input type="text" name="pos_dvd" size="2" value="<%= RS("pos_dvd")%>">
</font>
</td>
<td width="56"><font color="#FFFFFF" size="1" face="Verdana"><input type="text" name="pos_barn" size="2" value="<%= RS("pos_barn")%>">
<INPUT TYPE="HIDDEN" NAME="ID" VALUE="1">
</font>
</td>
<td width="197"><font color="#FFFFFF" size="1" face="Verdana"><a href="javascript:openwin('topplistan_show.asp?ID=<%=rs("ID")%>')"><%= RS("s_titel")%>
</a>
</font>
</td>
<td width="38"><font color="#FFFFFF" size="1" face="Verdana"><%= RS("filmtyp_vhs")%>
</font>
</td>
<td width="38"><font color="#FFFFFF" size="1" face="Verdana"><%= RS("filmtyp_dvd")%>
</font>
</td>
<td width="38"><font color="#FFFFFF" size="1" face="Verdana"><%= RS("filmtyp_barn")%>
</font>
</td>
<td width="38"><font color="#FFFFFF" size="1" face="Verdana"><%= RS("filmtyp_nyhet")%>
</font>
</td>
<td width="38"><font color="#FFFFFF" size="1" face="Verdana"><%= RS("v")%>
</font>
</td>
<td width="38"><font color="#FFFFFF" size="1" face="Verdana"><%= RS("datum")%>
</font>
</td>
</tr>
<%
RS.MoveNext
Loop
RS.Close
Connection.Close
end if
%>
</table>
<p>
<br>
<input type="submit" value="Skicka" name="B1"><input type="reset" value="Återställ" name="B2"></p>
</form>
<p> </p>
<p> </p>
<p><font face="Verdana" size="1" color="#FFFFFF"><br>
<a href="topplistan_skapa.asp">Välj ny månad</a><br>
<br>
<a href="admin_meny.asp">
Tillbaks till Admin menyn</a>
</font></p>
</body>
</html>
sedan för att uppdatera använder jag följande:
<html>
<!-- #include virtual="/data/adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/databas/film.mdb")
for each strID in request.form("ID")
SQL = " UPDATE filmer SET pos_dvd=" & request.form("pos_dvd" & strID) & ",pos_vhs=" & request.form("pos_vhs" & strID) & ",pos_barn=" & request.form("pos_barn" & strID) & " WHERE ID=" & strID
Connect.Execute SQL,,128
next
response.write sql
Connect.Close
%>
<head>
<title>www.video.center.nu</title>
</head>
<body bgcolor="#3C3960" text="#6C8DBF" link="#6C8DBF" vlink="#6C8DBF" alink="#6C8DBF">
<font color="#FFFFFF" size="2" face="Verdana"><b>Databasen är uppdaterad</b></font><p><font face="Verdana" size="2"><a href="topplistan_skapa.asp">Välj
ny månad</a><br>
<br>
<a href="admin_meny.asp">Tillbaks till Admin menyn</a></font>
</html>
gör jag rätt eller är jag helt ute och reser?
------------------
Micke & Annas Sajt
micke@micke-anna.nu
nu blir jag knäpp, det funkar fortfarande inte.
------------------
Micke & Annas Sajt
micke@micke-anna.nu