Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:19 Der er 35 kommentarer og
1 løsning

indlæse tekst fra tekstfil til variabel

Jeg skal teste om der er indlæst et id indlæst, hvis ikke skal den hente et id der ligger i en tekstfil! Hvordan får jeg lagt det id jeg læser fra filen ind i variablen id så jeg kan bruge denne?

id = request.querystring(\"ID\")
if request.querystring(\"id\") = \"\" then
then
\'læs fra tekstfil (id.txt)
Dim fso, f, filespec
Set fso = CreateObject(\"Scripting.FileSystemObject\")
filespec = Server.Mappath(\"/ps4/id.txt\")
Set f = fso.OpenTextFile(filespec,1)

????det er her det knibber????

f.Close
else
...

Nogen der kan hjælpe?
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:20 #1
der skal selvfølgelig ikke være 2 then!
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:22 #2
Du skal enten bruge subString eller IndexOf
Prøv http://msdn.microsoft.com/scripting
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:26 #3
hov den hedder ikke subString men Mid i VBScript
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:29 #4

  strContent = f.ReadAll
  pointer = Instr(strContent,Cstr(id))
  id2 = Mid(strContent,pointer,pointer+4)

det sidste 4-tal skal være antal karakter i dit id
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:30 #5
den sidste variablen skal selvfølgelig hedde id
Avatar billede eagleeye Praktikant
10. september 2001 - 17:30 #6
Hvis der kun ligger et id i filen kan dette vist bruges:

Set f = fso.OpenTextFile(filespec,1)
id = f.ReadLine
f.close
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:32 #7
det er forskelligt hvor mange karaktere mit id indeholder fordi det går op til 30000!

Kan du ikke forklare lidt nærmere hvad det er der sker i scriptet!
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:33 #8
som eagleeye siger kommer det an på hvor mange id der ligger i tesktdokumentet.
Hvis der kun er 1 er hans løsning god nok. Den læse hele første linie i dokumentet ind i variablen.
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:34 #9
Ok, men den giver mig fejl - hvorfor?

if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
___________________________
Dim fso, f, filespec
Set fso = CreateObject(\"Scripting.FileSystemObject\")
filespec = Server.Mappath(\"/ps4/id.txt\")
Set f = fso.OpenTextFile(filespec,1)
id = f.ReadLine
f.Close
else
id = request.querystring(\"ID\")
end if

lige under stregen siger den at navnet er indlæst - hvad gør jeg galt!
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:36 #10
den siger det her:

ps4/findmaalgruppemodtag.asp, line 65, column 4
Dim fso, f, filespec
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:36 #11
sorry:

Navnet blev defineret igen
/ps4/findmaalgruppemodtag.asp, line 65, column 4
Dim fso, f, filespec
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:37 #12
du har genbrugt en variablen enten fso, f eller filespec
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:38 #13
prøv at undlade hele Dim - linien
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:42 #14
har fundet problemet, men nu siger den

Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: \'\'
/ps4/findmaalgruppemodtag.asp, line 20

på dette script:
if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso2, f2, filespec2
Set fso2 = CreateObject(\"Scripting.FileSystemObject\")
filespec2 = Server.Mappath(\"/ps4/id.txt\")
Set f2 = fso2.OpenTextFile(filespec2,1)
id = f2.ReadLine
f.Close
else
id = request.querystring(\"ID\")
end if
Avatar billede eagleeye Praktikant
10. september 2001 - 17:43 #15
Har du defineret eller brugt fso,f eller filespec før i koden?
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:43 #16
linie 20 er f.close
Avatar billede euroman28 Nybegynder
10. september 2001 - 17:44 #17
den skal hedde f2.close
Avatar billede eagleeye Praktikant
10. september 2001 - 17:44 #18
så skriv f2.close
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:44 #19
ups
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:47 #20
if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso2, f2, filespec2
Set fso2 = CreateObject(\"Scripting.FileSystemObject\")
filespec2 = Server.Mappath(\"/ps4/id.txt\")
Set f2 = fso2.OpenTextFile(filespec2,1)
id = f2.ReadLine
f2.Close
else
id = request.querystring(\"ID\")
end if

strSQL = \"Select * From stamfil Where ID = \"&request.querystring(\"id\")&\";\"
Set rs = Conn.Execute(strSQL)

nu siger den:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket \"ID =\".
/ps4/findmaalgruppemodtag.asp, line 27

linie 27 er den hvor der står: Set rs = Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
10. september 2001 - 17:48 #21
Din SQL skal være:

strSQL = \"Select * From stamfil Where ID=\"&id&\";\"
Avatar billede eagleeye Praktikant
10. september 2001 - 17:52 #22
Du vil jo benytter id som du får fra enten filen(id.txt) eller request.querystring(\"id\").

Måske skal der endda indsættes Cint(id), asp kan måske finde på at tolke id som text når den er indlæst fra en fil:

strSQL = \"Select * From stamfil Where ID=\"&CInt(id)&\";\"
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 17:57 #23
Typerne passer ikke sammen: \'CInt\'
siger den!
Avatar billede eagleeye Praktikant
10. september 2001 - 17:59 #24
Er ID i databasen et tal?
Avatar billede eagleeye Praktikant
10. september 2001 - 17:59 #25
Virker det uden Cint?
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 18:00 #26
ja
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 18:01 #27
nej det virker ikke uden og ja det er et tal
Avatar billede eagleeye Praktikant
10. september 2001 - 18:03 #28
Hvilken fejl skriver den hvis du ikke har Cint med?
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 18:05 #29
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgselsudtrykket \"KOBnummer in (Select KOB From stamfil Where ID = )\".
/ps4/findmaalgruppemodtag.asp, line 88

på dette script:

if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso3, f3, filespec3
Set fso3 = CreateObject(\"Scripting.FileSystemObject\")
filespec3 = Server.Mappath(\"/ps4/id.txt\")
Set f3 = fso3.OpenTextFile(filespec3,1)
id = f3.ReadLine
f3.Close
else
id = request.querystring(\"ID\")
end if

strSQL = \"Select * From journal Where KOBnummer in (Select KOB From stamfil Where ID = \"&(id)&\");\"
Set rs2 = Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
10. september 2001 - 18:43 #30
Der skal ikke () omkring id. men det kunne nu godt se ud som om den ikke har en værdi.
Kan du prøve at udskrive id inden strSQL?

strSQL = \"Select * From journal Where KOBnummer in (Select KOB From stamfil Where ID = \"&id&\");\"
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 19:08 #31
fint, nu har jeg fundet ud af at id\'et fra tekstfilen bliver slettet undervejs - nu skal jeg bare finde ud af hvor!
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 19:11 #32
her er hele koden:
--------------------------------------------------<html>
<head>
<title>Untitled</title>
<link rel=\"stylesheet\" href=\"stil3.css\" type=\"text/css\">
</head>
<body topmargin=\"4\" leftmargin=\"4\">
<h2>
<!--#include file=\"makeconn.asp\"-->

<%
if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso2, f2, filespec2
Set fso2 = CreateObject(\"Scripting.FileSystemObject\")
filespec2 = Server.Mappath(\"/ps4/id.txt\")
Set f2 = fso2.OpenTextFile(filespec2,1)
id = f2.ReadLine
f2.close
else
id = request.querystring(\"ID\")
end if

strSQL = \"Select * From stamfil Where ID = \"&id&\";\"

Set rs = Conn.Execute(strSQL)
%>

<%
response.write rs(\"Virksomhedsnavn\") & \"<br>\"
response.write rs(\"Adresse\") & \"<br>\"
response.write rs(\"Postnr\")
response.write rs(\"By\") & \"<br>\"
response.write rs(\"Telefon\") & \"<br>\"
response.write rs(\"ansatte\") & \"<br>\"
response.write rs(\"hjemmeside\") & \"<br>\"

%>

<hr color=\"990E5E\" align=\"center\" size=\"2\" width=\"500\"/>

<%

response.write rs(\"dir_navn1\") & \"<br>\"
response.write rs(\"økonomi_navn\") & \"<br>\"
response.write rs(\"personale_navn\") & \"<br>\"

%>

<hr color=\"990E5E\" align=\"center\" size=\"2\" width=\"500\"/>

<form action=\"tilfojjournal.asp\">
<%
Dim fso, f, filespec
Set fso = CreateObject(\"Scripting.FileSystemObject\")
filespec = Server.Mappath(\"/ps4/id.txt\")
Set f = fso.OpenTextFile(filespec,2)

f.WriteLine request.querystring(\"id\")

f.Close
%>
<input value=\"tilføj post til journal\" type=\"submit\" style=\"background-color: #FFFFFF; font-size: xx-small; font-family: verdana;>
<form>

<table>
<tr>
<td width=\"500\">
<h2>
Journal: <br /><br />
<%

if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso3, f3, filespec3
Set fso3 = CreateObject(\"Scripting.FileSystemObject\")
filespec3 = Server.Mappath(\"/ps4/id2.txt\")
Set f3 = fso3.OpenTextFile(filespec3,1)
id = f3.ReadLine
f3.Close
else
id = request.querystring(\"ID\")
end if

strSQL = \"Select * From journal Where KOBnummer in (Select KOB From stamfil Where ID = \"&id&\");\"
Set rs2 = Conn.Execute(strSQL)

if rs2.EOF = true then
response.write (\"Der er ingen kommentare\")
else
Do
response.write rs2(\"Kommentar\") & \"<br>\"
rs2.movenext
Loop While Not rs2.EOF
end if
%>
</h2>
</td>
</tr>
</table>

</h2>

<%
Conn.Close
Set Conn = Nothing
%>

</body>
</html>
Avatar billede eagleeye Praktikant
10. september 2001 - 19:17 #33
Du har dette kode:

Dim fso, f, filespec
Set fso = CreateObject(\"Scripting.FileSystemObject\")
filespec = Server.Mappath(\"/ps4/id.txt\")
Set f = fso.OpenTextFile(filespec,2)
f.WriteLine request.querystring(\"id\")
f.Close

inden det kode:
if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso3, f3, filespec3
Set fso3 = CreateObject(\"Scripting.FileSystemObject\")
filespec3 = Server.Mappath(\"/ps4/id2.txt\")
Set f3 = fso3.OpenTextFile(filespec3,1)
id = f3.ReadLine
f3.Close
else
id = request.querystring(\"ID\")
end if

strSQL = \"Select * From journal Where KOBnummer in (Select KOB From stamfil Where ID = \"&id&\");\"
Set rs2 = Conn.Execute(strSQL)

Det kunne måske tyde på at filen indhold bliver overskrevet inden du hendte ID ud anden gang.
Avatar billede eagleeye Praktikant
10. september 2001 - 19:24 #34
hvis request.querystring(\"id\") er tom bliver id.txt filen også tom i denne linie:
f.WriteLine request.querystring(\"id\")
Avatar billede eagleeye Praktikant
10. september 2001 - 19:26 #35
Kan du ikke udelade dette kode:

if request.querystring(\"id\") = \"\" then
\'læs fra tekstfil (id.txt)
Dim fso3, f3, filespec3
Set fso3 = CreateObject(\"Scripting.FileSystemObject\")
filespec3 = Server.Mappath(\"/ps4/id2.txt\")
Set f3 = fso3.OpenTextFile(filespec3,1)
id = f3.ReadLine
f3.Close
else
id = request.querystring(\"ID\")
end if

Du har hendtet id en gang før?  eller det er måske ikke den samme id?
Avatar billede mathiasiversen Nybegynder
10. september 2001 - 19:31 #36
Perfekt, du har ret - det skal bare væk, det kode, så virker det - hold kæft hvor lækkert :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester