webForumDet fria alternativet

Ogiltigt proceduranrop eller argument.: 'Mid'

ASP

28 svar · 1 290 visningar · startad av mikul

Medlem sedan aug. 20013 824 inlägg
Frågan#1

hej.
jag får detta felmedelandet:
Körningsfel i Microsoft VBScript fel '800a0005'
Ogiltigt proceduranrop eller argument.: 'Mid'
/asp/UploadScript2.asp, rad 15

när jag kör följande kod:

'##### Mickes stuff #####
	
	Function namn(str)
		Dim pos, fromend
		str = Trim(str)
		pos = inStrRev(str,"/")
		fromend = len(str) - pos
		namn = Mid(str,fromend)
	End Function

	Sub add(Fil)
		Dim Conn
		Set Conn = Server.Createobject("Adodb.Connection")
		Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
		Conn.Execute ("Insert into bilder(bild,rubrik) Values('" & Fil & "','rubrik')")
		Conn.Close
		Set Conn = Nothing
	End Sub
	
	If Len(Upload.Form("FILE1")) >= 1 Then
		Call add(Namn(Upload.Form("FILE1")))
	ElseIf Len(Upload.Form("FILE2")) >= 1 Then
		Call add(Namn(Upload.Form("FILE2")))
	ElseIf Len(Upload.Form("FILE1")) <= 1 Then
		Call add(Namn(Upload.Form("FILE3"))) 
	End If
	
'##### Mickes stuff slutar #####

vad är det för fel?

/ Mikul

Medlem sedan feb. 20012 412 inlägg
#2

Hej,

Du använder den fel, funktionen Mid() ska se ut så här:

variable = Mid("sträng", startpunkt, antal)

exempel:

variable = Mid("jag heter jörgen", 5, 5)

returnerar "heter".

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

Medlem sedan aug. 20013 824 inlägg
#3

Hej Jörgen.
om man vill att den ska var hur lång som helst då??
hur gör man då??

/ Mikul

Medlem sedan feb. 20012 412 inlägg
#4

Hur lång som helst?

Vad vill du göra?

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

Medlem sedan aug. 20013 824 inlägg
#5

jag menar så att den inte har nån begränsad längd...
eller blir man tvungen att skriva 99999...osv??

/ Mikul

Medlem sedan feb. 20012 412 inlägg
#6

Varför ska du då använda mid(), återigen vad vill du åstadkomma?

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

Medlem sedan aug. 20013 824 inlägg
#7

det har ju funkat förut för mig...
att bara skriva:

Mid(strtext,5)

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#8

Tredje parametern till mid kan utelämnas.

Felet beror nog på att argument str som du skickar in till funktionen namn är tom eller null.

Function namn(str)
if isnull(str) or len(str) = 0 then
   name = ""
   return
end if
Dim pos
str = Trim(str)
pos = inStrRev(str,"/")
namn = Mid(str,pos+1)
End Function

Jag ändrade lite annat, då det den position som instrrev returnerar räknas från början.

Den här raden

ElseIf Len(Upload.Form("FILE1")) <= 1 Then

borde väl vara

ElseIf Len(Upload.Form("FILE1")) >= 1 Then

Det är nog därför det kommer in en tom sträng till funktionen namn.

red: lite småfel.
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 24 nov 2001]

Medlem sedan aug. 20013 824 inlägg
#9

jag vill göra om
C:\mapp\mapp2\telefonlista.txt
till
Telefonlista.txt
och det försöker jag göra med hjälp av den här koden:

Function namn(str)
Dim pos, fromend
str = Trim(str)
pos = inStrRev(str,"/")
fromend = len(str) - pos
namn = Mid(str,fromend)
End Function

/ Mikul

Medlem sedan aug. 20013 824 inlägg
#10

ElseIf Len(Upload.Form("FILE1")) <= 1 Then
var ett slarfel, ack för att du såg det.
sk prova igen nu.

/ Mikul

Medlem sedan feb. 20012 412 inlägg
#11

Tredje parametern till mid kan utelämnas.

