G Gimbo Medlem sedan dec. 2000 1 626 inlägg Frågan 2 apr. 2002 21:28 #1 Jag får felmeddelandet:
Provider fel '80020005'
Typblandningsfel.
på rad 43 i denna kod:
<!-- #include file="adovbs.inc" -->
<html>
<head>
<title>Uppdatering av databas</title>
</head>
<body>
<% If Request.Querystring("action") = "" then %>
<p>Uppdatera databasen:</p>
<p> </p>
<form type="method" action="kunskap.asp?action=add" method="POST">
<input type="hidden" name="datum" value="<%Date%>">
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="submit" value="GO">
</form>
<% End if %>
<% If Request.Querystring("action") = "add" then %>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
%>
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM kunskap"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
For i = 1 to request.form("kunskap").count
RecSet.AddNew
RecSet("kunskap") = Request.Form("kunskap")(i)
RecSet("datum") = Request.Form("datum")
RecSet.Update
next
RecSet.Close
Connect.Close
Set Connect = Nothing
response.write "databasen uppdaterad, tillbaks till admin sidan"
%>
<% End if %>
</body>
</html>
Jag vill nämligen lägga till nya 5st poster i databasen, det är vad scriptet går ut på...
databasen ser ut så här:
kunskap
- ID (räknare)
- kunskap (PM)
- datum (datum/tid)
L LarsG Medlem sedan dec. 2000 12 464 inlägg RecSet("datum") = cdate(Request.Form("datum"))
G Gimbo Medlem sedan dec. 2000 1 626 inlägg nu får jag felmeddelandet:
Körningsfel i Microsoft VBScript fel '800a000d'
Inkompatibla typer: 'cdate'
vad är det cdate gör?
L LAMP Medlem sedan mars 2002 777 inlägg Cdate koverterar till datatypen Date. Antingen har du ett konstigt förmat på Request.Form("datum") eller så är den tom.
G Gimbo Medlem sedan dec. 2000 1 626 inlägg aha oke nu hitta jag felet, som value på datum hade jag skrivit så här: value="<%Date%>" vilket är fel det ska vara value="<%=Date%>"
jag har en till fråga nu, hur gör jag för att det ska gå att posta 3 ny poster i databasen utan att få ett felmeddelande, för nu är det så att det inte går att posta 3 poster utan man måste fylla ut alla 5 fält
S solbulle Medlem sedan mars 2001 5 287 inlägg Kanske...
<!-- #include file="adovbs.inc" -->
<html>
<head>
<title>Uppdatering av databas</title>
</head>
<body>
<% If Request.Querystring("action") = "" then %>
<p>Uppdatera databasen:</p>
<p> </p>
<form type="method" action="kunskap.asp?action=add" method="POST">
<input type="hidden" name="datum" value="<%Date%>">
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="text" name="kunskap"><p>
<input type="submit" value="GO">
</form>
<% End if
If Request.Querystring("action") = "add" then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM kunskap"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
For i = 1 to request.form("kunskap").count
If Request.Form("kunskap")(i) <> "" then
RecSet.AddNew
RecSet("kunskap") = Request.Form("kunskap")(i)
RecSet("datum") = Request.Form("datum")
RecSet.Update
End If
next
RecSet.Close
Connect.Close
Set Connect = Nothing
response.write "databasen uppdaterad, tillbaks till admin sidan"
End if %>
</body>
</html>
G Gimbo Medlem sedan dec. 2000 1 626 inlägg Tack det fungera, vad är det du har gjort med koden, du la till detta såg jag:
If Request.Form("kunskap")(i) <> "" then
massa jox
end if
Vad står dessa tecken <> för d har jag aldrig fattat?
@nders Medlem sedan juni 2000 32 967 inlägg <> betyder skilt från.
Följande betyder samma sak:
if not strVariabel = "Tom" then
och
if strVariabel <> "Tom" then
Mvh,
Inte lika med eller skilt ifrån skrivs på flera olika sätt och olika språk har olika operatorer för detta.
Som @nders skrev kan man i VB skriva:
if not strVariabel = "Tom" then
och
if strVariabel <> "Tom" then
medan man i högnivåspråk använder operatorn != I PHP kan det tex se ut så här: (där det senaste är att föredra) Har du tittat något på någon variant av .NET känner du säkert igen det.
if (!($strVariabel == 5)) {
// Gör något
}
eller
if ($strVariabel != 5) {
// Gör något
}
spango Medlem sedan juni 2000 8 205 inlägg
medan man i högnivåspråk använder operatorn !=
Nja. Snarare är det språk som härstammar från C som använder !=, VB är mer högnivåspråk än C men använder ändå <>.
Både:
C, C++, Java, Phyton använder !=. Och de är ju de flitigast använda, men å andra sidan så är fungerar de ungefär lika och bygger en del på C. Men du har helt klart rätt som vanligt. ;)