[ASP]Afbeelding uit access trekken,bijna maar niet helemaal

Pagina: 1
Acties:

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
Ik heb een access db(DSN name:AKAM) waarin een tabel(actueel) plaatjes staan(veldnaam:afbeelding).

Deze plaatjes wil ik weergeven in een ASP document. mbv dit topic http://gathering.tweakers.net/forum/list_messages/555324
Daarvanuit heb ik deze link gevolgd:http://www.aspalliance.co...h/articles/imagequery.asp

de code die daar staat is:
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
1    <% OPTION EXPLICIT %>
2    <%
3    On Error Resume Next
4    Dim sql
5    Dim rs
6    Dim conn
7    Dim strID
8    
9    'Get querystring parameter
10   strID = Request("ID")
11   If strID = "" Then strID = 0
12   
13   'Instantiate Objects
14   Set conn = Server.CreateObject("ADODB.Connection")
15   Set rs = Server.CreateObject("ADODB.Recordset")
16   
17   'Open connection
18   conn.Open Application("aspdb_ConnectionString")
19   
20   'Get the specific image based on the ID passed in a querystring
21   sql = "SELECT f.binary_data " & _
22    " FROM t_file f " & _
23    " WHERE f.file_id = " & strID
24   rs.Open sql, conn
25   
26   'If no record found, end.
27   if rs.eof then
28    rs.Close
29    Response.End
30   end if
31   
32   'Display the contents of the record as an image
33   Response.ContentType = "image/gif"
34   Response.BinaryWrite(rs("binary_data"))
35   
36   'Clean up
37   rs.Close
38   conn.Close
39   set rs = Nothing
40   set conn = Nothing
41   %>


Die code heb ik aangepast naar code die van mij op toepassing is:
[code]
1 <% OPTION EXPLICIT %>
2 <%
3 On Error Resume Next
4 Dim sql
5 Dim rs
6 Dim conn
7 Dim strID
8
9 'Get querystring parameter
10 strID = Request("ID")
11 If strID = "" Then strID = 0
12
13 'Instantiate Objects
14 Set conn = Server.CreateObject("ADODB.Connection")
15 Set rs = Server.CreateObject("ADODB.Recordset")
16
17 'Open connection
18 conn.Open Application("dsn = AKAM")
19
20 'Get the specific image based on the ID passed in a querystring
21 sql = "SELECT actueel.afbeelding " & _
22 " FROM actueel " & _
23 " WHERE actueel.actueel_id = " & strID
24 rs.Open sql, conn
25
26 'If no record found, end.
27 if rs.eof then
response.write Geen record aanwezig
28 rs.Close
29 Response.End
30 end if
31
32 'Display the contents of the record as an image
33 Response.ContentType = "image/gif"
34 Response.BinaryWrite(rs("afbeelding"))
35
36 'Clean up
37 rs.Close
38 conn.Close
39 set rs = Nothing
40 set conn = Nothing
41 %>

Ik heb dit op m'n asp pagna staan op een gegeven moment:
[img src="./getPicture.asp?id=8"]

terwijl record nr 8 wel een .gif afbeelding bevat

Ik krijg elke keer op de pagina : Geen record aanwezig", regel 27,5 :)

iemand een idee wat ik fout gedaan heb

DSN = AKAM
Tabel= Actueel
Velden= actueel_id
afbeelding

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Ja, je moet een recordset gaan lezen voordat je er iets mee kan gaan doen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Kan je StrID niet eens hard invullen om te kijken wat ie dan doet ?

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
ErikvSon, zal het eens doen

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Cai schreef op 05 September 2003 @ 14:14:
ErikvSon, zal het eens doen
Sloop trouwens gelijk die On Error Resume Next er eens uit.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
Nope hardcoded numoro 8 werkt niet,

On error resume next eruithalen, licht toe aub(leer ik er weer van)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Cai schreef op 05 September 2003 @ 14:23:
Nope hardcoded numoro 8 werkt niet,

On error resume next eruithalen, licht toe aub(leer ik er weer van)
Gewoon, de regel verwijderen met behulp van de delete-knop / backspace.

