Access csatolt tábla csatolásmódosítás probléma
2015-10-24T21:30:06+02:00
2015-10-24T22:15:45+02:00
2022-08-09T20:15:29+02:00
belarnd
Van egy kisebb problémám. Az egyik adatbázist csatolt fájlal oldottam meg. Nagy lett a mérete így több fájlban vannak a táblák. (accdb) . A táblák egy "SYSTEM_CSAT_TABLAK" nevű táblában fel vannak sorolva, és onnan kiolvasható, melyik adatbázisban is vannak. Egy ini fájlal láttam el és amikor költözött az adatbázis csak az ini fájban át kellet írni a z elérési utat, a többit a program bejelentkezéskor automatikusan elintézte. A problémám ott kezdődött, amikor kitaláltam, hogy MS SQL szerverre is felrakom. az SQL szerverre csatolás működött is, de vissza már nem tudom kényszeríteni, mivel a SourceTableName (Amiben elé kerűlt a "dbo." ) nem módosítható, kidob hibával.

A kód :

Public Function CsatoltFile_ujracsatol(ByVal Kapcsolat As String, ByVal SQL_Serveren As Boolean) As Integer 'SYSTEM_CSAT_TABLAK alapján újarakreálja a csatlakozást, ha szükséges! 'Kapcsolat a fájlok esetén az útvonallal egyezik meg, az SQL esetén az SQL szerver nevével. 'SQL_Serveren ha true akkor az SQL szerveren van az adat ha false akkor az ACCDB fájlban! Dim rs As DAO.Recordset Dim s As String CsatoltFile_ujracsatol = 0 ' alapból 0 hiba! ' kipörgeti a SYSTEM_CSAT_TABLAK tartalmát, és az alapján átírja a csatolási útvonalakat! Ez tartalmazza mit melyik szerverröl vagy ACCDB fájlból vegye. Set rs = DBEngine(0)(0).OpenRecordset("SELECT SYSTEM_CSAT_TABLAK.* FROM SYSTEM_CSAT_TABLAK WHERE (((SYSTEM_CSAT_TABLAK.CSakSQL)=False) AND ((SYSTEM_CSAT_TABLAK.Belsotabla)=False));") If rs.EOF = False Then Do While Not rs.EOF If SQL_Serveren = True Then s = "ODBC;DRIVER=SQL Server;UID=" & rs!UID & ";PWD=" & Nz(rs!PW, "") & ";Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=" & rs!Database & ";SERVER=" & Kapcsolat ' A csatolási útvonal eleje: If TBL_Connect_atir(rs!TBL_name, s) = False Then CsatoltFile_ujracsatol = CsatoltFile_ujracsatol + 1: Debug.Print rs!TBL_name Else Kapcsolat = Trim(Kapcsolat) If Not Mid(Kapcsolat, Len(Kapcsolat), 1) = "" Then Kapcsolat = Kapcsolat & "" s = "MS Access;DATABASE=" & Kapcsolat If TBL_Connect_atir(rs!TBL_name, s & rs!Accdb) = False Then CsatoltFile_ujracsatol = CsatoltFile_ujracsatol + 1 Debug.Print rs!TBL_name, s & rs!Accdb End If End If rs.MoveNext Loop rs.Close End If Set rs = Nothing End Function ------------------- Public Function TBL_Connect_atir(ByVal TáblaNév As String, ByVal ConnectSTR As String) As Boolean ' Kipörgetoi a táblákat, és kicseréli a megadott elérési útját! Ha sikerűl akkor true! Dim M As Integer Dim dbs As Database Set dbs = CurrentDb On Error GoTo 118: TBL_Connect_atir = False For M = 0 To dbs.TableDefs.count - 1 ' Az aktuális adatbázis összes cstolt tábláját végiglistázza! If dbs.TableDefs(M).Name = TáblaNév Then ' ha a Táblanévvel megegyezik dbs.TableDefs(M).Connect = ConnectSTR If (SQLserveren = False) And (dbs.TableDefs(M).SourceTableName <> dbs.TableDefs(M).Name) Then dbs.TableDefs(M).SourceTableName = dbs.TableDefs(M).Name ' SQL csatolásbol visszatérés! dbs.TableDefs(M).RefreshLink If dbs.TableDefs(M).Connect = ConnectSTR Then TBL_Connect_atir = True M = dbs.TableDefs.count - 1 End If 115 Next M dbs.Close Exit Function 118 Debug.Print Err.Description If dbs.TableDefs.count - 1 = M Then dbs.Close Exit Function Else Resume 115 End If End Function Szerverre rakás: If CsatoltFile_ujracsatol("servername", true) > 0 Then 'Betöltési hiba, kilép a programból... End If vissza az ACCDB fájlokba: If CsatoltFile_ujracsatol("v:\ss", false) > 0 Then 'Betöltési hiba, kilép a programból... End If
Mutasd a teljes hozzászólást!
Próbáld nem frissíteni, hanem törölni és újra csatolni.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd