Va reamintesc ca desi este vorba de o problema pe care am vrut sa o rezolv pentru o problema particulara, am incercat ca rezolvarea sa fie valabila pentru orice BD. Pentru mine varianta FE/BE nu era viabila. Respectiv am nevoie de datele operate pe un alt PC care nu se afla in retea, pe care nu am Office 2007, si baza de date a fost construita in asa fel incit sa fie instalabila pe alt PC, dar la nevoie sa pot modifica formulare-rapoarte si sa reinstalez BD acolo cu toate datele operate pina in acel moment. Tabelele le pastrez pentru ca am nevoie de relatiile dintre ele, doar ca BD o livrez cu zero inregistrari operatorul face exportul datelor din BD instalata, apoi importul in noua BD pe care o primeste.
In al doile rind ce este XML gasiti pe acest link Wikipedia (va recomand sa il cititi)
Am ales XML pentru mai multe motive, dar ca exemplu va dau urmatorul: eu aveam un cimp intr-un tabel de tip yes/no. La importul din excel acest cimp era transformat in cimp text si intrarile erau true sau fals, lucru pe care eu nu il doream.
Si acum - iata metoda de export din BD cu un buton:
Cod: Selectaţi tot
Private Sub Command0_Click()
Const acExportTable = 0
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase "C:\Documents and Settings\............baza.accdb"
objAccess.ExportXML acExportTable, "nume_tabel", "C:\Export\nume_tabel.xml"
End Sub
nume_tabel - acolo scrieti numele tabelului pe care doriti sa il exportati
"C:\Export\Birouri.xml" este calea de export ( in folderul Export, discul C) respectiv numele sub care va fi salvat tabelul.
Daca doriti sa exportati mai multe tabele din Bd copati linia objAccess.ExportXML acExportTable,....... de cite ori aveti nevoie inlocuind numele tabelului pe care doriti sa il exportati
Pentru import folositi urmatorul cod:
Cod: Selectaţi tot
Private Sub Command5_Click()
Dim StrFileName As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
Application.ImportXML _
DataSource:=vrtSelectedItem, _
ImportOptions:=acAppendData
Next vrtSelectedItem
Else
End If
End With
Set fd = Nothing
End Sub
NOTA2: La importul din XML, cind importati si/sau structura tabelului, TOATE cimputile din tabel vor fi de tip text. Deci veti avea de editat proprietatile cimpurilor daca nu importati doar date ci si/sau structura tabelelor. (cu F1 aflati mai multe despre comanda importXML)
NOTA3: Daca primiti eroare la rularea codului de import, cititi acea eroare.[ In general probabil ca in modulul macro la Tools - references trebuie sa verificati si sa activati bibliotecile Microsoft Office de acolo ( nu toate ci doar cele care contin expresiile folosote in cod)]
Sper ca am reusit sa fiu destul de clar in explicatii