Avatar billede kovalt Nybegynder
06. april 2006 - 16:40 Der er 5 kommentarer og
1 løsning

Indlæse data fra Excel med ASP

Hej

Jeg har følgende kode:

Set objConnExcel = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Excel Driver (*.xls)}; "
strConn = DSN & "DBQ="& server.MapPath("minFil.xls")
objConnExcel.Open strConn
strSQL = "SELECT * from myRange1"
Set rs = Conn.Execute(strSQL)
           
set rs = nothing
set objConnExcel = nothing     

hvilket fungerer fint. I det øjeblik jeg begynder at loope i rs laver min ASP en timeout. Mit loop ser således ud

while not rs.EOF
    response.write "<br><br>Her: "& rs("email") &" - "& rs("navn")
rs.MoveNext()
Wend
rs.Close()

er der nogen der har en idé til hvad det kan skyldes. Jeg går ud fra min ODBC-driver er OK eftersom jeg godt kan lave forbindelsen og oprettet recordsettet.
Avatar billede kovalt Nybegynder
06. april 2006 - 16:56 #1
hvis jeg efter linien set rs = Conn.execute(strSQL)

skriver

response.write "Her kommer noget" - bliver det udskrivet OK

hvis jeg i stedet skriver

Response.Write "her: "& rs(0) - udskriver den intet - ej heller "her".

Det virker som om mit rs går det onde ved mit script
Avatar billede eagleeye Praktikant
06. april 2006 - 17:21 #2
Er din kode 100% som du har vist, er linierne i den rækkefølge?


Men du bruger et connection object som hedder Conn til at åbne rs men du har kaldt det connection object som åber forbindelsen for objConnExcel:

Set rs = Conn.Execute(strSQL)


Så prøv at rette den linie til dette:

Set rs = objConnExcel.Execute(strSQL)
Avatar billede eagleeye Praktikant
06. april 2006 - 17:38 #3
Hvis du ikke fik en fejl kunne det tyde på også har defineret et connection object som hedder conn før i koden, eller du har linien "On Error Resume Next" i koden, den er også godt at havde bare ikke når man tester koden, så hvis du har den bør du lige udkommenter den mens du tester koden ;)

Grunden til jeg spørger om rækkefølgen af koden er fordi i sprøgsmå ser det nemlig ud som om du sætter rs = nothing før du udskriver fra recordset. Det kan jo være bevidst i spørgsmålet for at fremhæve din udskrivning... :)

Men du kan prøve at rette koden til sådan her:


Set objConnExcel = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Excel Driver (*.xls)}; "
strConn = DSN & "DBQ="& server.MapPath("minFil.xls")
objConnExcel.Open strConn
strSQL = "SELECT * from myRange1"
Set rs = objConnExcel.Execute(strSQL)
           
while not rs.EOF
  response.write "<br><br>Her: "& rs("email") &" - "& rs("navn")
  rs.MoveNext()
Wend
rs.Close()
set rs = nothing
objConnExcel.Close
set objConnExcel = nothing
Avatar billede kovalt Nybegynder
06. april 2006 - 18:00 #4
hej

Det var lige præcis en on error resume next der lavede baladen. De to forskellige navne på conn var naturligvis også en fejl.

Jeg takker mange gange for hjælpen.
Avatar billede kovalt Nybegynder
06. april 2006 - 20:12 #5
Nu virker det hvis jeg definerer en range i mit Excel-ark.

Hvis jeg skriver

Set objConnExcel = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Excel Driver (*.xls)}; "
strConn = DSN & "DBQ="& server.MapPath("minFil.xls")
objConnExcel.Open strConn
strSQL = "SELECT * from [ark1$]"
Set rs = objConnExcel.Execute(strSQL)
           
while not rs.EOF
  response.write "<br><br>Her: "& rs("email") &" - "& rs("navn")
  rs.MoveNext()
Wend
rs.Close()
set rs = nothing
objConnExcel.Close
set objConnExcel = nothing

virker det ikke. Kunder du syntaxen for at importere fra et ark med et givent navn? eller endnu bedre fra første ark i excel-dokumentet. Mit script skal køre som en importfunktion af nogle emails og nogle navne.

Jeg vil således helst hvis jeg bare kunne sætte scriptet op til at tage første ark og herpå første og anden kolonne?
Avatar billede kovalt Nybegynder
06. april 2006 - 21:19 #6
jeg har fundet ud af det
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