Avatar billede ares Nybegynder
11. juni 2003 - 11:38 Der er 18 kommentarer og
1 løsning

fra text til access II

Hej

Jeg skal overføre en semikolon adskilt fil, til en access database. Jeg har fundet frem til følgende:

set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("../emk_v20_data.asp")

DelSQL = "delete * from Jung_vare"
Conn.Execute(DelSQL)

Response.write "De gamle data er slettet ! - Systemet gemme de nye data, vent!"

SQL = "SELECT * FROM jung_vare"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, conn, 3, 3

Set op = CreateObject("Scripting.FileSystemObject")
Set fil = op.OpenTextFile(server.mappath("jung.txt"))

do while not fil.AtEndOfStream
    Line = fil.readline
    LineSplit = split(Line,";")

  RS.Addnew
    RS("KatagorID") = Linesplit(0)
    RS("Brand") = Linesplit(1)
    RS("Varetekst") = Linesplit(2)
    RS("prof") = Linesplit(3)
    RS("Viola") = Linesplit(4)
RS.Update
loop


set fso = server.createobject("scripting.filesystemobject")
fso.deletefile(Fil)
set fso = nothing


set fil = nothing
set RS = nothing

Men det virker som om den loop'er i det uendelige... Selv med 5 linjer i text filen, går den i stå. Hvad kan der værer galt.

På for hånd tak.

Peter.
Avatar billede medions Nybegynder
11. juni 2003 - 11:44 #1
Prøv at indsæt On Error Resume Next
i din Loop
//>Rune
Avatar billede dr-data Nybegynder
11. juni 2003 - 11:58 #2
do while not fil.AtEndOfStream
    Line = fil.readline
    LineSplit = split(Line,";")

  RS.Addnew
    RS("KatagorID") = Linesplit(0)
    RS("Brand") = Linesplit(1)
    RS("Varetekst") = Linesplit(2)
    RS("prof") = Linesplit(3)
    RS("Viola") = Linesplit(4)
RS.Update
loop

du når jo heller ikke videre, end til føste linie.... ;-)?
Avatar billede dr-data Nybegynder
11. juni 2003 - 12:03 #3
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthskipline.asp

dette skulle gøre det....

do while not fil.AtEndOfStream
    Line = fil.readline
    LineSplit = split(Line,";")

  RS.Addnew
    RS("KatagorID") = Linesplit(0)
    RS("Brand") = Linesplit(1)
    RS("Varetekst") = Linesplit(2)
    RS("prof") = Linesplit(3)
    RS("Viola") = Linesplit(4)
RS.Update
fil.SkipLine

loop
Avatar billede ares Nybegynder
11. juni 2003 - 12:20 #4
Får bare et scriptTimeout, det er kun ti linjer i tekstfilen. så det burde ikke tage mere end de standard 90 sek. eller hvad ??
Avatar billede dr-data Nybegynder
11. juni 2003 - 13:16 #5
nej jeg giver dig ret i at det lydder lidt underligt med en timout på kun 10 linier....

prøv evt. lige dette....

Dim iCount
iCount = 0
do Until fil.AtEndOfStream Or iCount >= 5
    Line = fil.readline
    LineSplit = split(Line,";")

  RS.Addnew
    RS("KatagorID") = Linesplit(0)
    RS("Brand") = Linesplit(1)
    RS("Varetekst") = Linesplit(2)
    RS("prof") = Linesplit(3)
    RS("Viola") = Linesplit(4)
