Toon posts:

[ASP] ODBC Probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb een aantal ASP pagina's gemaakt die op mijn systeem perfect draaiden met een DNS. Nu moeten deze pagina's echter naar een intranetserver en heb ik dus een DNS-less connection nodig. Ik heb deze al ongeveer in elkaar gezet, maar ik krijg constant een fout:
code:
1
2
3
4
5
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'. 

/pages/Rules Intranet/ASPRules.asp, line 9

Ik snap dat het iets te maken heeft met de connectie, maar naar veel proberen en search afzoeken ben ik er nog niet uit, hij blijft het probleem geven.
Voor de volledigheid hier mijn stuk 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
<%
    Set conn = Server.CreateObject("ADODB.Connection")
    cString = "driver={Microsoft Access Driver (*.mdb)};DBQ=Rules_Intranet.mdb;"
    conn.Open cString, "", ""
%>
<%
If IsObject(Session("test_rs")) Then
    Set rs = Session("test_rs")
Else
    
    Dim errornumber
    errornumber= Request.Querystring("errornumber")
    
  
    Dim sql
    sql = "SELECT * FROM [Rules Intranet] WHERE VscMessageID=" & errornumber
     

    
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    If rs.eof Then
      rs.AddNew
    End If
    Set Session("test_rs") = rs

End If
%>

Ik hoop dat iemand mij kan helpen hiermee,
alvast bedankt ;)

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 08-09 21:20

Greyfox

MSX rulez

Zoek de syntax van de connectionstring eens op, daar lijkt het fout te gaan.

MSX 2 rulez more


Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 09:53 schreef Greyfox het volgende:
Zoek de syntax van de connectionstring eens op, daar lijkt het fout te gaan.
Deze syntx heb ik dus doorgekregen van de mensen van IT hierzo. Zij beheren die server:
code:
1
2
3
set ptgdata = Server.CreateObject("ADODB.Connection")
cString = "driver={Microsoft Access Driver (*.mdb)};DBQ=H:\Inetpub\baandev-secure\ptg\_private\ptgdata.mdb;"
ptgdata.Open cString, "admin", ""

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 08-09 21:20

Greyfox

MSX rulez

Probeer eens het volledige pad bij de mdb te gebruiken, want ik weet niet waar hij nu de file probeert de vinden.

MSX 2 rulez more


Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 10:02 schreef Greyfox het volgende:
Probeer eens het volledige pad bij de mdb te gebruiken, want ik weet niet waar hij nu de file probeert de vinden.
Jah, dit heeft al iets opgeleverd. Hij ziet de database nu goed zitten, maar geeft de volgende error:
code:
1
2
3
4
5
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver] Not a valid file name. 

/pages/Rules Intranet/ASPRules.asp, line 9

Het lijkt wel of de connection niet herkend wordt, moet ik misschien anders connecten ?

Verwijderd

Heeft de iNetUsr wel toegang tot die file?

Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 10:22 schreef daxx909 het volgende:
Heeft de iNetUsr wel toegang tot die file?
Hmm, als ik op mijn pc de permissions aanpas, staan ze goed (everybody read en write access). Maar als ik de file dan weer upload zijn deze permissions weer weg :?

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 08-09 21:20

Greyfox

MSX rulez

Op dinsdag 12 maart 2002 10:22 schreef daxx909 het volgende:
Heeft de iNetUsr wel toegang tot die file?
Dat kan niet de fout zijn, dan had ie access denied moeten geven.
Ik denk dat dat wellicht de access-versie niet overeenkomt tussen de file en de ODBC-driver.

MSX 2 rulez more


Verwijderd

Topicstarter
Dat zou ook best kunnen
De database is namelijk Access 2002
ik zal eens navragen of dat het probleem kan zijn.

Verwijderd

Ik gebruik zelf het volgende:

<%
Dim conn

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Data Source=" & Server.Mappath("db/ob.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"

Dim rstberichten
Set rstBerichten = Conn.Execute("SELECT * FROM Berichten Order by datum DESC")
etc etc...

Misschien dat je hier iets aan hebt??

Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 10:42 schreef MartijnO het volgende:
Ik gebruik zelf het volgende:

<%
Dim conn

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Data Source=" & Server.Mappath("db/ob.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"

Dim rstberichten
Set rstBerichten = Conn.Execute("SELECT * FROM Berichten Order by datum DESC")
etc etc...

Misschien dat je hier iets aan hebt??
Daar heb ik zeker wat aan !!
bedankt, hij geeft resultaten iig !!
Nu blijft ik alleen nog wel zitten met het cachen van de ASP-pagina's. Als ik dus een query zoek, blijft dit resultaat staan als ik een nieuwe query doe !!
Op mijn eigen systeem had ik dit opgelost in IIS, maar hoe werkt dat nu ?
Heb je hier ook een oplossing voor ?

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11-09 08:17

