Toon posts:

[asp]export naar excel

Pagina: 1
Acties:

Verwijderd

Topicstarter
wie kan mij helpen met het volgende probleem.
Ik heb een asp pagina, waarbij ik overzichten laat zien van deelnemers aan bijeenkomsten. In het linkerframe wordt de bijeenkomst gekozen en in het rechterframe worden de deelnemers getoond. Dat werkt.

Nu wil ik de resultaten uit de recordset exporteren naar een excel. Dat doe ik middels een hyperlink naar een download.asp. Deze pagina heeft de volgende code.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<% 
   Response.ContentType = "application/vnd.ms-excel"
 %>


<% 
dim sql

set db=server.createobject("adodb.connection")
db.open "blaat"

sql= "query"

set rs=db.execute(sql)
%>
    
    
    <TABLE BORDER=1>
    <TR>
    <% 
   'veldnamen
    For i = 0 to rs.fields.count - 1 
    %>
    <TD><% = rs(i).name %></TD>
    <% next %>
    </TR>

    <% 
    'alle rijen
     while not rs.eof
    %>
   <TR>
    <% For i = 0 to rs.fields.count - 1
    %>
    <TD VALIGN=TOP><% = rs(i) %></TD>
    <% Next %>
     </TR>
    <%
    rs.MoveNext
    wend
    rs.Close
    db.close
    %>



Probleem is nu dat de verldnamen wel vermeld worden, maar de aanmeldgegevens niet. Wie kan mij verder helpen?

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:13

sopsop

[v] [;,,;] [v]

Haal die valign eens weg...

Verwijderd

Topicstarter
Iets aangepast.

Ik heb een pagina gemaakt (download.asp) met deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<% 
   Response.ContentType = "application/vnd.ms-excel" 
   Response.AddHeader "Content-Disposition", "attachment;filename=aanmelders.xls"
 %>

<% 
dim sql, Bijeenkomst
Bijeenkomst=request.QueryString("Bijeenkomst")
set db=server.createobject("adodb.connection")
db.open "DSN=blaat"
sql= "select blaat from blaat WHERE Bijeenkomst= '" & Request.QueryString("Bijeenkomst") & "'"
set rs=db.execute(sql)
%>

    <TABLE BORDER=1>
    <TR>
    <% 
   'veldnamen
    For i = 0 to rs.fields.count - 1 
    %>
    <TD><% = rs(i).name %></TD>
    <% next %>
    </TR>
    <% 
    'alle rijen
     while not rs.eof
    %>
   <TR>
    <% For i = 0 to rs.fields.count - 1
    %>
    <TD VALIGN=TOP><% = rs(i) %></TD>
    <% Next %>
     </TR>
    <%
    rs.MoveNext
    wend
    rs.Close
   db.close
    %>

Deze code werkt perfect maar alleen als ik het bijeenkomstnummer zelf geef. Hij moet deze echter ophalen dmv querystring en dan resultaten tonen. Er zit dus iets fout bij het ophalen van het bijeenkomst nummer.

even voor duidelijkheid:

Linkerframe: kies bijeenkomst
Rechterframe: ophalen bijeenkomst nummer en in query zetten en resulaten tonen
(hier werkt de requestquery dus wel)

extra pagina:
download.asp: zelfde query als in het rechterframe

Verwijderd

Klopt de sql-statement wel? Wat ik in zo'n geval doe is het uitschakelen van de gehele recordset en bij wijze van debug:

Response.write sql

Met het resultaat daarvan kun je in een tool als Query Analyzer o.i.d al vrij snel zien of de fout in de querystring, het sql-statement of ergens anders zit. Zo achterhaal je snel of er bijv. quotes om een (numerieke) waarde staan die daar niet horen.

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Waarom exporteert je niet naar een csv-bestand? Dit is een vage HTML-mix, die wrs *alleen* door Excel gesnopen wordt. Ik zou je aanraden om csv uit te poepen, omdat dat door alle spreadsheet-achtige softwate ondersteund wordt.

Ben je ook gelijk van je probleem af.