[ Voor 9% gewijzigd door gorgi_19 op 05-09-2003 14:24 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
Ik denk dat ik het weet waarom ik die er moet uitslopen, nu krijg ik de melding dat er op regel 18 iets fout zit nl:Object doesn't support named arguments: 'ActiveConnection'

en anders gaat tie gewoon dooer

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Cai schreef op 05 September 2003 @ 14:25:
Ik denk dat ik het weet waarom ik die er moet uitslopen, nu krijg ik de melding dat er op regel 18 iets fout zit nl:Object doesn't support named arguments: 'ActiveConnection'

en anders gaat tie gewoon dooer
Klopt, dan moet je die fout oplossen.. On Error Resume Next is zoiets van: "Ik sluit mijn ogen, en wat ik niet zie, bestaat niet".

En vandaar dat het dus ook niet goed gaat. Die fout moet je oplossen, anders gaat het niet werken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
fout eruit gehaald

regel 27,5 de te weergeven tekst tussen aanhalingstekens gezet

en krijg nu weer: geen record aanwezig

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
ik denk dat het probleem zit bij het connecten met m'n DSN, want als ik bij de query ipv actueel.afbeelding een * neerzet krijg ik nog steeds hetzelfde: NIKS

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Zet nu tussen regel 23 en 24
ASP:
1
2
Response.Write SQL
Response.End

En voer deze eens uit in je databank.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
kan het te maken hebben met dat ADOBD recordset, want ik gebruik volgens mij ODBC drivers, of staat dat los van elkaar??

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
SELECT actueel.afbeelding FROM actueel WHERE actueel.actueel_id = 8

is output Gorgi_19

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Cai schreef op 05 september 2003 @ 14:34:
SELECT actueel.afbeelding FROM actueel WHERE actueel.actueel_id = 8

is output Gorgi_19
en voer deze eens uit in je databank.

Je moet trouwens niet alles door elkaar halen, maar gestructureerd gaan debuggen; iets wat je nu nog niet doet.

[ Voor 21% gewijzigd door gorgi_19 op 05-09-2003 14:37 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

Is er wel een ID = 8 in je db.
Het achtste record hoeft niet persé 8 als ID te hebben.

Probeer eens ID = 2 oid?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
als ik hem uitvoer in sql, krijg ik het betreffende record te zien

Verwijderd

Als je zeker weet dat er een record is kan je voor het testen ook wel even regel 27-30 uitzetten om te kijken of die niet per ongeluk je recordset dicht gooien

Verwijderd

conn.Open Application("dsn = AKAM")
Volgens mij gaat dit nooit van z'n leven werken.
Een ADO connection string heeft een hoop meer info nodig (provider, server, database, etc.).

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
Zoiets???

<%
// FileName="Connection_odbc_conn_dsn.htm"
// Type="ADO"
// HTTP="false"
// Catalog=""
// Schema=""
var MM_AKAM_STRING = "dsn=AKAM;"
%>

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
ErikvSon, heb het gedaan wat je zei, maar hielp niets, kreeg niks op m'n beeld te zien

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
Afterlife u had gelijk _/-\o_

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Maar dat dsn not found?? vreemd hij bestaat echt.

Ik ga ff stoeien, als iemand langskomt die de juiste syntaxis weet.......

[ Voor 37% gewijzigd door Cai op 05-09-2003 15:05 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Cai schreef op 05 September 2003 @ 15:03:
Afterlife u had gelijk _/-\o_

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Maar dat dsn not found?? vreemd hij bestaat echt.

Ik ga ff stoeien, als iemand langskomt die de juiste syntaxis weet.......
Zoek dan ook gelijk op wat een Application variabele is, wat het doet en wat je er nu mee uitvoert.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

En zoek 's op Google naar "ado odbc connection string". De eerste hit geeft je al 3 manieren om een ADO connection string naar Access op te zetten (System DSN, file DSN en DSN-loos).

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
het gaat goed tot hier
reg 24

rs.Open sql, conn

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

Affterlife thnx voor de links

[ Voor 40% gewijzigd door Cai op 05-09-2003 15:37 ]


Verwijderd

En alweer is Google je beste vriend. Zoek 's op '"ADODB.Recordset" parameters', en volgens mij is de 2e link meteen al raak. :)

  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
imho is deze code toch nu goed aangepast:

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
   <% OPTION EXPLICIT %>
    <%
    
    Dim sql
    Dim rs
    Dim conn
    Dim strID
    

    'Get querystring parameter
   strID = Request("ID")
   If strID = "" Then strID = 0
   
   'Instantiate Objects
   Set conn = Server.CreateObject("ADODB.Connection")
   Set rs = Server.CreateObject("ADODB.Recordset")
   
  'Open connection
   conn.Open "DSN=AKAM;"
   
   'Get the specific image based on the ID passed in a querystring
   sql = "SELECT afbeelding " & _
    " FROM actueel " & _
    " WHERE actueel.actueel_id = " & strID
   rs.Open sql, conn

   'If no record found, end.
   if rs.eof then
    rs.Close
    Response.End
   end if
   
   'Display the contents of the record as an image
   Response.ContentType = "image/gif"
   Response.BinaryWrite(rs("afbeelding"))
   
   'Clean up
   rs.Close
   conn.Close
   set rs = Nothing
   set conn = Nothing
   %>


Wat er nu gebeurd, is het volgende:
Bij een record ID die geen plaatje bevat krijg ik een lege pagina:GOED!

Bij een record ID betreffende een record met plaatje(.GIF) krijg ik een kruisje: De pagina probeert dus nu wel een plaatje weer te geven, maar ergens loopt het dus nog fout.

Mensen een idee?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

Is het wel een gif?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
TeeDee, ja

Kheb nu 3 records, één met .gif, één met .bmp en één met .jpg

Werken alle3 niet

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

Dan gaan we weer verder:

Is de image in de db een blob?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

TeeDee schreef op 08 September 2003 @ 10:53:
Dan gaan we weer verder:

Is de image in de db een blob?
blob? Memo bedoel je? MS Access kent geen blob's, afaik.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

gorgi_19 schreef op 08 September 2003 @ 11:04:
[...]

blob? Memo bedoel je? MS Access kent geen blob's, afaik.
OLE Object dan :)

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

OLE Object? Krijg je dan geen problemen omdat access er dan zelf wat van gaat maken (als in ingevoegde data =/= opgeslagen data omdat access er een eigen image formaat van maakt?)

@Cai : Haal de content type melding eens weg. Misschien wordt er wel een foutmelding gegenereert maar is deze niet te zien omdat het als een plaatje wordt geinterpreteerd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

Janoz schreef op 08 September 2003 @ 11:11:
OLE Object? Krijg je dan geen problemen omdat access er dan zelf wat van gaat maken (als in ingevoegde data =/= opgeslagen data omdat access er een eigen image formaat van maakt?)
Niet dat ik weet. Voordat ik een SQL server had, draaide ik dit soort spul ook op deze manier.

Ik heb deze destijds doorlopen. Werkte goed.

En daar zie je ook dat het een OLE-object moet zijn.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 10:06
Niet om Access af te keuren,
Maar ik heb zelf ook meerdere keren met access gewerkt en het openen van connecties gaat gewoon 3x :X
Ik ben zelf kwa databeest overgestapt op MySQL i.c.m. MyODBC met MyODBC kun je toch een MySQL database openen met ASP.
En je kunt er ook nog DSN connecties mee maken.
En het voordeel als je php kunt draaien op je server is dat je dan met PHPmyAdmin de database gemakkelijk kunt beheren.
Een nog ander bijkomend voordeel is dat mocht je een wat zware site krijgen (meer dat 30 user tegelijk) dan is MySQL daar beter bestand tegen dan Access.

Dat was het offtopic verhaal ;)
Maar uit eigen ervaring (delphi met access) is het mij nooit goed gelukt om een plaatje überhaupt in een access db te krijgen :o
Maar dat kan aan mijn delphi "skillz" liggen of aan Access ;)