Basszje

Reisvaap!]

Wat bedoel je precies :? . De resultaten blijven staan :? Pagina refreshen :?

Omschrijf anders ff precies wat je bedoelt :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
OK,

- Ik zoek bijvoorbeeld op errornummer 55.
- Ik krijg dat een tabel met gegevens te zien, dit werkt allemaal prima nu.
- Dan typ ik bijvoorbeeld nummer 66 in als errornummer
- Nu blijven dus de resultaten van errornummer 55 staan, en nummer 66 verschijnt helemaal niet.
- Als ik op ctrl-F5 druk kan ik zelfs geen nieuwe query zoeken.

Het lijkt erop dat de connectie niet gesloten wordt denk ik. Ik houd namelijk elke keer dezelfde gegevens.

Verwijderd

Topicstarter
Ik kan pas weer nieuwe gegevens zien, als ik alle Temporary Internet Files heb gedelete. Dan na 1 keer, krijg ik weer iedere keer hetzelfe :(

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11-09 08:17

Basszje

Reisvaap!]

Ligt het dan wel aan je IIS en niet aan je Explorer ?
Probeer anders eens een response.expires in te stellen ( dat de pagina gelijk expired.

En anders dus caching op je explorer uitzetten zou denk ik ook wel helpen :P .

Zo te horen ligt het nl meer aan je browser dan aan je scripting . :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Probeer het volgende eens om de query af te sluiten.

rstMembers.Close (maar dan je eigen naam natuurlijk)
Set rstMembers=Nothing

Of
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
%>
Om het Cache'n avn de pagina uit te zetten.

Verwijderd

Topicstarter
Ja ok, dat klopt
maar er moeten 500 mensen van deze pagina gebruik gaan maken, en die kan ik niet allemaal vragen om hun cache-opties in te gaan stellen :P

Ik heb wel al wat response.expires tags in mijn script staan, maar waar adviseren jullie ze ?
tussen de <head> tags of ??

voor de volledigheid post ik wel even mijn hele pagina hier:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252">
</HEAD>
<BODY background="pics/backhome1.jpg" style="background-attachment : fixed;">

<%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Data Source=" & Server.Mappath("Rules Intranet.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
%>
<%
If IsObject(Session("test_rs")) Then
    Set rs = Session("test_rs")
Else


    Dim shortdescription2
    shortdescription2= Request.Querystring("Description")  
    
    Dim sql
    sql = "SELECT * FROM [Rules Intranet] WHERE [VscMessageID] LIKE '%" & shortdescription2 & "%' OR [ShortDescription] LIKE '%" & shortdescription2 & "%' OR [Type] LIKE '%" & shortdescription2 & "%' OR [Severity] LIKE '%" & shortdescription2 & "%' OR [Description] LIKE '%" & shortdescription2 & "%' OR [Motivation] LIKE '%" & shortdescription2 & "%'  OR [PossibleSolution] LIKE '%" & shortdescription2 & "%' OR [Example1] LIKE '%" & shortdescription2 & "%' OR [Example2] LIKE '%" & shortdescription2 & "%'"


    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    If rs.eof Then
      rs.AddNew
    End If
    Set Session("test_rs") = rs

End If
%>




<CENTER>
<TABLE BORDER=1  CELLSPACING=4><FONT FACE="Arial" COLOR=#000000><CAPTION></CAPTION></FONT>


<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>ID</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Short description</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Type</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Severity</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Acceptable</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Description</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Motivation</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Possible solution</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Example1</FONT></TH>
<TH BGCOLOR=#c0c0c0 BORDERCOLOR=#000000 ><FONT SIZE=2 FACE="Arial" COLOR=#000000>Example2</FONT></TH>

</TR>

<TBODY>
<%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
 %>
<TR VALIGN=TOP>
<TD BORDERCOLOR=#c0c0c0  ALIGN=RIGHT><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("VscMessageID").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("ShortDescription").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Type").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Severity").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0  ALIGN=RIGHT><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Acceptable").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Description").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Motivation").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("PossibleSolution").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Example1").Value)%><BR></FONT></TD>
<TD BORDERCOLOR=#c0c0c0 ><FONT SIZE=2 FACE="Arial" COLOR=#000000><%=Server.HTMLEncode(rs.Fields("Example2").Value)%><BR></FONT></TD>

</TR>
<%
rs.MoveNext
loop%>
<%
Response.Expires = 3
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>

</TBODY>
<TFOOT></TFOOT>
</TABLE>
</BODY>
</HTML>

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11-09 08:17

Basszje

Reisvaap!]

