webForumDet fria alternativet

Typblandsningsfel

10 svar · 303 visningar · startad av Gimbo

GimboMedlem sedan dec. 20001 626 inlägg
#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>&nbsp;</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)

LarsGMedlem sedan dec. 200012 464 inlägg
#2
RecSet("datum") = cdate(Request.Form("datum"))
GimboMedlem sedan dec. 20001 626 inlägg
#3

nu får jag felmeddelandet:

Körningsfel i Microsoft VBScript fel '800a000d' 

Inkompatibla typer: 'cdate'

vad är det cdate gör?

LAMPMedlem sedan mars 2002777 inlägg
#4

Cdate koverterar till datatypen Date. Antingen har du ett konstigt förmat på Request.Form("datum") eller så är den tom.

GimboMedlem sedan dec. 20001 626 inlägg
#5

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

solbulleMedlem sedan mars 20015 287 inlägg
#6

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>
GimboMedlem sedan dec. 20001 626 inlägg
#7

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?

@ndersMedlem sedan juni 200032 969 inlägg
#8

<> betyder skilt från.

Följande betyder samma sak:

if not strVariabel = "Tom" then

och

if strVariabel <> "Tom" then

Mvh,

Jörgen HPMedlem sedan feb. 20012 412 inlägg
#9

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

}
spangoMedlem sedan juni 20008 205 inlägg
#10

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å <>.

Jörgen HPMedlem sedan feb. 20012 412 inlägg
#11

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. ;)

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)