Jeg har en Access 2003 applikation, der fungerede som frontend til SQL Server 7.
Nu har jeg opgraderet SQL Serveren til SQL Server 2005 SP2 og så kan jeg pludselig ikke foretage sletninger i en tabel i databasen fra Access 2003?!?
Jeg får følgedne fejlmeddelelse: Run-time error 3146 ODBC--call failed.
Jeg har intet ændret i koden udover at jeg i "Styring af sammenkædede tabeller" har ændret den placeringen af databasen på den nye server.
Kodelinjerne, der nu er årsagen til fejlen ser ud som følger: sql2 = "delete from tblEmne where bilagsnr='" & Me.Bilagsnummer & "'" CurrentDb.QueryDefs("DynamsikPass").sql = sql2 CurrentDb.QueryDefs("DynamsikPass").Execute
Fejlårsagen skyldes ikke manglende brugerrettigheder på SQL Server.
Er der nogen, der kan anvise hvordan jeg slipper for fejlen Run-time error 3146 ODBC--call failed ?
If yo make a delete query can you delete? Are you allowed to add records?
If not make sure that you have a primary key on the tables, it s a while since I worked with ODBC linked tables but I seem to recall that you have to specify a primary key when you create the link.
Ja, jeg kan godt læse og oprette data. Jeg kan bare ikke slette data med funktionen CurrentDb.QueryDefs("DynamsikPass").Execute.
På pcreview.co.uk har jeg fundet følgende løsning: I dont know if that the case, but when I moved from access 97 to Access 2003, I work with reference to other mdb's, and I got that message because I used the Set db = CurrentDb but when I changed it to Set db = Codedb It worked fine, don't know why.
Er der nogen, der kan oplyse hvor i Access jeg skal indsætte linjen "Set db = Codedb"?
Run-time error 3078 The Microsoft Jet database engine cannot find the input table or query". Make sure it exists and that its name is spelled correctly. ...
Is this the error you get?
I wouldnt have thought it necessary but you could try puting dbo in front of your table name dbo.tblEmne
Ja, det er fejltypen. Jeg har allerede forsøgt mig med, at kalde tabellen for dbo_tblEmne, Fugl.dbo.tblEmne eller dbo.tblEmne, men fejlen var den samme.
Igen kan jeg nævne, at Access 2003 virkede fint i samspil med SQL Server 7. Jeg har således ikke ændret noget i Access-delen udover det med sammenkædet tabelstyring.
Exit Sub ErrHandler: Dim msg As String, e As DAO.Error For Each e In DBEngine.Errors If e.Number <> 3146 Then msg = msg & vbCrLf & e.Description End If Next e MsgBox Err.Description & msg End Sub
det har bevirket, at jeg nu får fejlmeddelelsen:
ODBC: kaldet lykkedes ikke. [Microsoft][odbc SQL Server Driver][Sql Server]Could not run BEGIN TRANSACTION in database ‘bilag’ because the database is read-only.
Objektet CurrentDB tilgår tilsyneladende den gamle database, der er sat til Read Only, på den gamle SQL Server.
Er der nogen, der ved hvordan man globalt sætter connectionstring til CurrentDB i Access 2003? Det er tilsyneladende ikke nok, at jeg har brugt funktionen Sammenkædet Tabelstyring for alle tabellerne, så de peger på den nye server og nye database.
Det er stadig Run-time error 3146 ODBC--call failed, men den anden error-message er bare den mere sigende:
ODBC: kaldet lykkedes ikke. [Microsoft][odbc SQL Server Driver][Sql Server]Could not run BEGIN TRANSACTION in database ‘bilag’ because the database is read-only.
Så lige nu er problemet kun, at CurrentDB tilsyneladende peger på den gamle database på SQL Server 7, men de sammenkædede tabeller peger alle på den nye SQL Server 2005.
Jeg forstår ikke hvorfor CurrentDB husker den gamle database?
Access 2003 frontenden er i øvrigt oprindelig konverteret fra en Access 97. Jeg ved ikke om den oplysning er nogen hjælp?
Ja, det er mig, der har sat den gamle database til Read Only netop for at undgå den skulle blive brugt ved en fejl. Jeg har nu deattached den gamle database på den gamle SQL Server 7.
Det bevirker at jeg nu får fejlmeddelelsen: ODBC: Tilslutningen til "Fugl" lykkedes ikke. ODBC: Tilslutningen til "Fugl" lykkedes ikke.
hvor jeg før fik fejlmeddelelsen: ODBC: kaldet lykkedes ikke. [Microsoft][odbc SQL Server Driver][Sql Server]Could not run BEGIN TRANSACTION in database ‘bilag’ because the database is read-only.
Jeg har oprettet en ny Access-database og har importeret abeller, forespørgsler, formularer, rapporter, makroer og moduler fra den oprindelige Access-database, men jeg får igen fejlen: ODBC: Tilslutningen til "Fugl" lykkedes ikke. ODBC: Tilslutningen til "Fugl" lykkedes ikke.
når CurrentDb.QueryDefs("DynamsikPass").Execute bliver kaldt i koden.
Du har ikke tilfældigvis kendskab til et værktøj, der kan ekstrahere alt kildekoden i en Access-database, så man måske kan søge efter det "hemmelige" sted, hvor connectionstring bliver initialiseret?
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.