Біз бұған дейін де айтқан болатынбыз, бірақ қайталанған жөн - байланысты кестелер бірнеше себептер бойынша сіздің мәліметтер базаңызда пайдалы болуы мүмкін. Байланыстырылған кестелердің бір үлкен кемшілігі - өнімділік - оларға деген сұраныстарды іске қосу, әсіресе олар Microsoft Access кестелері болмаса (яғни олар Excel, CSV немесе DBF файлдар). Олармен жұмыс баяу болуы мүмкін. Мұнымен жұмыс істеудің бірнеше әдісі бар - біз осында бір тәсілмен жұмыс істейміз, яғни байланыстырылған кестені жергілікті кестеге айналдыру. Әрине, мұны кестелерді көшіру / қою арқылы қолмен жасауға болар еді, бірақ егер сізде көп нәрсе болса, оны кодта орындау әлдеқайда оңай, сондықтан көрейік ...
Неліктен сіздің қажеттіліктеріңізді баяндау маңызды
Алдымен, кодты не істегіміз келетінін көрсетейік - мұны істеу бірінші кезекте кодты жасауды едәуір жеңілдетеді, сондықтан мен сізге кез-келген VBA кодын жасау туралы ойланған кезде осылай жасауды ұсынамын. , бұл сіздің мақсатыңызды нақтылауға көмектеседі:
«Байланыстырылған кестенің атауын ескере отырып, өнімділікті жақсарту үшін кестені жергілікті кесте ретінде дерекқорға импорттаңыз - сілтемені дерекқордан бір уақытта өшіріңіз»
Әдетте, сіз байланыстырылған кестені жергілікті кестеге түрлендіргенде, сіз сілтемені жойғыңыз келеді, бірақ төмендегі код үлгісінде біз сізге түпнұсқа сілтеме жасалған файлды сақтауға мүмкіндік бердік, бірақ осылайша жаңадан импортталған кесте сіздің сұраныстарыңыздағы байланыстырылған кестені алмастырмайды және т.с.с., сондықтан сіз жергілікті кесте беретін өнімділікті көре алмайсыз. Код қажет болған жағдайда жұмыс істейтініне ыңғайлы болғаннан кейін, әрқашан түпнұсқаны өшіруге кеңес береміз - ақыр соңында, сіз нақты кестені емес, тек оған сілтемені жойасыз.
Сақ болыңыз
Кодқа жетпес бұрын - тек абай болыңыз, а сілтемесі болса, көп нәрсе істей алмайсыз Access дерекқоры бүлінген - егер Access файлды оқи алмаса, оның оны импорттауы екіталай.
Сонымен - код бойынша ...
Sub MakeTableLocal(tableName As String, optional deleteOriginal As Boolean = True)
Dim DbPath As Variant, TblName As Variant
'get path of linked table
DbPath = DLookup("Database", "MSysObjects", "Name='" & tableName & "' And Type=6")
'Get the real name of the linked table (in case it has been given an alias in the link)
TblName = DLookup("ForeignName", "MSysObjects", "Name='" & tableName & "' And Type=6")
If IsNull(DbPath) Then
'Either a local table, or the wrong table name has been supplied, exit the sub
Exit Sub
End If
'delete linked table
If deleteOriginal Then
DoCmd.DeleteObject acTable, tableName
Else
'If we're not deleting the existing table we'll have to rename the imported table to avoid
'overwriting it etc
tableName = tableName & " - local"
End If
'import the table as a local, unlinked table
DoCmd.TransferDatabase acImport, "Microsoft Access", DbPath, acTable, TblName, tableName
End Sub
Код не істеп жатыр?

Енді бізде бұл мәліметтер бар, егер олар жарамды болса (яғни, сіз кестеге қате енгізілмеген кесте атауын енгізбеген болсаңыз), онда біз а) сілтемені жою (егер deleteOriginal True) күйіне орнатылып, кестені импорттайды.
Мұны істеу сізге көбінесе өнімділікті айтарлықтай жақсартуға мүмкіндік береді, егер сіз байланыстырылған кестелерді қолдансаңыз, мен сізге осы кестелерді жергілікті нұсқаларға жылжытудың қандай пайдасы әкелетінін тексеруге кеңес беремін - таң қалуыңыз мүмкін!
Автордың кіріспесі:
Митчелл Понд - деректерді қалпына келтіру бойынша сарапшы DataNumen, Соның ішінде деректерді қалпына келтіру технологиялары бойынша әлемдік көшбасшы болып табылатын Inc. жөндеу SQL Server файл және excel қалпына келтіру бағдарламалық жасақтама өнімдері. Қосымша ақпарат алу үшін кіріңіз WWW.datanumen.com