Կապված սեղանները կարող են ֆանտաստիկորեն օգտակար լինել (չնայած ոչ միշտ), հատկապես, երբ գործ ունեք պարբերաբար փոփոխվող արտաքին տեղեկատվության հետ: Բնորոշ օրինակ կարող է լինել այն դեպքը, երբ մատակարարը ձեզ հնարավորություն է տալիս մուտք ունենալ իրենց ընթացիկ ամսական գների ֆայլ: Բայց ի՞նչ է պատահում, երբ հաջորդ ամիս նրանք թողարկում են ֆայլը, և ֆայլի անունը փոխվում է «Գնացուցակ-01-01-2016» -ից «Գնացուցակ-01-02-2016»: Առաջին բանը, որ տեղի կունենա, ձեր հղումը կկոտրվի, այնպես որ դուք ստիպված կլինեք ձեռքով թարմացնել այն: Ամեն անգամ, երբ նրանք փոխում են ֆայլի անունը: Դա վերաբերում է նաև սեղանների անուններին (իհարկե): Կա՞ որևէ եղանակ `դա անել, արագ և հեշտությամբ, երբ հարցնեք: Ուրախ ենք, որ հարցրեցիք. Կարդացեք և պարզեք, թե ինչպես
Դեպքի վայր դնելը ՝ սցենարը
Այս հոդվածում ես կօգտագործեմ գեղարվեստական սցենար. Բայց համոզված եմ, որ դուք արագ կճանաչեք:
Ամեն ամիս Acme առևտուրը մեզ ուղարկում է թարմացված գնացուցակ ՝ օգտագործված բոլոր ծախսվող նյութերի համար DataNumen, Որպեսզի իմանանք, թե ամսվա ընթացքում ինչքան ենք ծախսելու ստացիոնարի վրա, մենք կապվում ենք այդ ֆայլի հետ մեր գրասենյակի կառավարման տվյալների բազայում:
Խնդիրն այն է, որ չնայած ֆայլի ձևաչափը մնում է նույնը, ֆայլի անունը փոխվում է ամեն ամիս։ Անցյալ ամիս այն «գրենական պիտույքների ծախսեր հունվար 2017.xls» էր, այս ամիս՝ «գրենական պիտույքների ծախսեր փետրվար 2017.xls»։
Փոփոխություն շատ չէ, համոզված եմ, որ կհամաձայնվեք, բայց եթե մենք չփորձենք ձեռքով վերանվանել ֆայլը (հին ֆայլը ճանապարհից դուրս հանելը կամ ջնջելը), կամ անցնենք գործընթաց կապել սեղանը Access- ում կապված սեղանի կառավարչի միջոցով:
Քանի որ մենք չէինք ուզում դա անել, մենք դրա փոխարեն ստեղծեցինք հետևյալ կոդը ՝ շատ ավելի հեշտ, որքան համոզված եմ, որ կտեսնեք.
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
Բացատրելով ծածկագիրը
Ինչպես տեսնում եք, մենք փոխանցում ենք (կապված) աղյուսակի անունը՝ նոր ֆայլի անվան հետ միասին, որին աղյուսակը պետք է կապվի։ Ֆայլի անունը պետք է ներառի ֆայլի ամբողջական ուղին։ Սկզբում կարող եք դժվարություններ ունենալ մի քանի հնարավոր խնդիրների դեպքում՝ գտնել «newConnect» փոփոխականում տեղադրելու համար միացման տողի ճիշտ ձևաչափը։ Չնայած կան բազմաթիվ աղբյուրներ ճիշտ ձևաչափը գտնելու համար, ես գտել եմ ամենահեշտ տարբերակներից մեկը՝ պարզապես նայել ընթացիկ կապված աղյուսակի միացման տողին։ Դա անելու համար պարզապես ավելացրեք հետևյալ տողը անմիջապես «Set objTableDef = objDB.TableDefs(tableName)» տողի տակ։
Debug.Print (objTableDef.Connect)
Դա կտպագրի առկա կապի տողը կոդերի խմբագրիչի կարգաբերման / անմիջապես պատուհանի մեջ (եթե դա արդեն տեսանելի չէ, սեղմեք CTRL-G VBA կոդի խմբագրիչի էկրանից ՝ կոդն գործարկելուց առաջ Անմիջական պատուհանի տեսանելիությունը փոխելու համար:
Նախազգուշացում
Ինչպես միշտ, մի մոռացեք, որ չնայած վերը նշված ծածկագրի հատվածը կօգնի ձեզ ժամանակ խնայել, երբ անհրաժեշտ է փոխել այն ֆայլը, որի հետ կապված է մի աղյուսակ, այն, ինչը չի կարող անել ՝ օգնելու ձեզ, եթե բախվում եք որևէ Մուտք գործեք ֆայլի վնաս, այնպես որ համոզվեք, որ պահուստավորում եք պահում և գիտեք, թե ուր դիմել, եթե մնացածը ձախողվի:
Հեղինակի ներածություն.
Mitchell Pond- ը տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում վերականգնել SQL վնասը և գերազանցել վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com