Avatar billede roadrunr Nybegynder
14. april 2003 - 11:17 Der er 12 kommentarer

Cursor operation conflict

I perioder modtager jeg følgende fejl når jeg forsøger at "update", "delete" på et recordset:

[Microsoft][ODBC SQL Server Driver]Cursor operation conflict

Nogen som ved hvorfor? Det er som regel i forbindelse med flere SELECT's og updates
Avatar billede hossein Nybegynder
14. april 2003 - 11:25 #1
hvordan åbner du din recordset? det er bedst at du åbner din recordset sådan:

...
cn.open minConnection
set rs = cn.execute(strSQL)
...
Avatar billede roadrunr Nybegynder
14. april 2003 - 11:29 #2
Ja, det har jeg også godt erfaret. At hvis man bruger "conn.exeucte()", så virker det fint.

Dog ville jeg gerne benytte: "rs.open" syntaxen. Desværre er det den, som skaber problemer.
Avatar billede hossein Nybegynder
14. april 2003 - 11:39 #3
ja, ellers kan du prøve med:

<%
Application.Lock
  '...... gør dit eller dat med application object
Application.Unlock
%>
jeg har ikke prøvet den måde.

cursuren er normelt 1,3 eller 3,3 under update hvad bruger du?
Avatar billede roadrunr Nybegynder
14. april 2003 - 11:43 #4
jeg bruger "1,3"... men har godt nok tænkt over det med "3,3", hvor det er adUseClient, som benyttes!
Avatar billede zyber Nybegynder
14. april 2003 - 12:02 #5
Har selv haft problemer med at felterne forsvandt fra min recordset, dette blev løst ved at sætte cursoren til "server". Kan ikke lige huske det helt præcist.
Avatar billede hossein Nybegynder
14. april 2003 - 12:29 #6
det kan måske hjælpe og kigge her:
http://www.adopenstatic.com/Experiments/clientsidecursortypes.asp

men hvordan ser din update sætning ud?
Avatar billede roadrunr Nybegynder
14. april 2003 - 13:31 #7
rs.open "SELECT [name] FROM [tblNames] WHERE [NameID] = 1", conn, 1, 3
rs("name") = "test"
rs.Update
Avatar billede hossein Nybegynder
14. april 2003 - 18:02 #8
Jeg har prøvet med både 1,3 og 3,3 i begge tilfælde virker fint. Jeg tror du får problemer hvis det er flere bruger (hvis det er flere?!) som sammetidig opdatere, derfor skal kursuren bruge lock. Du kan prøve med application.Lock og se om det hjælper, ellers brug excecute methoden.

Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("minDB.mdb") 'skriv databasenavn
Conn.Open strDSN
Set RS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM tagwall WHERE ID = 328"

Application.Lock  'prøv

RS.Open strSQL,Conn,3,3
    rs("navn") = "hossein3"
    RS.Update

Application.UnLock  'prøv

RS.Close
Set RS=Nothing
Conn.Close
Set Conn=Nothing
Avatar billede roadrunr Nybegynder
15. april 2003 - 09:21 #9
hossein: tak for dine svar. Jeg prøver lige at undersøge sagen...
Avatar billede the_bma_man Nybegynder
13. maj 2003 - 18:41 #10
og?
Avatar billede roadrunr Nybegynder
13. maj 2003 - 18:46 #11
tja... jeg fandt en løsning "tror jeg", som indtil videre har løst mit problem. På mit connection object sætter jeg "Conn.CursorLocation = 3", før jeg kalder "Conn.Open".
Avatar billede the_bma_man Nybegynder
28. maj 2003 - 10:51 #12
Det jeg mente var - skal du ikke have lukket spørgsmålet så?
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