Ñâÿçü òàáëèö MSSQL ñ áàçîé Access áåç èñïîëüçîâàíèÿ "äèñïåò÷åðà ñâÿçàííûõ òàáëèö"
|
|
Ïîíåäåëüíèê, 21 ßíâàðÿ 2019 ã. 12:25
+ â öèòàòíèê
Äîáðîãî äíÿ.
Íà÷íó èç äàëåêà. Åñòü ïðîåêò accecc, êîòîðîé ÿ ïåðåäåëûâàþ èç *.adp ïîä ñîâðåìåííûé *.accdb. Ôîðìû, êîä, âñå óæå ïåðåíåñ è àäàïòèðîâàë, òàáëèöû ñ sql ïðèâÿçàë ÷åðåç äèñïåò÷åð ñâÿçàííûõ òàáëèö. Îäíàêî, åñòü òàêàÿ ïðàêòèêà, äîðàáîòêè ïðîãðàììû îòëàæèâàòü íà òåñòîâîé áàçå sql, è äëÿ ñìåíû ñåðâåðà ïðèõîäèòñÿ ïåðåëèíêîâûâàòü îêîëî ñîòíè òàáëèö ÷åðåç äèñïåò÷åð ñâÿçàííûõ òàáëèö. Èç ýòîãî ñëåäóåò òðè ïðîáëåìû:
1. Íàäî ñäåëàòü ìèíèìóì 100 êëèêîâ ìûøêîé â ïðîöåññå ïåðåëèíêîâêè (íå ïðîáëåìà, íî ïàðèò)
2. Âòîðàÿ, âûòåêàþùàÿ èç ïåðâîé, ñðåäè òàáëèö âñòðå÷àþòñÿ ïðåäñòàâëåíèÿ, êîòîðûì òðåáóåòñÿ ïðèíóäèòåëüíî óêàçàòü ïåðâè÷íûé êëþ÷. È åñòü ìîìåíò êîãäà ìîæíî óêàçàòü "íå âåðíûé" êëþ÷, ïðîñòî ïî çàïàðêå (ÿ äàæå ïðåäñòàâëåíèÿ íå ïðåäñòàâëþ íà ÷òî ýòî ìîæåò ïîâëèÿòü)
3.  ïðîöåññå ïåðåëèíêîâêè access ñáðàñûâàåò çíà÷åíèÿ ïåðâè÷íûõ êëþ÷åé äëÿ ïðåäñòàâëåíèé. Òóò ÿ ïîÿñíþ äëÿ ÷åãî ïåðâè÷íûé. Ëüâèíàÿ äîëÿ ôîðì â êà÷åñòâå èñòî÷íèêà çàïèñåé èñïîëüçóþò ýòè ïðåäñòàâëåíèÿ è ñàì access âûäàåò Run-time error '3326': Îáúåêò Recordset íå ÿâëÿåòñÿ îáíîâëÿåìûì, ïîïðîñòó íå ïîëó÷àåòñÿ ïðàâèòü çíà÷åíèÿ. À âîò åñëè íàçíà÷èòü ïåðâè÷íûé êëþ÷, òî ïðàâêè ïðîõîäÿò.
Ïåðåëèíêîâàòü ìîæíî â ðó÷íîì ðåæèìå è êîäîì vba ïîïðàâèâ òàáëèöó MSysObjects, ïî ïðè ýòîì ïåðâè÷íûå êëþ÷è "ñëåòàþò".
Ïåðåëèíêîâûâàþ òàêèì îáðàçîì
| + |
Public Sub RefreshTablesLinks2 Dim tdf, cDB, strODBC Dim i As Integer Set cDB = CurrentDb Set tdf = cDB.TableDefs strODBC = "DSN=DSNname;Description=DSNname;Trusted_Connection=Yes;APP=Microsoft Office;DATABASE=testdb;" On Error GoTo Err_handler For i = 0 To tdf.Count - 1 If tdf(i).Connect <> "" Then tdf(i).Connect = strODBC tdf(i).RefreshLink End If Next Err_handler: 'MsgBox Err.Description Resume Next End Sub
|
Ñîáñòâåííî âîïðîñ, åñòü ëè ñïîñîá êîìàíäîâàòü ïðîöåññîì ëèíêîâêè ÷åðåç vba, êàê äèñïåò÷åð ñâÿçàííûõ òàáëèö, ÷òî áû ìîæíî áûëî ãèáêî óïðàâëÿòü ïðîöåññîì è âîîáùå äîñòèãíóòü ïîëíîé àâòîìàòèçàöèè?
https://www.sql.ru/forum/1307980/svyaz-tablic-mssql-s-bazoy-access-bez-ispolzovaniya-dispetchera-svyazannyh-tablic
-
Çàïèñü ïîíðàâèëàñü
-
0
Ïðîöèòèðîâàëè
-
0
Ñîõðàíèëè
-