znaczacy > comp.* > comp.bazy-danych.msaccess

pawel (20.11.2009, 12:11)
Witam
Zrobilem bazę na kompie z access 2007 działającym na windows vista, gdy
przeniosłem ja na kompa z xp wyświetla się komunikat o złej wersji plików
msador15.dll i msado15.dll (oczekiwana wersja 6).
Czy można "pokazać" programowi gdzie są poprawne pliki?
W jaki sposób można naprawić ten problem?

Dziękuję za pomoc
Paweł
Krzysztof Pozorek (20.11.2009, 16:28)
(...)
> Zrobilem bazę na kompie z access 2007 działającym na windows vista,gdy
> przeniosłem ja na kompa z xp wyświetla się komunikat o złej wersji plików
> msador15.dll i msado15.dll (oczekiwana wersja 6).
> Czy można "pokazać" programowi gdzie są poprawne pliki?


Tak, należy wejść do menu Narzedzia/Referencje i tam odznaczyć błędną
wersję i podłączyć dobrą.

K.P.
pawel (23.11.2009, 10:12)
Znalazłem rozwiązanie programowe i wstawiłem je do form open formularza
"startowego"

Function FixUpRefs()
Dim loRef As Access.Reference
Dim intCount As Integer
Dim intX As Integer
Dim blnBroke As Boolean
Dim strPath As String

On Error Resume Next

'Count the number of references in the database
intCount = Access.References.Count

'Loop through each reference in the database
'and determine if the reference is broken.
'If it is broken, remove the Reference and add it back.
Debug.Print "----------------- References found -----------------------"
Debug.Print " reference count = "; intCount

For intX = intCount To 1 Step -1
Set loRef = Access.References(intX)
With loRef
Debug.Print " reference = "; .FullPath
blnBroke = .IsBroken
If blnBroke = True Or Err <> 0 Then
strPath = .FullPath
Debug.Print " ***** Err = "; Err; " and Broke = "; blnBroke
With Access.References
.Remove loRef
Debug.Print "path name = "; strPath
.AddFromFile strPath
End With
End If
End With
Next
'''Access.References.AddFromFile "C:\Program Files\Common
Files\Microsoft Shared\DAO\dao360.dll"

Set loRef = Nothing

' Call a hidden SysCmd to automatically compile/save all modules.
Call SysCmd(504, 16483)
End Function

Function AddRefs()
Dim loRef As Access.Reference
Dim intCount As Integer
Dim intX As Integer
Dim blnBroke As Boolean
Dim strPath As String

On Error Resume Next

'Loop through each reference in the database
'Add all references
Debug.Print "----------------- Add References -----------------------"

With Access.References
.AddFromFile "C:\Program Files\Common Files\Microsoft
Shared\DAO\dao360.dll"
.AddFromFile "C:\Program Files\Common Files\Microsoft
Shared\VBA\VBA6\vbe6.dll"
.AddFromFile "C:\Program Files\Microsoft
Office\Office\msacc9.olb"
.AddFromFile "C:\Program Files\Common
Files\System\ado\msado15.dll"
.AddFromFile "C:\Program Files\Common
Files\System\ado\msado25.tlb"
.AddFromFile "C:\Program Files\Common
Files\System\ado\msadox.dll"
.AddFromFile "C:\WINNT\System32\stdole2.tlb"
.AddFromFile "C:\WINNT\System32\scrrun.dll"
End With

' Call a hidden SysCmd to automatically compile/save all modules.
Call SysCmd(504, 16483)
End Function

Użytkownik "Krzysztof Pozorek" <access> napisał w wiadomości
news:149f
(...)
> Zrobilem bazę na kompie z access 2007 działającym na windows vista, gdy
> przeniosłem ja na kompa z xp wyświetla się komunikat o złej wersji plików
> msador15.dll i msado15.dll (oczekiwana wersja 6).
> Czy można "pokazać" programowi gdzie są poprawne pliki?


Tak, należy wejść do menu Narzedzia/Referencje i tam odznaczyć błędną
wersję i podłączyć dobrą.

K.P.
Krzysztof Naworyta (23.11.2009, 11:39)
pawel wrote:

| Zrobilem bazę na kompie z access 2007 działającym na windows vista,
| gdy przeniosłem ja na kompa z xp wyświetla się komunikat o złej
| wersji plików msador15.dll i msado15.dll (oczekiwana wersja 6).
| Czy można "pokazać" programowi gdzie są poprawne pliki?
| W jaki sposób można naprawić ten problem?

Ponownie pytam:
Dlaczego korzystasz z tak starych bibliotek???

Wszystkie obecne komputery mają ADO w wersji 2.8
A jak nie mają to powinny pobrać najnowszego MDAC'a
Krzysztof Naworyta (23.11.2009, 11:42)
pawel wrote:
| Znalazłem rozwiązanie programowe i wstawiłem je do form open
| formularza "startowego"

Rozumiem, że rozprowadzasz MDB/ADP a nie wersje skompilowane: MDE/ADE.
Bo w tym ostatnim przypadku programowa naprawa referencji nie jest możliwa.

Jednocześnie godzisz się na to, że każdy uzytkownik ma dostęp do Twojego
kodu...
pawel (23.11.2009, 12:16)
Szczerze mówiąc nie robiłem plików mde pewnie dlatego ze nie zastanawiałem
się nad tym skoro program działa tylko w jednym dziale firmy - lecz fakt
warto zmienić to na mde. Tylko jak się to robi?
Czy po skompilowaniu nie wystąpi problem z referencjami? Ponieważ ja mam
vistę a inne osoby mają xp i to właśnie tam wyświetlał się komunikat o złej
wersji plików msador15.dll i msado15.dll (oczekiwana wersja 6).

Dzięki za pomoc
Paweł
Użytkownik "Krzysztof Naworyta" <k.naworyta> napisał w
wiadomości news:khe1
[..]
pawel (23.11.2009, 12:16)
Jest to przykład skopiowany bezpośrednio z internetu
Użytkownik "Krzysztof Naworyta" <k.naworyta> napisał w
wiadomości news:k4d1
[..]
Krzysztof Naworyta (23.11.2009, 12:51)
pawel wrote:
| Jest to przykład skopiowany bezpośrednio z internetu

to powiedz jaki !

Wszystko da się przerobic na aktualne biblioteki i nie potrzebujesz stosowac
tak starego "śmiecia"!
pawel (23.11.2009, 13:17)
w jaki sposob moge sprawdzic jakiego mam mdac?

chodziło mi o ten przykład :
Function FixUpRefs()
Dim loRef As Access.Reference
Dim intCount As Integer
Dim intX As Integer
Dim blnBroke As Boolean
Dim strPath As String

On Error Resume Next

'Count the number of references in the database
intCount = Access.References.Count

'Loop through each reference in the database
'and determine if the reference is broken.
'If it is broken, remove the Reference and add it back.
Debug.Print "----------------- References found -----------------------"
Debug.Print " reference count = "; intCount

For intX = intCount To 1 Step -1
Set loRef = Access.References(intX)
With loRef
Debug.Print " reference = "; .FullPath
blnBroke = .IsBroken
If blnBroke = True Or Err <> 0 Then
strPath = .FullPath
Debug.Print " ***** Err = "; Err; " and Broke = "; blnBroke
With Access.References
.Remove loRef
Debug.Print "path name = "; strPath
.AddFromFile strPath
End With
End If
End With
Next
'''Access.References.AddFromFile "C:\Program Files\Common
Files\Microsoft Shared\DAO\dao360.dll"