RS.Update
fil.SkipLine
iCount = iCount + 1
loop
Avatar billede dr-data Nybegynder
11. juni 2003 - 13:26 #6
selv gør jeg således....
Avatar billede dr-data Nybegynder
11. juni 2003 - 13:26 #7
myfile = "fil.txt"
    Set FSO = server.CreateObject ("Scripting.FileSystemObject")

    If fso.FileExists( myfile ) Then    'fil fundet
    Set foMyFile = FSO.OpenTextFile(mailboxfile, 1, true)
    MyFileContent = foMyFile.ReadAll
    foMyFile.close
    set foMyFile = nothing

    MyFileContent = Split(MyFileContent, VBCrLf)

    For EACH line In MyFileContent
      linedata = Split(Replace(line, ";", ","), ",")

      del_1    = linedata(0)
      del_2    = linedata(1)
      del_3    = linedata(2)
      del_4    = linedata(3)
      del_5    = linedata(4)
    Next
    End If
Avatar billede dr-data Nybegynder
11. juni 2003 - 13:27 #8
whooops :D

    myfile = "fil.txt"
    Set FSO = server.CreateObject ("Scripting.FileSystemObject")

    If fso.FileExists( myfile ) Then    'fil fundet
    Set foMyFile = FSO.OpenTextFile(MyFile, 1, true)
    MyFileContent = foMyFile.ReadAll
    foMyFile.close
    set foMyFile = nothing

    MyFileContent = Split(MyFileContent, VBCrLf)

    For EACH line In MyFileContent
      linedata = Split(Replace(line, ";", ","), ",")

      del_1    = linedata(0)
      del_2    = linedata(1)
      del_3    = linedata(2)
      del_4    = linedata(3)
      del_5    = linedata(4)
    Next
    End If
Avatar billede kovalt Nybegynder
11. juni 2003 - 13:53 #9
Det er monster underligt... jeg er selv ved Wannafind og har samme type webhotel. De scripts, der er her under dette spørgsmål samt de scripts der blev postet i går virker alle på mit webhotel - det burde være præcis det samme.....
Avatar billede kovalt Nybegynder
11. juni 2003 - 13:53 #10
I går kom med med fejl på denne linie:

Set FSO = server.CreateObject ("Scripting.FileSystemObject")

som den ikke kunne oprette - jeg tror det er der fejlen ligger
Avatar billede kovalt Nybegynder
11. juni 2003 - 13:57 #11
fejlen var denne her hvis det siger nogen noget:

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed
Avatar billede ares Nybegynder
11. juni 2003 - 14:49 #12
Kovalt >> jeg har naturligvis gennemgået alle de ting du remsede op i går, dog uden at det gav noget resultat.

Filen ser ud således:

22;alesis;;MultiMix12R, 8xlr2stereo 2sends 2eq 19 3u;2.780;2.530;111
22;alesis;;MultiMix12FXD, 4xlr 4stereo 3eq2aux 60mm faders dig out;2.780;2.530;111
22;alto;;S6, 2xlr/2line 2stereo 2eq 1aux;770;700;31
22;alto;;S8, 4(5)xlr/4line 2stereo 3eq 2aux 4inserts;1.290;1.175;51
22;allen & heath;;GL2200-424, 24ch 4eq2sw 6aux 4sub 48v;21.705;19.755;864
22;allen & heath;;GL3300, 24ch 8bus 8aux 4mute doub sw;40.455;36.815;1610
22;allen & heath;;PA12CP*, 8xlr2stereo 4eqsw 4aux eff 48v 2x500w/4(class AB);15.615;14.210;622
22;allen & heath;;PA20CP*, -same- 16xlr 2stereo;19.095;17.380;760
22;allen & heath;;Wizard12/2DX, 12ch 8bal 2st 4eq2sw eff 19;9.960;9.065;397
22;allen & heath;;Wizard16/2DX, 16bal -do-;10.830;9.855;431

I den endelige udgave skal den meget gerne kunne indlæse omkring 9000 linjer.
Avatar billede kovalt Nybegynder
11. juni 2003 - 15:42 #13
det var skam heller ikke fordi jeg ikke regnede med at du kunne huske det :-) - det var mere hvis andre havde ikke lige havde fået det med :-)...

