Kā ātri atjaunināt saistīto tabulu, kad tiek mainīts ārējā faila nosaukums

Kopīgot tūlīt:

Saistītās tabulas var būt fantastiski noderīgas (lai gan, protams, ne visu laiku), it īpaši, ja jums ir darīšana ar ārēju informāciju, kas regulāri mainās. Tipisks piemērs varētu būt gadījums, kad piegādātājs dod jums piekļuvi pašreizējai ikmēneša cenu datnei. Bet kas notiek, kad viņi izdod failu nākamajā mēnesī, un faila nosaukums mainās no “Cenrādis-01-01-2016” uz “Cenrādis-01-02-2016”? Pirmā lieta, kas notiks, ir jūsu saite pārtrauks, tāpēc jums tā būs manuāli jāatjaunina. Katru reizi, kad viņi maina faila nosaukumu. Tas attiecas arī uz tabulu nosaukumiem (protams!). Vai jūs varat to izdarīt ātri un viegli? Mēs priecājamies, ka jautājāt - lasiet un uzziniet, kā…

Ainas iestatīšana - scenārijs

Saistītais tabulas pārvaldnieksŠajā rakstā es izmantošu izdomātu scenāriju, bet es esmu pārliecināts, ka jūs to ātri atpazīsit!

Katru mēnesi Acme trading mums nosūta atjauninātu cenu sarakstu par visiem palīgmateriāliem, kas izmantoti DataNumen. Lai mēs zinātu, cik daudz mēs katru mēnesi tērēsim stacionāriem, mēs saistāmies ar šo failu mūsu biroja vadības datu bāzē.

Mainiet faila nosaukumuProblēma ir tā, ka, neskatoties uz to, ka faila formāts paliek nemainīgs, faila nosaukums mainās katru mēnesi. Pagājušajā mēnesī tas bija “stacionārs costs Jan 2017.xls ”, šomēnes tas ir“ stacionārs costs 2017. gada februāris. xls ”.

Nav daudz izmaiņu. Esmu pārliecināts, ka piekritīsit, taču, ja vien mums neizdodas manuāli pārdēvēt failu (kad veco failu esam pārvietojuši no ceļa vai izdzēsuši), vai arī atkārtoti saistot tabulu, izmantojot saistīto tabulas pārvaldnieku programmā Access.

Tā kā mēs nevēlējāmies to darīt, mēs izveidojām šādu kodu, lai to izdarītu - daudz vieglāk, jo esmu pārliecināts, ka redzēsiet:

Public Sub UpdateLink (tableName As String, newFileName As String)
    Dim objDB As Database
    Dim objTableDef As TableDef
    Dim newConnect as String
    
    Set objDB = CurrentDb
    Set objTableDef = objDB.TableDefs(tableName)

    'format of the connection string in our case, for example, is:
    ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type
    newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName
    objTableDef.Connect = newConnect
    objTableDef.RefreshLink

    Set objTableDef = Nothing
    Set objDB = Nothing
End Sub

Koda izskaidrošana

Kā redzat, mēs nododam (saistītās) tabulas nosaukumu kopā ar jaunā faila nosaukumu, ar kuru tabulai jābūt saistītai. Faila nosaukumā jāiekļauj pilns faila ceļš. Viena potenciālā joma, ar kuru jūs varat cīnīties start iegūst pareizu savienojuma virknes formātu, ko ievietot mainīgajā “newConnect”. Lai gan pareizā formāta uzzināšanai ir daudz avotu, viens no vienkāršākajiem, ko esmu atradis, ir vienkārši apskatīt pašreizējās saistītās tabulas savienojuma virkni. Lai to izdarītu, vienkārši pievienojiet šo rindu tieši zem rindas “Set objTableDef = objDB.TableDefs (tableName)”:

Debug.Print (objTableDef.Connect)

Tas izdrukās esošo savienojuma virkni kodu redaktora atkļūdošanas / tūlītējā logā (ja tas vēl nav redzams, pirms koda palaišanas VBA kodu redaktora ekrānā nospiediet CTRL-G, lai pārslēgtu loga Tūlītēja redzamību.

Brīdinājums

Kā vienmēr, neaizmirstiet, ka, lai gan iepriekš minētais koda fragments var palīdzēt ietaupīt laiku, kad jāmaina fails, ar kuru ir saistīta tabula, tas nevar palīdzēt, ja rodas kādi Piekļuve faila bojājumiem, tāpēc noteikti saglabājiet dublējumkopijas un ziniet, kur vērsties, ja viss pārējais neizdodas.

Autora ievads:

Mičels Dīķis ir datu atkopšanas eksperts DataNumen, Inc., kas ir pasaules līderis datu atkopšanas tehnoloģiju, tostarp salabot SQL bojājumus un Excel atkopšanas programmatūras produkti. Lai iegūtu vairāk informācijas, apmeklējiet vietni www.datanumen. Ar

Kopīgot tūlīt:

Komentāri ir slēgti.