Set loRef = Nothing

' Call a hidden SysCmd to automatically compile/save all modules.
Call SysCmd(504, 16483)
End Function

Function AddRefs()
Dim loRef As Access.Reference
Dim intCount As Integer
Dim intX As Integer
Dim blnBroke As Boolean
Dim strPath As String

On Error Resume Next

'Loop through each reference in the database
'Add all references
Debug.Print "----------------- Add References -----------------------"

With Access.References
.AddFromFile "C:\Program Files\Common Files\Microsoft
Shared\DAO\dao360.dll"
.AddFromFile "C:\Program Files\Common Files\Microsoft
Shared\VBA\VBA6\vbe6.dll"
.AddFromFile "C:\Program Files\Microsoft
Office\Office\msacc9.olb"
.AddFromFile "C:\Program Files\Common
Files\System\ado\msado15.dll"
.AddFromFile "C:\Program Files\Common
Files\System\ado\msado25.tlb"
.AddFromFile "C:\Program Files\Common
Files\System\ado\msadox.dll"
.AddFromFile "C:\WINNT\System32\stdole2.tlb"
.AddFromFile "C:\WINNT\System32\scrrun.dll"
End With

' Call a hidden SysCmd to automatically compile/save all modules.
Call SysCmd(504, 16483)
End Function

Użytkownik "Krzysztof Naworyta" <k.naworyta> napisał w
wiadomości news:1lv1
[..]
Krzysztof Naworyta (23.11.2009, 14:07)
pawel wrote:
| w jaki sposob moge sprawdzic jakiego mam mdac?

Ręcznie wystarczy sprawdzić z poziomu access'a czy masz dostęp do jakiej
wersji msado2#
(Microsoft ActiveX Data Objects 2.# Library)
Jak programowo? - nie wiem.

| chodziło mi o ten przykład :
| Function FixUpRefs()
(...)

Człowieku, nie chodzi mi o kawałek kodu naprawiający referencje, ale ten
gdzie odwołujesz się do obiektów msado15.
Ponieważ jednocześnie masz referencje do msado25, gotów jestem założyć się,
że jak odhaczysz msado15 nadal wszystko będzie się kompilowało (!)
A jeśli nie będzie, to ten konkretny niedziałający kod da się napisać
inaczej.

msado15 to biblioteka, z której korzystano (jak ktoś strasznie chciał, choć
była bardzo uboga) w access'97.
Od tamtego czasu minęła epoka!
pawel (23.11.2009, 16:13)
rozumiem i juz wywalam msado15

Użytkownik "Krzysztof Naworyta" <k.naworyta> napisał w
wiadomości news:fr51
[..]
Krzysztof Naworyta (23.11.2009, 17:37)
A spróbowałeś skompilować kod? Działa wszystko?

Poza tym co masz zaznaczone w referencjach?
To wszystko co wkleiłeś wraz z procedurą AddRefs() ?
Bo pewnie z większości tych rzeczy nie korzystasz...

Chociażby mieszanie ADO z DAO nie ma większego sensu.
Albo jedno albo drugie.
A w a'2007 znów nastąpił pełny powrót do DAO.

Po co Ci ADO i ADOX?
Podobne wątki