[ASP] Na overgang naar W2k Server vage sql error

Pagina: 1
Acties:

  • rik
  • Registratie: April 2000
  • Laatst online: 01-09 10:45
Ik ben vanochtend overgegaan van Windows NT4 WS naar Windows 2000 Server. De wwwroot heb ik gekopieerd, inclusief de Access 2000 .mdb. ODBC Heb ik geconfigureerd, met dezelfde DSN-naam als voorheen.

Krijg ik wat vage errors bij mn asp documents:

Een update formulier meldt:
code:
1
2
3
4
5
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Operation must
use an updateable query.
/fiis/call_registratie3.asp, line 90

De uitleespagina's doen het in principe goed, behalve een:
code:
1
2
3
4
5
6
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Cannot include
Memo, OLE, or Hyperlink Object when you select unique
values (Memo).
/fiis/call_memo_update.asp, line 112

Iemand die zo ziet waar ik iets ben vergeten? De dsn connecties zijn gewoon goed, andere pagina's werken er namelijk ook goed mee.

Verwijderd

Op donderdag 25 juli 2002 12:50 schreef rik het volgende:
Ik ben vanochtend overgegaan van Windows NT4 WS naar Windows 2000 Server. De wwwroot heb ik gekopieerd, inclusief de Access 2000 .mdb. ODBC Heb ik geconfigureerd, met dezelfde DSN-naam als voorheen.

Krijg ik wat vage errors bij mn asp documents:

Een update formulier meldt:
code:
1
2
3
4
5
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Operation must
use an updateable query.
/fiis/call_registratie3.asp, line 90
Dit is hoogstwaarschijnlijk een rechten probleem. Je .mdb file staat in een directory waar de user waaronder IIS draait geen schrijfrechten op heeft.
De uitleespagina's doen het in principe goed, behalve een:
code:
1
2
3
4
5
6
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Cannot include
Memo, OLE, or Hyperlink Object when you select unique
values (Memo).
/fiis/call_memo_update.asp, line 112

Iemand die zo ziet waar ik iets ben vergeten? De dsn connecties zijn gewoon goed, andere pagina's werken er namelijk ook goed mee.
Ook hier denk ik aan hetzelfde rechtenprobleem maar ik weet het niet zeker, want deze ben ik nog nooit tegengekomen. Laat eens zien wat er in de code gebeurt op die regel?

  • rik
  • Registratie: April 2000
  • Laatst online: 01-09 10:45
Op donderdag 25 juli 2002 12:53 schreef MrX het volgende:

[..]

Dit is hoogstwaarschijnlijk een rechten probleem. Je .mdb file staat in een directory waar de user waaronder IIS draait geen schrijfrechten op heeft.
[..]
Read en write was blijkbaar niet genoeg. Ik heb Everyone nu Full Access gegeven en dan werkt het wel. Straks maar eens kijken waar het hem in zit. Iig bedankt voor de tip (oeps dat mag niet)
Ook hier denk ik aan hetzelfde rechtenprobleem maar ik weet het niet zeker, want deze ben ik nog nooit tegengekomen. Laat eens zien wat er in de code gebeurt op die regel?
Niks speciaals: hij opent (execute) een recordset, letterlijk op lijn 112:
code:
1
2
3
4
5
6
7
8
9
10
      <%
      set Calllijst = Server.CreateObject("ADODB.Recordset")
      Calllijst.ActiveConnection = MM_dsncall_STRING
      Calllijst.Source = "SELECT DISTINCT Calls.Call_id,  Memo FROM Calls  WHERE Call_id = " + Replace(Calllijst__MM_ColParam, "'", "''") + ""
      Calllijst.CursorType = 0
      Calllijst.CursorLocation = 2
      Calllijst.LockType = 3
112 --> Calllijst.Open()
      Calllijst_numRows = 0
      %>

  • rik
  • Registratie: April 2000
  • Laatst online: 01-09 10:45
Oke dit blijkt dus een bug te zijn volgens [url="http://support.microsoft.com/default.aspx?scid=kb;[LN];Q303838"]http://support.microsoft.com/default.aspx?scid=kb;[LN];Q303838[/url] .

Met SP6 van Jet 4.0 zou het opgelost moeten zijn.


[update]
Op [url="http://www.windowsupdate.com"]www.windowsupdate.com[/url] staat inderdaad een SP6 ter download.

[update]
En het werkt nog ook..

Verwijderd

Die Query klopt toch ook niet of zie ik het nou fout? Dit:

Replace(Calllijst__MM_ColParam, "'", "''")

hoort toch een string terug te geven he? Dat moet wel anders hoef je natuurlijk geen replace toe te passen. Maar in de Query doe je:

WHERE Call_id = " + Replace(

alsof je een getal als criterium gebruikt...

Moet dat iig niet zijn:

WHERE Call_id = '" & Replace( ... ) & "'"

Of ben ik nou compleet aan het ijlen. If so...waaj? Ben wel benieuwd...

Verwijderd

je moet ook change rechten hebben. dus RW en change/modify. Dit omdat access een lock file aanmaakt wanneer je een row leest/schrijft.

  • rik
  • Registratie: April 2000
  • Laatst online: 01-09 10:45
Op donderdag 25 juli 2002 16:35 schreef D-mension het volgende:
WHERE Call_id = '" & Replace( ... ) & "'"

Of ben ik nou compleet aan het ijlen. If so...waaj? Ben wel benieuwd...
Kijk even wat verder terug op die lijn. De " waar je het over hebt is om de voorgaande string af te sluiten, zodat de replace(var) ertussen kan worden geplaatst. Erachter staat weer een " spatie " zodat ik eventueel later zonder al te veel nadenken de sql kan aanpassen (criteria toevoegen).

In de var worden alle 's vervangen door '' om asp-foutjes op te vangen maar dat had je wel begrepen.

Overigens werkt de asp-code perfect.
Pagina: 1