Ik zou het iig proberen voordat je de header troep naar de browser schrijft :P

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
ok, ga ik zo eens proberen

Verwijderd

Ik heb ze gewoon helemaal bovenin staan.
Boven de <html> dus.

Verwijderd

Topicstarter
Dit lukt ook niet,
de resultaten blijven nog steeds staan :(

nu staat dit boven mijn <html> tag:
[code]
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
<HTML>
<HEAD>
.....enz.
[code]

Is dit niet helemaal goed ofsow ?
Weet iemand nog iets van het afsluiten van een ODBC connectie ?
Volgens mij gebeurt dat niet helemaal goed, maar het kan aan mij liggen dat ik dat niet zie (volledige pagina paar posts eerder).

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Het is heel logisch dat je je oude antwoord terug krijgt, je maakt van je recordset namelijk een session object. Dit is helemaal niet verstandig ivm het probleem wat je nu hebt en ook voor de performance is het beter als je gewoon iedere keer een nieuw recordset object aanmaakt.

Verwijderd

Topicstarter
Ok, hoe stel jij dan voor dat ik het zou moeten doen (en dan in code uitgelegd) ??

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11-09 08:17

Basszje

Reisvaap!]

Op dinsdag 12 maart 2002 13:25 schreef Sjaaky het volgende:
Het is heel logisch dat je je oude antwoord terug krijgt, je maakt van je recordset namelijk een session object. Dit is helemaal niet verstandig ivm het probleem wat je nu hebt en ook voor de performance is het beter als je gewoon iedere keer een nieuw recordset object aanmaakt.
Oh nee! Geen sessions ! argh

[edit]
Even wat uitgebreider :P .
Nooit geen session gebruiken voor dat soort dingen, maar gewoon normale code. Met session en recordsets ( vrij grote dingetjes ) trek je zo je complete server plat aan memory gebruik enzo.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
If IsObject(Session("test_rs")) Then
    Set rs = Session("test_rs")
Else
    Dim shortdescription2
    shortdescription2= Request.Querystring("Description")  
    
    Dim sql
    sql = "SELECT * FROM [Rules Intranet] WHERE ......
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    If rs.eof Then
      rs.AddNew
    End If
    Set Session("test_rs") = rs

End If
%>

veranderen naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<%
Dim shortdescription2
shortdescription2= Request.Querystring("Description")  
    
Dim sql
sql = "SELECT * FROM [Rules Intranet] WHERE ......
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
If rs.eof Then
    rs.AddNew
End If
%>

Dat if rs.eof then rs.addnew stukje snap ik niet helemaal, ik vind het alleen wel een vreemd stukje.

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11-09 08:17

Basszje

Reisvaap!]

Wat is daar vreemd aan? Dat is eigenlijk (ongeveer) hetzelfde als een insert query verzend ( mits helemaal geimplementeerd dan ) . :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 14:03 schreef Sjaaky het volgende:
Dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
If IsObject(Session("test_rs")) Then
    Set rs = Session("test_rs")
Else
    Dim shortdescription2
    shortdescription2= Request.Querystring("Description")  
    
    Dim sql
    sql = "SELECT * FROM [Rules Intranet] WHERE ......
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    If rs.eof Then
      rs.AddNew
    End If
    Set Session("test_rs") = rs

End If
%>

veranderen naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<%
Dim shortdescription2
shortdescription2= Request.Querystring("Description")  
    
Dim sql
sql = "SELECT * FROM [Rules Intranet] WHERE ......
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
If rs.eof Then
    rs.AddNew
End If
%>

Dat if rs.eof then rs.addnew stukje snap ik niet helemaal, ik vind het alleen wel een vreemd stukje.
Prima, het is gelukt !!
ik ga eens bestuderen wat nu het verschil was met het vorige, maar thanx hee !!

Bedankt allemaal,
GoT heeft zijn waarde wederom bewezen :D

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Ik denk dat rs.addnew er staat omdat rs.movefirst een error geeft als de rs leeg is. Beter is dus om rs.movefirst pas te doen als je weet dat rs niet leeg is. En rs.addnew gewoon weg te halen.

Eigenlijk is het gewoon uit den boze om dit probleem met een rs.addnew op te lossen. En een nieuw geopende recordset staat altijd al aan het begin dus kan rs.movefirst ook weg.

  • fatbenny
  • Registratie: April 2001
  • Laatst online: 07-03-2023
oh nee, sessions
Pagina: 1