[ Voor 9% gewijzigd door _Thanatos_ op 04-01-2005 02:42 ]

日本!🎌


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:13

sopsop

[v] [;,,;] [v]

_Thanatos_ schreef op dinsdag 04 januari 2005 @ 02:41:
Waarom exporteert je niet naar een csv-bestand? Dit is een vage HTML-mix, die wrs *alleen* door Excel gesnopen wordt. Ik zou je aanraden om csv uit te poepen, omdat dat door alle spreadsheet-achtige softwate ondersteund wordt.

Ben je ook gelijk van je probleem af.
Waarschijnlijk is het punt dat er nu een Excell in je browser wordt geopend (vanwege het content-type), Met CSV is dat weer lastiger. En dat met die tabellen snapt excell zonder problemen (over het algemeen).

Verwijderd

Als je de data als TAB seperated file exporteerd met als extensie .xls en bovenaan je asp page het volgende plaatst:

Response.ContentType = "application/octet-stream"

Dan wordt de excel file als 'te downnloaden' file aangeboden aan de gebruiker.

[ Voor 5% gewijzigd door Verwijderd op 04-01-2005 10:11 ]


Verwijderd

Topicstarter
Het werkt op zich prima nu, maar alleen als ik in mijn query een bijeenkomstnummer opgeef. Zodra ik er een request inzet gaat het fout. De query is overigens goed want deze werkt wel in mijn rechterframe.

Zo ziet mijn query er nu uit:

code:
1
sql =  "select r.bijeenkomst, a. id, etc from blaat1 a left join blaat2 e on (a.id=e.id) left join blaat3 r on (a.id = r.id) WHERE Bijeenkomst= '" & Request.QueryString("Bijeenkomst") & "'"

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:13

sopsop

[v] [;,,;] [v]

zo ziet je query er niet uit. Wat is je query als je de ASP uitvoert met parameter?

m.a.w.: wat staat er in
code:
1
Request.QueryString("Bijeenkomst")


=edit=
Wat voor type is 'bijeenkomst'? Als dat numeriek is, dan zonder de single quotes. Indien het een stringetje is, dan is dat wel goed, maar hou in de gaten dat special chars worden geparsed zodat ze in een URL zijn op te nemen. Met name spaties, slashes, gebroken haken, komma's en punten worden anders weergegeven. (tip: urlencode, urldecode)

[ Voor 54% gewijzigd door sopsop op 04-01-2005 10:31 ]


Verwijderd

Topicstarter
bijvoorbeeld:
WHERE Bijeenkomst = 5110

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:13

sopsop

[v] [;,,;] [v]

code:
1
sql =  "select r.bijeenkomst, a. id, etc from blaat1 a left join blaat2 e on (a.id=e.id) left join blaat3 r on (a.id = r.id) WHERE Bijeenkomst= " & Request.QueryString("Bijeenkomst")

Deze dus gebruiken.

PS vergeet niet om eerst te checken of Request.QueryString("Bijeenkomst") wel een geldige waarde bevat. Het is namelijk mogelijk om een heel stuk achter je query te plakken op deze manier.

[ Voor 35% gewijzigd door sopsop op 04-01-2005 10:33 ]


Verwijderd

Topicstarter
boppert schreef op dinsdag 04 januari 2005 @ 10:32:
code:
1
sql =  "select r.bijeenkomst, a. id, etc from blaat1 a left join blaat2 e on (a.id=e.id) left join blaat3 r on (a.id = r.id) WHERE Bijeenkomst= " & Request.QueryString("Bijeenkomst")

Deze dus gebruiken.

PS vergeet niet om eerst te checken of Request.QueryString("Bijeenkomst") wel een geldige waarde bevat. Het is namelijk mogelijk om een heel stuk achter je query te plakken op deze manier.
jouw query is idd beter en het werkt ook in mijn rechterframe alleen het lost mijn probleem nog steeds niet op... na deze aangepaste query kan zelfs de pagina niet worden weergegeven. nog enige suggestie?
Pagina: 1