Əlaqədar cədvəllər fantastik dərəcədə faydalı ola bilər (əlbəttə ki, hər zaman olmasa da) – xüsusən də müntəzəm olaraq dəyişən xarici məlumatlarla məşğul olduğunuz zaman. Tipik bir nümunə, təchizatçının sizə cari aylıq qiymət faylına giriş imkanı verməsi ola bilər. Bəs gələn ay faylı verdikdə və faylın adı “Pricelist-01-01-2016”dan “Pricelist-01-02-2016”-ya dəyişdikdə nə baş verir? Baş verəcək ilk şey bağlantınız pozulacaq, ona görə də onu əl ilə yeniləməlisiniz. Hər dəfə faylın adını dəyişirlər. Bu, masa adlarına da aiddir (əlbəttə!). Bunu tez və asanlıqla etmək üçün bir yol varmı? Soruşmağınıza şadıq – oxuyun və necə olduğunu öyrənin...
Səhnənin qurulması - ssenari
Bu yazıda mən uydurma bir ssenaridən istifadə edəcəyəm – amma əminəm ki, siz tez başa düşəcəksiniz!
Hər ay Acme ticarəti bizə istifadə olunan bütün istehlak materialları üçün yenilənmiş qiymət siyahısını göndərir DataNumen. Hər ay stasionar mallara nə qədər xərcləyəcəyimizi bilmək üçün ofis idarəetmə məlumat bazamızda həmin faylı əlaqələndiririk.
Problem ondadır ki, faylın formatı eyni qalsa da, fayl adı hər ay dəyişir. Keçən ay "dəftərxana xərcləri Yanvar 2017.xls", bu ay "dəftərxana xərcləri Fevral 2017.xls" idi.
Əminəm ki, razılaşacaqsınız, lakin biz faylın adını əl ilə dəyişdirmək (köhnə faylı yoldan çıxardıqdan və ya sildikdən sonra) çətinlik çəkməsək və ya Access-də əlaqəli cədvəl meneceri vasitəsilə cədvəlin yenidən əlaqələndirilməsi.
Bunu etmək istəmədiyimiz üçün bunun əvəzinə bunu etmək üçün aşağıdakı kodu yaratdıq – daha asan görəcəyinizə əminəm:
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
Kodun izahı
Gördüyünüz kimi, (əlaqəli) cədvəl adını cədvəlin əlaqələndirilməli olduğu yeni faylın adı ilə birlikdə ötürürük. Fayl adı fayla gedən tam yolu özündə əks etdirməlidir. Başlanğıcda çətinlik çəkə biləcəyiniz potensial sahələrdən biri "newConnect" dəyişəninə yerləşdirmək üçün əlaqə sətrinin düzgün formatını əldə etməkdir. Düzgün formatı tapmaq üçün çoxlu mənbələr olsa da, ən asan yollardan biri sadəcə mövcud əlaqəli cədvəlin əlaqə sətrinə baxmaqdır. Bunu etmək üçün sadəcə "Set objTableDef = objDB.TableDefs(tableName)" sətrinin birbaşa altına aşağıdakı sətri əlavə edin:
Debug.Print (objTableDef.Connect)
Bu, mövcud əlaqə xəttini kod redaktorunun sazlama/dərhal pəncərəsinə çap edəcək (əgər bu artıq görünmürsə, kodu işə salmazdan əvvəl Dərhal pəncərənin görünməsini dəyişdirmək üçün VBA kod redaktoru ekranında CTRL-G düymələrini basın.
Xəbərdarlıq
Həmişə olduğu kimi, unutmayın ki, yuxarıdakı kod parçası cədvəlin əlaqəli olduğu faylı dəyişdirmək lazım olduqda vaxtınıza qənaət etməyə kömək edə bilsə də, hər hansı bir problemlə qarşılaşdığınız zaman onun edə bilməyəcəyi şey sizə kömək etməkdir. Fayl zədələnməsinə giriş, odur ki, ehtiyat nüsxələrini saxladığınızdan əmin olun və hər şey uğursuz olarsa, hara müraciət edəcəyinizi bilin.
Müəllif Giriş:
Mitchell Pond məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc SQL zədəsini təmir edin və excel bərpa proqram məhsulları. Ətraflı məlumat üçün ziyarət edin www.datanumen.com