Hmm, varför utelämnar VBscript doc sådan viktig information för mig. :(

mvh Jörgen

------------------
Varför bråka när man kan kramas?

Medlem sedan aug. 20013 824 inlägg
#12

nu fick jag inget felmedelande, utan den ladade upp filen som den skulle, Men det hände inget i databasen.
ser ni nå fel i den här koden?

<%
	Set Upload = Server.CreateObject("Persits.Upload.1")
	Count = Upload.Save("C:\Inetpub\wwwroot\asp\kas\reportage\images")

'##### Mickes stuff #####
	
	Function namn(str)
		Dim pos, fromend
		str = Trim(str)
		pos = inStrRev(str,"/")
		fromend = len(str) - pos
		namn = Mid(str,fromend)
	End Function

	Sub add(Fil)
		Dim Conn
		Set Conn = Server.Createobject("Adodb.Connection")
		Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
		Conn.Execute ("Insert into bilder(bild,rubrik) Values('" & Fil & "','rubrik')")
		Conn.Close
		Set Conn = Nothing
	End Sub
	
	If Len(Upload.Form("FILE1")) >= 1 Then
		Call add(Namn(Upload.Form("FILE1")))
	ElseIf Len(Upload.Form("FILE2")) >= 1 Then
		Call add(Namn(Upload.Form("FILE2")))
	ElseIf Len(Upload.Form("FILE3")) >= 1 Then
		Call add(Namn(Upload.Form("FILE3"))) 
	End If
	
'##### Mickes stuff slutar #####

Response.write Count & "files uploaded."
If Upload.Expires <> CDate("9/9/9999") Then Response.Write "<HR>AspUpload expires on " & Upload.Expires
%>

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#13

Det bör väl vara FILE3 och inte FILE1 i if-satsen

Jag ser att du har ändrat, så du kan glömma detta.
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 24 nov 2001]

Medlem sedan aug. 20013 824 inlägg
#14

Kolla igen Lars

Livet är hårt ibland Jörgen :)

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#15

Blir det något anrop till rutinen add?

Du kan ju lägga in test-utskrift där för att se om det händer något. Samtidigt kan du se om din insert ser riktig ut

sql = "Insert into bilder(bild,rubrik) Values('" & Fil & "','rubrik')"
response.write "sql:" & sql
conn.execute sql

------------------
essentitia preter non sans multiplicandum

Medlem sedan aug. 20013 824 inlägg
#16

konstigt....
det skrivs inte ut nånting...
koden ser ut så här

<HTML>
<BODY BGCOLOR="#FFFFFF">

<%
	Set Upload = Server.CreateObject("Persits.Upload.1")
	Count = Upload.Save("C:\Inetpub\wwwroot\asp\kas\reportage\images")

'##### Mickes stuff #####
	
	Function namn(str)
		Dim pos, fromend
		str = Trim(str)
		pos = inStrRev(str,"/")
		fromend = len(str) - pos
		namn = Mid(str,fromend)
	End Function

	Sub add(Fil)
		Dim Conn
		Set Conn = Server.Createobject("Adodb.Connection")
		Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
		sql = "Insert into bilder(bild,rubrik) Values('" & Fil & "','rubrik')"
		Response.write "sql:"& sql
		Conn.Execute (sql)
		Conn.Close
		Set Conn = Nothing
	End Sub
	
	If Len(Upload.Form("FILE1")) >= 1 Then
		Call add(Namn(Upload.Form("FILE1")))
	ElseIf Len(Upload.Form("FILE2")) >= 1 Then
		Call add(Namn(Upload.Form("FILE2")))
	ElseIf Len(Upload.Form("FILE3")) >= 1 Then
		Call add(Namn(Upload.Form("FILE3"))) 
	End If
	
'##### Mickes stuff slutar #####

Response.write Count & " files uploaded."
If Upload.Expires <> CDate("9/9/9999") Then Response.Write "<HR>AspUpload expires on " & Upload.Expires
%>
</BODY>
</HTML>

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#17

Borde du inte göra så här

For Each File in Upload.Files 
add(namn(file.name))
Next

istf

If Len(Upload.Form("FILE1")) >= 1 Then
Call add(Namn(Upload.Form("FILE1")))
ElseIf Len(Upload.Form("FILE2")) >= 1 Then
Call add(Namn(Upload.Form("FILE2")))
ElseIf Len(Upload.Form("FILE3")) >= 1 Then
Call add(Namn(Upload.Form("FILE3"))) 
End If

?

------------------
essentitia preter non sans multiplicandum

Medlem sedan aug. 20013 824 inlägg
#18

jag testade det nu, men då fick den bara värdet 1 i databasen...
och om jag laddade upp fler än en fil på sammagång så blev det då 1, 2, 3 i databasen.. om du fattar...
sql:Insert into bilder(bild,rubrik) Values('1','rubrik')
sql:Insert into bilder(bild,rubrik) Values('2','rubrik')
sql:Insert into bilder(bild,rubrik) Values('3','rubrik')

/ Mikul

Medlem sedan dec. 200012 464 inlägg
#19

Då är det funktionen namn som nog inte fungerar som du tänkt dig.

------------------
essentitia preter non sans multiplicandum

Medlem sedan aug. 20013 824 inlägg
#20

troligtvis...
men vad?!

/ Mikul

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
114 ms — ändringar (db)