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?
28 svar · 1 290 visningar · startad av mikul
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
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?
Hur lång som helst?
Vad vill du göra?
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
jag menar så att den inte har nån begränsad längd...
eller blir man tvungen att skriva 99999...osv??
/ Mikul
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?
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]
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
ElseIf Len(Upload.Form("FILE1")) <= 1 Then
var ett slarfel, ack för att du såg det.
sk prova igen nu.
/ Mikul
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?
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
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]
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
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
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
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
Då är det funktionen namn som nog inte fungerar som du tänkt dig.
------------------
essentitia preter non sans multiplicandum