Taal fouten inbegrepen ;)


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

klaasbram schreef op 08 September 2003 @ 11:27:
Blaat verhaal over keuzes e.d. Nergens voor nodig imho: TS werkt met Access. Life with it!
--- knip --
Maar uit eigen ervaring (delphi met access) is het mij nooit goed gelukt om een plaatje überhaupt in een access db te krijgen :o
Maar dat kan aan mijn delphi "skillz" liggen of aan Access ;)
Ik denk dat dat aan je delphi "skillz" ligt. Mij lukte het perfect om middels bovenstaande tutorials OLE data uit een access db te krijgen.

TS laat alleen niks meer horen :)

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
waar ik denk dat het prob ligt, is aan de input.
Ik stop nu via access een plaatje erin, en haal het er via een script eruit.

Om het dus te testen is eigenlijk eerst een plaatje te uploaden via een script en vervolgens uit lezen. Nu dus zoeken naar een upload script, dat GEEN gebruik maakt van aspupload, anders zelf proberen in elkaar te knallen

@klaasbram:Met access kun je ook gewoon een system dsn maken, en dan maakt het weinig uit of je database sql server of access is, als je connect naar je system dsn

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

Kijk eens naar die link van mij: [rml]TeeDee in "[ ASP]Afbeelding uit access trekken,bijna"[/rml]