Mht din tekstfil så kan det måske skyldes at der er to ; i streg i alle linier.... jeg ved ikke om det er det men det er da et bud
Avatar billede ares Nybegynder
11. juni 2003 - 19:02 #14
At der er to ;; betyder jo bare at der er et tomt felt...
Avatar billede dr-data Nybegynder
11. juni 2003 - 20:30 #15
kan du ikke give begrundekser, når du afviser ??
Avatar billede dr-data Nybegynder
11. juni 2003 - 20:35 #16
med "l" even... jeg mener "hvad" er der galt, kan ik lige følge med !!
Avatar billede ares Nybegynder
11. juni 2003 - 22:33 #17
Min kode ser således ud på nuværende tidspunkt.

<% On Error Resume Next %>
<% 'Server.ScriptTimeout = 9000 %>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("../emk_v20_data.asp")

Set op = server.CreateObject("Scripting.FileSystemObject")
Set fil = op.OpenTextFile(server.mappath("jung.txt"))

Dim iCount
iCount = 0
do Until fil.AtEndOfStream Or iCount >= 5
    Line = fil.readline
    LineSplit = split(Line,";")

  RS.Addnew
    RS("KatagorID") = Linesplit(0)
    RS("Brand") = Linesplit(1)
    RS("Varetekst") = Linesplit(2)
    RS("prof") = Linesplit(3)
    RS("Viola") = Linesplit(4)
  RS.Update
fil.SkipLine
iCount = iCount + 1
loop

    foMyFile.close
    set foMyFile = nothing

If Err.Number <> 0 Then
  Response.Write Err.number & "<br>" & Err.source & "<br>" & Err.Description
End If

%>
</body>
</html>

Men jeg får fortsat en timeout fejl.

Active Server Pages error 'ASP 0113'

Script timed out
/intra/jung_import.asp
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
Avatar billede dr-data Nybegynder
16. juni 2003 - 13:04 #18
sorry, har været lidt fraværende fra exp.dk på det sidste.... kigger på det igen senere idag :D
Avatar billede dr-data Nybegynder
17. juni 2003 - 15:08 #19
hos mig, kører følgende perfekt....

<%' On Error Resume Next %>
<% 'Server.ScriptTimeout = 9000 %>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
set conn = Server.CreateObject("ADODB.Connection")
'Conn.Open "PROVIDER=MSDASQL;" & "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("../emk_v20_data.asp")
'Conn.Open "PROVIDER=MSDASQL;" & "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("test.mdb")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("test.mdb")

Set op = server.CreateObject("Scripting.FileSystemObject")
If Not op.FileExists(server.mappath("jung.txt")) Then
op.CreateTextFile(server.mappath("jung.txt"))
End If

Set fil = op.OpenTextFile(server.mappath("jung.txt"))

Dim iCount
iCount = 0
do Until fil.AtEndOfStream Or iCount >= 5
    Line = fil.readline
    LineSplit = split(Line,";")

  strSQL = "INSERT INTO Tabel1 (KatagorID,Brand,Varetekst,prof,Viola) VALUES ('" & Linesplit(0) & "','" & Linesplit(1) & "','" & Linesplit(2) & "','" & Linesplit(3) & "','" & Linesplit(4) & "')"
  Conn.Execute(strSQL)

'  RS.Addnew
'    RS("KatagorID") = Linesplit(0)
'    RS("Brand") = Linesplit(1)
'    RS("Varetekst") = Linesplit(2)
'    RS("prof") = Linesplit(3)
'    RS("Viola") = Linesplit(4)
'  RS.Update
fil.SkipLine
iCount = iCount + 1
loop

    fil.close
    set foMyFile = nothing

If Err.Number <> 0 Then
  Response.Write Err.number & "<br>" & Err.source & "<br>" & Err.Description
End If

%>
</body>
</html>

en zip-fil, med mine datafiler, kan hentes her: http://www.miransky.dk/eksperten/testjung/testjung.zip
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