Avatar billede EIHP Juniormester
06. september 2006 - 11:03 Der er 6 kommentarer og
1 løsning

ASP: Tekst til database

Jeg har en fil der indholder:

TableData = {
    [1] = "Navn,60,Warrior,3,Swordsmith/mining,",
    [2] = "Navn,40,Rogue,9,,",
    [3] = "Navn,51,Warrior,9,,",
    [4] = "Navn,2,Warrior,4,Aq20 bank,",
    [5] = "Navn,44,Mage,9,Tailor/Enchanter,030706",
    [6] = "Navn,57,Paladin,8,Mining/skinning,",
}
I min database står der
Id = Auto
Charname = Char(255) 'Characterens navn
Level = Tal 'Hvad level characteren er
Class = Tal ' Skal nok selv ret f.eks. replace(strInput,"Mage","3")
Rank = Tal
GNote = Char(255) ' Notat fra in-game
ONote = Char(255) ' Officer notat fra in-game

Hvis jeg vil ha asp til at læse den oploadet fil, og så opdatere de records som stemmer med Navn.. så den retter Lvl,Class,Rank,Note,Officernote til at pas med det andet.. hvordan skal den slags bygges? Jeg er total noob på den slags.. jeg har aldrig kunne finde ud af tekniske løsninger.. og søger derfor både hjælp, men også vejledling for at lære tekniken bag fra mere erfarende..
Avatar billede fennec Nybegynder
06. september 2006 - 12:36 #1
Du skal have fat i FSO objektet til at læse tekstfilen. Der er en guide her:
http://www.html.dk/tutorials/asp/lektion15.asp
Avatar billede fennec Nybegynder
06. september 2006 - 12:40 #2
Du kan så bruge split() funktionen til at splitte de enkelte linjer op.
myArr = split(f.ReadLine,",")

Som du så bruger til at tjekke din DB:
set rs = conn.execute("select id from DinTabel where name='"& myArr(0) &"'")
if not rs.eof then
  conn.execute("update DinTabel set Class="& replace(strInput,"Mage","3") &"... where id="& rs("id"))
end if
Avatar billede EIHP Juniormester
09. september 2006 - 23:16 #3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<table width="933" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td width="133">Nr.</td>
    <td width="133">Character</td>
    <td width="133">Level</td>
    <td width="133">Class</td>
    <td width="133">Rank</td>
    <td width="133">Note</td>
    <td width="133">Officer-note</td>
  </tr>
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("TEOGL.lua")
Set f = fso.OpenTextFile(filespec,1)

For intLine = 1 to 2
  f.SkipLine
Next

strLineCount = 1

Do While not f.AtEndOfStream
strReadline = replace(f.ReadLine,"Ã¥","å")
strReadline = replace(strReadline,"´","´")
strReadline = replace(strReadline,"ø","ø")
strReadline = replace(strReadline,"æ","æ")
strReadline = replace(strReadline,"½","½")
strReadline = replace(strReadline,"é","é")
strReadline = replace(strReadline,"ó","ó")
strReadline = replace(strReadline,"á","á")
ArrReadline = split(strReadline,".rd.")
strReadline = ArrReadline(1)
ArrCharinfo = split(strReadline,".sp.")
%>  <tr>
    <td><%=strLineCount%></td>
    <td><%=ArrCharinfo(0)%></td>
    <td><%=ArrCharinfo(1)%></td>
    <td><%=ArrCharinfo(2)%></td>
    <td><%=ArrCharinfo(3)%></td>
    <td><%=ArrCharinfo(4)%></td>
    <td><%=ArrCharinfo(5)%></td>
  </tr>
<%
strLineCount = strLineCount + 1
Loop
f.Close
%></table>
</body>
</html>

Jeg for fejlen:
Microsoft VBScript runtime  error '800a0009'

Subscript out of range: '[number: 1]'

/test/read.asp, line 41
Avatar billede fennec Nybegynder
11. september 2006 - 09:17 #4
Det er fordi der er en linje i filen, som ikke indeholder 5 ".sp.", hvilket resultere i at din split ikke returnere et array med 6 elementer.
Avatar billede EIHP Juniormester
11. september 2006 - 18:24 #5
tror det er fordi sidste linje indeholder:
}
hvordan kan jeg få den til at skip sidste linje?
Avatar billede EIHP Juniormester
12. september 2006 - 17:03 #6
Jeg fandt selv en løsning.. men vil du ikke lige lig et svar?

Min løsning:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<table width="933" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td width="133">Nr.</td>
    <td width="133">Character</td>
    <td width="133">Level</td>
    <td width="133">Class</td>
    <td width="133">Rank</td>
    <td width="133">Note</td>
    <td width="133">Officer-note</td>
  </tr>
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("TEOGL.lua")
Set f = fso.OpenTextFile(filespec,1)

For intLine = 1 to 2
  f.SkipLine
Next

strLineCount = 1

Do While not f.AtEndOfStream
strReadLine = f.Readline
if InStr(LCase(Left(strReadLine,5)), "}") then
Do While not f.AtEndOfStream
  f.SkipLine
Loop
else
strReadline = replace(strReadLine,"Ã¥","å")
strReadline = replace(strReadline,"´","´")
strReadline = replace(strReadline,"ø","ø")
strReadline = replace(strReadline,"æ","æ")
strReadline = replace(strReadline,"½","½")
strReadline = replace(strReadline,"é","é")
strReadline = replace(strReadline,"ó","ó")
strReadline = replace(strReadline,"á","á")
ArrReadline = split(strReadline,".rd.")
strReadline = ArrReadline(1)
ArrCharinfo = split(strReadline,".sp.")
%>  <tr>
    <td><%=strLineCount%></td>
    <td><%=ArrCharinfo(0)%></td>
    <td><%=ArrCharinfo(1)%></td>
    <td><%=ArrCharinfo(2)%></td>
    <td><%=ArrCharinfo(3)%></td>
    <td><%=ArrCharinfo(4)%></td>
    <td><%=ArrCharinfo(5)%></td>
  </tr>
<%
strLineCount = strLineCount + 1
end if
Loop
f.Close
%></table>
</body>
</html>
Avatar billede fennec Nybegynder
13. september 2006 - 08:46 #7
Ellers kunne du også bare have tjekket for:
if ubound(ArrCharinfo) = 5 then
%>  <tr>
    <td><%=strLineCount%></td>
    <td><%=ArrCharinfo(0)%></td>
    <td><%=ArrCharinfo(1)%></td>
    <td><%=ArrCharinfo(2)%></td>
    <td><%=ArrCharinfo(3)%></td>
    <td><%=ArrCharinfo(4)%></td>
    <td><%=ArrCharinfo(5)%></td>
  </tr>
<%
end if

.o) <-- One Eyed Jack
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

IT-JOB