Avatar billede knowit-mmp Nybegynder
01. december 2004 - 10:32 Der er 2 kommentarer og
1 løsning

Programmatiske oprettede lænkede tabeller

Jeg har oprettet en database der lænker til tabeller på en SQL server.

Disse styres fint via indstillinger i Access-databasen.

Men Jeg kan IKKE ændre data i de lænkede tabeller. jeg kan kun læse data, og det er skam også fint nok, men nogle data har behov for at blive ændret.

Den eneste måde hvorpå jeg kan få lov til at ændre i data er ved manuelt at oprette lænkerne i Access databasen.

Hvad gør jeg galt???

Metoden jeg har brugt til at vedligeholde lænkerne er fundet i utallige spørgsmål her på Eksperten så den virker rimeligt gennemtænkt....så hvad gør jeg galt?



Koden der opretter lænkerne til SQL databasen:

Function linkTables(strErrMSg As String) As Boolean
Dim strTblName As String
Dim strConn As String
Dim objDB As DAO.Database
Dim objRSSettings As DAO.Recordset
Dim objRSTables As DAO.Recordset
Dim objTbl As DAO.TableDef
 
    On Error GoTo errorhandler
 
  Set objDB = CurrentDb
  Set objRSSettings = objDB.OpenRecordset("tblSettings")
  Set objRSTables = objDB.OpenRecordset("tblLinkedTables")
                 
    strConn = "ODBC;"
    strConn = strConn & "Driver=SQL Server;"
    strConn = strConn & "Server=" & objRSSettings("Data Source") & ";"
    strConn = strConn & "DATABASE=" & objRSSettings("Initial Catalog") & ";"
    strConn = strConn & "UID=" & objRSSettings("UserId") & ";"
    strConn = strConn & "PWD=" & objRSSettings("Password") & ";"
 
    While Not objRSTables.EOF
     
      If (tblExist(objRSTables("LocalTableName")) = False) Then
         
          Set objTbl = objDB.CreateTableDef(objRSTables("LocalTableName"), dbAttachSavePWD, objRSTables("RemoteTableName"), strConn & "TABLE=" & objRSTables("RemoteTableName"))
          objDB.TableDefs.Append objTbl
     
      Else
         
          Set objTbl = objDB.TableDefs(objRSTables("LocalTableName"))
          objTbl.Connect = strConn & "TABLE=" & objRSTables("RemoteTableName")
          objTbl.RefreshLink
     
      End If
   
      objRSTables.MoveNext
   
    Wend
 
  linkTables = True
 
  strErrMSg = ""
 
before_exit:
    objRSSettings.Close
    objRSTables.Close
   
    Set objDB = Nothing
    Set objRSTables = Nothing
    Set objRSSettings = Nothing
   
  Exit Function

errorhandler:
  strErrMSg = Err.Description
  GoTo before_exit
 
End Function
01. december 2004 - 10:44 #1
Når du sammenkæder manuelt, kommer den så og spørger om unikt index?
Er der primærnøgle på alle tabeller?

Hvis der ikke er primærnøgle, vil Access nemlig kommer og spørge om unikt index, når man sammekæder manuelt og derved bliver redigering muligt. Men hvis tabellen sammenkædes med ovenstående metode, vil den ikke prompte for index'et og tabellen vil være låst for redigering.
Avatar billede knowit-mmp Nybegynder
07. februar 2006 - 16:47 #2
et svar
Avatar billede knowit-mmp Nybegynder
07. februar 2006 - 16:48 #3
takker
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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