ODBC Call Failed

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
dionisis71
Δημοσιεύσεις: 237
Εγγραφή: 04 Μάιος 2009 22:15
Επικοινωνία:

ODBC Call Failed

Δημοσίευση από dionisis71 » 08 Δεκ 2011 16:22

Καλησπέρα

Με το πάτημα ενός κουμπιού στην Access, καλώ μια stored procedure στον SQL Server όπου και:

α) με ένα SSIS package ανεβαίνουν κάποιοι txt πινακες.
β) παίρνω full backup την SQL Database
γ) τρέχω κάποια Update και Insert into Statements και ενημερώνω τους πίνακες με καινούρια στοιχεία.

Για λόγους ασφαλείας θέλω να μπορώ να κάνω restore το backup που πήρα, μέσω ενος κουμπιου της Access. To restore ολοκληρώνεται κανονικά και το πρόβλημα έρχεται όταν πάω να ανοίξω έναν linked πινακα. Το error που παίρνω είναι odbc call failed, communication link failure. Αυτό που συμβαινει είναι ότι το status των linked tables δεν έχει ενημερωθεί για την ολοκλήρωση του restore. Έχω δοκιμάσει με κώδικα να κάνω refresh links ή και να ξαναδημιουργήσω τα DSN αλλά πέφτω στο ίδιο πρόβλημα. Εάν κλείσω την Access και την ξανανοίξω παίζει κανονικά...

Ευχαριστώ

Άβαταρ μέλους
georiege
Δημοσιεύσεις: 79
Εγγραφή: 09 Ιούλ 2007 11:29
Επικοινωνία:

ODBC Call Failed

Δημοσίευση από georiege » 22 Δεκ 2011 13:55

Σίγουρα δεν χρειάζεται να ξαναδημιουργήσεις τα DSN. Μάλλον δεν γίνετε σωστά το update στους linked πίνακες. Στείλε τον VBA κώδικα που κάνεις refresh τους linked πίνακες να δούμε.
I do this for Aiur

http://www.aspx.gr

Άβαταρ μέλους
dionisis71
Δημοσιεύσεις: 237
Εγγραφή: 04 Μάιος 2009 22:15
Επικοινωνία:

ODBC Call Failed

Δημοσίευση από dionisis71 » 22 Δεκ 2011 15:16

Έχω δοκιμάσει αρκετά από την ημέρα που δημιούργησα το thread χωρις όμως αποτέλεσμα. Το τελευταίο που δοκίμαζα..

Κώδικας: Επιλογή όλων

Public Function RefreshODBC() As Boolean
On Error GoTo ERR_RefreshODBC

RefreshODBC = False

Static LinkName, ReLink
LinkName = GetCurLinkName()

Dim db As DAO.Database
Dim tb As DAO.TableDef

Set db = CurrentDb

For Each tb In db.TableDefs
    If Left(tb.Connect, 4) = "ODBC" And (Right(tb.Connect, 2) = "HM") Then
        If LinkName = "Productive" Then
            tb.Connect = "ODBC;DSN=IHAL_HM;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=HM"
            tb.RefreshLink
        ElseIf LinkName = "Test" Then
            tb.Connect = "ODBC;DSN=HLC_HM;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=HM"
            tb.RefreshLink
        End If
    ElseIf Left(tb.Connect, 4) = "ODBC" And (Right(tb.Connect, 10) = "UploadText") Then
        If LinkName = "Productive" Then
            tb.Connect = "ODBC;DSN=IHAL_UPL;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=UploadText"
            tb.RefreshLink
        ElseIf LinkName = "Test" Then
            tb.Connect = "ODBC;DSN=HLC_UPL;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=UploadText"
            tb.RefreshLink
        End If
    End If
Next tb

Set db = Nothing
RefreshODBC = True

Exit Function

ERR_RefreshODBC:
If ERR.Number = 3146 Then
Else
    MsgBox ERR.Number
End If

Exit Function

End Function
Ευχαριστώ

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης