Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Problem z obsługą istniejącej bazy Access przez VB 6
enzo_molinari
początkujący VBEK




Typ: neutral
Postów: 15
Zarejestrowany: Apr 2005
Problem z obsługą istniejącej bazy Access przez VB 6

Mój VB a ściślej kontrolki Data i Adodc nie chcą podłączyć się do bazy młodszej od Access 97. Problem w tym, że muszę dokonać przetworzenia danych na bazie już istniejącej stworzonej w Access 2002. VB wyświetla komunikat, że nie zna formatu tej bazy i pokazuje błąd. NIECH MI KTOŚ POMOŻE!!! Kupiłem już piątą książkę i nic! Tego nikt nie opisuje!

07-04-2005 20:15
Pokaż profil enzo_molinari  Wyślij email do enzo_molinari        766580
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Sorry to będzie trochę długie wypracowanie...

DATA CONTROL - DAO
VB 6 posiada Add-Ins VB  Visual Data Manager, który  ma możliwość tworzenia bazy danych również w wersji Access 2.0. jak i otwierania. Można też zaprojektwać przy pomocy tego narzędzia sobie formę do edycji bazy (zaznaczam, że mam bazę zawierającą tylko tabele):

- Trzeba  otworzyć nowy projekt.
- W Menu Add-Ins otworzyć Visual Data Manager
- W Menu File otworzyć wskazaną mdb
- Zaznaczyć w ToolBar "Use Data Control on New Form" (jeśli nie jest zaznaczone)
- Menu/Utility wybrać Data Form Designer
- Wpisać nzwę formy i wybrać np. tabele jako RecordSource
- Potem Build
- Forma zostanie dołączona do projektu
- W Project/Refrences zostanie dodana biblioteka DAO w wersji chyba najnowszej jaka jest na komputerze.
- Jeśli zostanie dodane DAO 3.6 (Jet 4.0) wówczas właściwości Connect kontrolki Data będzie mogła być ustawiona na Access 2000 ( co nie przeszkadza otwarciu bazy jak można przeczytać w artykułach załączonych poniżej):

- Jeśli chcemy ja ustawić na Access, należy najpierw  zmienić referencje w projekcie na DAO 3.51 i potem właścwiość Connect kontrolki Data na Access
- Kod tej formy może posłużyć do dalszych "rozważań". Oczywiście kod nie jest doskonały i tak na przykład aby dodać rekord należy najpierw wybrać Add potem wpisać dane, następnie Update, bez wybrania najpierw  Add jest komunikat o błedzie. Trzeba sobie ten kod trochę poprawić blokują przyciski itd....


ADODC CONTROL - ADO

Natomiast, jeśli chodzi o kontrolkę ADODC to można za jej pomocą połaczyć się do bazy Access 2.0, ale tylko przy pomocy  Microsoft.Jet.OLEDB.4.0 !!!!!  (patrz niżej Jet OLEDB:Engine Type).

Przy czym zaznaczam, że mam Windows XP i Jet 4.0 Service Pack 7, chyba  (Service Pack są różne dla różnych Systemów operacyjnych). Połączenie ustawiamy w Porperty Page kontrolki. W projekcie References doMicrosoft ActiveX Data objects 2.1 (lub wyżej - od tej wersji jest Jet 4.0) .
Nic nie stoi na przeszkodzie, aby sobie zainstalować Jet 4.0 na komputerze, dla sytemu Windows 98 też, jesli taki masz, bo w XP jest standard ADO 2.5 i Jet4.
Trzeba tylko pamiętać, że dla Mac_typ.exe począwszy chyba od wersji 2.5 aparat Jet trzeba instalować osobno

Konwersja

Ponadto mam zebrane takie materiały
1. Jeśli chodzi o Microsoft Jet 4.0 to jest właściwość Engine Type, która jest ściśle związana z wersją bazy danych i tak czytamy na stronie

http://support.microsoft.com/kb/q230501/

Jet OLEDB:Engine TypeJet x.x Format MDB Files
1JET10
2JET11
3JET2X
4JET3X
5JET4X

Tutaj ładne zestawienie wersje biblioteki, chociaż odradzają posługiwania się konwertującymi dll:
http://people.fm.uniba.sk/balaz/jet_version.htm

a na stronie http://www.kbalertz.com/kb_178880.aspx jest informacja (wprawdzie dla Jet 3 ) że można otwierać bazę bez  konwersji :
The following table illustrates how you can use database files and objects among different versions of Microsoft Jet.
                            Jet Version
                --------------------------------
                1.0  1.1  2.0  2.5  3.0  3.5
  ----------------------------------------------
  MDB Version
  -----------
  1.0            Y    Y    Y    Y    Y    Y
  1.1            N    Y    Y    Y    Y    Y
  2.0            N    N    Y    Y    Y    Y
  3.0            N    N    N    N    Y    Y
   

A "Y" indicates that you can use the database without conversion

   
2. Przykład konwersji przy pomocy JRO  Microsoft Jet and Replication Objects przykład ze strony:
http://www.motobit.com/tips/detpg_ConvertMDB/ , czy skuteczny nie wiem nie mam przykładu bazy w wersji Access 20, może podeślij jakiś&#8230;

Convert from any MDB format to Access2000 format (Engine type 5) :

Const Jet10 = 1
Const Jet11 = 2
Const Jet20 = 3
Const Jet3x = 4
Const Jet4x = 5

DoConvertMDB "C: \dataMyDB97.MDB", "C: \dataMyDB2000.MDB", Jet4x

Sub DoConvertMDB(SourceDB, DestDB, Format)
    Dim Engine
    Set Engine = CreateObject("JRO.JetEngine" )
    Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SourceDB, _
      "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=" & Format & ";Data Source=" & DestDB
End Sub

Using ADO and the Connection object
conn.Properties("JET OLEDB:Engine Type" )

the return value is a little different (I know, I know...)
' Type = Return Value
' Unknown = 0
' Microsoft Jet 1.0 = 1
' Microsoft Jet 1.1 = 2
' Microsoft Jet 2.0 = 3 Access 2.0
' Microsoft Jet 3.x = 4 Access 97
' Microsoft Jet 4.x = 5 Access 2000+
' dBASE III = 10
' dBASE 4 = 11
' dBASE 5 = 12
' Excel 3# = 20
' Excel 4# = 21
' Excel 5# = 22
' Excel 8# = 23
' Excel 9# = 24
' Exchange 4 = 30
' Lotus WK1 = 40
' Lotus WK3 = 41
' Lotus WK4 = 42
' Paradox 3.x = 50
' Paradox 4.x = 51
' Paradox 5.x = 52
' Paradox 7.x = 53
' Text 1.x = 60
' Html 1.x = 70

3. O konwersji do Access 97:
http://www.experts-exchange.com/Databases/MS_Access/Q_11661538.html
You can create a DOS batch file that starts Access using the /convert parameter...

Convert.bat...
msaccess.exe c:sourcepathdatabase1.mdb /convert  c:targetpathdatabase1.mdb

You'd still have to create the batch file and enter each file name.  But at least you could walk away when done.  Keep in mind - if your databases have code, they will need to be opened, compiled and tested before you can assume they are ready in the new version.

This will work just fine... with one addition.

Remember to specify the START /W switch in the Batch file start of Access.  Otherwise, the DOS batch will attempt to start multiple copies of Access, with ugly results.  (The Start /w tells the BAT file to start this Windows program, and wait until it is done before continuing).

Start /w msaccess.exe c:sourcepathdatabase1.mdb /convert c:targetpathdatabase1.mdb

Komentarz:

BrianWren - Your solution may be better, but I haven't been able to work out the necessary parameters, and need to start this conversion *now*, so...

4. Dla Access 2000:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q237313 - ACC2000: Conversion White Paper Available in Download Center

5. Dla Access 97
http://support.microsoft.com/?id=151193 - ACC2000: Conversion White Paper Available in Download Center
http://support.microsoft.com/?id=160949 - ACC97: Where to Find Conversion Information for Microsoft Access 97
6. http://www.bris.ac.uk/is/selfhelp/documentation/acc97-r1/acc97-r1.htm - Converting Access 2 databases to Access 97 (frozen document)

http://www.microsoft.com/AccessDev/Articles/Acc97Cnv.htm
Microsoft Access 97 Conversion Issues


7. Konwerter dla Access 2003 (z 2.0)
http://www.microsoft.com/downloads/details.aspx?displaylang=pl&FamilyID=91c944f8-f3ab-41e9-902a-2255a66e1c4a

Ze strony http://support.microsoft.com/kb/303528 wynika, że:

Poniżej znajduje się tabela aktualnie dostępnych formatów baz danych aparatu Jet i bibliotek DLL (jeśli są używane) służących do tłumaczenia odwołań do danego formatu w przypadku korzystania z klienta aparatu Microsoft Jet 4.0:

Wersja  Access Format bazy danych aparatu Jet  Używana biblioteka DLL
-------------------------- ------------------------------ ------------------------
Access 2.0    Jet 2.0 msrd2x40.dll
Access 95    Jet 3.0 msrd3x40.dll
Access 97    Jet 3.0 msrd3x40.dll
Access 2000    Jet 4.0 Brak
Access 2002    Jet 4.0 Brak


8. Tu jest obrazek pkazujący związki pomiędzy wersjami a Jet
http://www.fmsinc.com/tpapers/dao/

9. Tu jakie nastąpiły zmiany w systemie zabezpieczeń:
http://support.microsoft.com/default.aspx?scid=%2Fsupport%2FAccess%2FContent%2FSECFAQ.asp#_Toc493299662

10

http://support.microsoft.com/default.aspx?scid=%2Fsupport%2FAccess%2FContent%2FSECFAQ.asp#_Toc493299667


11. Microsoft Access 2000 Migration Guide - doc
ist.ctech.ac.za/home/documents/migration/access.doc

Visual data Manager wyprobowałam, ADODC też, pozostałe konwersje nie miałam potrzeby....
Nie wiem czy to wszystko Ci pomoże....

[Post edytowany dnia 08-04-2005 09:19 przez karolinavb]


_____________________________________________
Karolina

08-04-2005 08:36
Pokaż profil karolinavb  Wyślij email do karolinavb   
enzo_molinari
początkujący VBEK




Typ: neutral
Postów: 15
Zarejestrowany: Apr 2005

Niestety nie mogę postąpić tak jak mi radzisz, gdyż VISUAL DATA MENAGER po próbie otwarcia bazy access w menu file - wyświetla błąd Unrecognized data format error 3343. Bazę przekonwertowaną do starszego formatu otwiera bez problemu.

Może jest jakiś inny sposób?

08-04-2005 09:18
Pokaż profil enzo_molinari  Wyślij email do enzo_molinari        766580
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Przeczytaj uzupełnienie tej wypowiedzi wobec tego ADODC.
Ale z numeru błedu wynika, że Twoja baza jest raczej w formacie Access 2000, a nie Access 2.0 ????
A jesli tak jest i chcesz użyć Visual Data Manager to poprawki opisane sa na stronie:
http://support.microsoft.com/default.aspx?scid=kb;en-us;252438

Ale jeśli to jest jednak format Access 2000 to musisz mieć Jet 4.0 i DAO 3.6, aby otworzyć taka bazę w ogóle.

[Post edytowany dnia 08-04-2005 09:34 przez karolinavb]


_____________________________________________
Karolina

08-04-2005 09:23
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1