Daar staat netjes van stap tot stap beschreven hoe je het in de db krijgt en ook hoe je het eruit krijgt.

[ Voor 22% gewijzigd door TeeDee op 08-09-2003 11:36 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 10:06
TeeDee schreef op 08 September 2003 @ 11:34:
[...]


Ik denk dat dat aan je delphi "skillz" ligt. Mij lukte het perfect om middels bovenstaande tutorials OLE data uit een access db te krijgen.

TS laat alleen niks meer horen :)
Ik had het over om er eentje in te krijgen ;)
Ik zou als TS zijnde de gehele SQL string als 1 lange regel neer zetten om zo er zeker van te zijn dat de code correct is. (regel 21 - 23)

En zoals de TS al zegt, het zou dus wel eens aan de input kunnen liggen ;)
Want via Access plaatjes toevoegen dan krijg je een ole container en via een script misschien niet.
edit:

Het ging mij niet om wel of niet een system DSN maar om de manier hoe de DB de image opslaat .. en het weer mogelijk maakt om terug te halen ;)

[ Voor 14% gewijzigd door The-Source op 08-09-2003 11:44 ]

Taal fouten inbegrepen ;)


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

klaasbram schreef op 08 September 2003 @ 11:43:
[...]
Ik had het over om er eentje in te krijgen ;)
In die link die ik geef staat ook netjes om het in een db te krijgen.

Maar om je gerust te stellen laat ik mijn post opnieuw plaatsen:

Mij is het gelukt om zonder problemen images in een access db te krijgen alsook om de images er weer uit te krijgen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

offtopic:
Waarom zou je uberhaupt plaatjes willen opslaan in een database?
(zwaardere belasting, veel trager, geen clientside caching etc..)

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-08 22:17

TeeDee

CQB 241

AArsgier schreef op 08 September 2003 @ 11:51:
offtopic:
Waarom zou je uberhaupt plaatjes willen opslaan in een database?
(zwaardere belasting, veel trager, geen clientside caching etc..)
Er zijn voordelen op te noemen:

- filesysteem
- bij een grote verhuizing oid hoef je niet evt. dezelfde structuur aan te houden; ie: je verhuist alleen je DB en that's it.

Verder zou je ook als voordeel op kunnen geven: remote linking e.d. van je images kan dan ook moeilijker.

edit:
het zal ook niet mijn favoriet zijn, (* TeeDee steunt AArsgier :)) maar goed, eerlijk is eerlijk: er zijn dus ook voordelen op te noemen om dit te doen...

[ Voor 17% gewijzigd door TeeDee op 08-09-2003 11:57 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
Verder zou je ook als voordeel op kunnen geven: remote linking e.d. van je images kan dan ook moeilijker.
Hmmz nee hoor, want via properties zie je gewoon de link die je kunt gebruiken.

@TeeDee thnx voor de link, ben hem aan t doorlopen

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Cai schreef op 08 September 2003 @ 13:29:
[...]


Hmmz nee hoor, want via properties zie je gewoon de link die je kunt gebruiken.
Waarbij je dus in het asp-script wat de bestanden ophaalt kan controleren of iemand de juiste rechten bezit of niet. zo niet, dan wordt het plaatje niet getoond. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cai
  • Registratie: December 2001
  • Laatst online: 09:43
@Gorgi_19 ok ok ok, je hebt gelijk :@

@TeeDee Sank joe for de link, werkt perfect(maakt alleen geen gebruik van DSN, maar alla)
misschien een idee om de faq aan te passen
Pagina: 1