vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest środa, 01 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Przepisywanie z bazy do bazy


otwartyotwarty rozpoczął: _Z_ postów: 4



napisał: jalamas
postów: 316


umieszczony:
11 lipca 2008
11:17

  
Nie wiem czy temat aktualny.
- ADODB, ADOX
- stworzenie tabeli połączonej (linked table) do tabeli MySql
- dołączenie danych do tabel ACC
- usuniecie tabeli połączonej.
- łańcuchy połączeń pomijam, zakladm, że wiesz co i jak
Lecz nie znam całości problemu, nie wiem do czego tabela docelowa służy, być może samo linker table wystarczy.
'----------------------------------------------------------
' STANDARD Module : MySQl_to_acc
'----------------------------------------------------------
Option Explicit

Function MySql2AccTable() As Boolean
    ' Referencje
    'ADODB: Microsoft ActiveX Data Objects 2.X Library
    'ADOX: Microsoft ADO Ext. 2.X for DDL and Security
    ' w zasadzie nalezaloby bez refrencji CreateObject, pozne wiazanie
    ' sprawdzac tylko wersje Jet w obiekcie Connection
    On Error GoTo MojErrHand_Error
    '----------------------------------
    ' ponizsze to pewnie u Ciebie parametry
    Const strLinkTblName As String = "tblMySqllnk"
    Const strMySqlTable As String = "osoba"
    Const strAccTable As String = "tblxxxx"
    '----------------------------------
    Dim Conn As ADODB.Connection
    Dim catDB As ADOX.Catalog
    Dim tblLink As ADOX.Table
    Dim strExecSql As String
    Dim lngIle As Long
    '----------------------------
    Set Conn = New ADODB.Connection
    With Conn
        .ConnectionString = MyConnectionStringToMdb
        .Open
    End With
    Set catDB = New ADOX.Catalog
    With catDB
        Set .ActiveConnection = Conn
        On Error Resume Next
        ' usuniecie linkowanej tabeli jezeli jest
        ' byc moze jednak w ogole wystarczy miec linkowana tabele
        ' i nic wiecej lecz nie znam problemu w calosci
        .Tables.Delete (strLinkTblName)
        If Err.Number > 0 Then Err.Clear
        On Error GoTo MojErrHand_Error
    End With
    Set tblLink = New ADOX.Table
    ' stworzenie tabeli linkowanej do tabeli MySQL
    With tblLink
        .Name = strLinkTblName
        Set .ParentCatalog = catDB
        .Properties("Jet OLEDB:Create Link") = True
        .Properties("Jet OLEDB:Link Provider String") = MyConnectionStringToMySql
        .Properties("Jet OLEDB:Remote Table Name") = strMySqlTable
    End With
    With catDB
        .Tables.Append tblLink
        .Tables.Refresh
    End With
    ' tu wobec podlinkowanej tabeli można zdawać zapytania
    ' wtedy mamy tylko zapytanie do tabeli ACC
    ' dolaczenie danych z linkowanej tabeli do docelowej
    strExecSql = "INSERT INTO " & strAccTable & " SELECT * FROM " & strLinkTblName
    Conn.Execute strExecSql, lngIle
    MySql2AccTable = True

MojErrHand_Exit:
    On Error Resume Next
    Set tblLink = Nothing
    ' usuwamy tabele linkowana aby nie bylo powiazania kompaktowac czasem mdb
    If Not catDB Is Nothing Then
        catDB.Tables.Delete (strLinkTblName)
        Set catDB = Nothing
    End If
    If Not Conn Is Nothing Then
        With Conn
            If .State = adStateOpen Then .Close
        End With
        Set Conn = Nothing
    End If

    If MySql2AccTable Then
        MsgBox "Dane do tabeli bazy danych ACC przekazano, liczba dodanych rekordów :" & CStr(lngIle)
    Else
        MsgBox "Eksport danych do bazy zakończył się niepowodzeniem! ", vbExclamation
    End If
    Exit Function

MojErrHand_Error:
    MsgBox "Błąd - " & Err.Number & vbCrLf & "Opis - " & Err.Description & vbCrLf _
           & "Procedura - " & "MojErrHand", vbExclamation, _
           "VBAProject - MySql2AccTable"
    Resume MojErrHand_Exit
End Function

napisał: _Z_
postów: 12


umieszczony:
9 lipca 2008
09:31

  
Cześć,

Zadanie polega na przepisaniu danych w bazy w MySQL, do bazy o identycznej strukturze w Accessie. Makro napisane w VBA działające pod Excelem.

Dane źródłowe w MySQL (MySQL ODBC 3.51 Driver) pobieram na przykład do ADODB.Recordset i ładuje do MS Access (Provider=Microsoft.Jet.OLEDB.4.0).

Zaznaczam, że nie mam Accessa na komputerze na którym chcę ten program uruchamiać.

Pozdrawiam

- Marcin
napisał: Rycho
postów: 291


umieszczony:
8 lipca 2008
18:53

  
hej,
jaki program?
Tabele w jednym pliku czy różnych i może jeszcze różnych typów?

Jeśli access, to praktycznie wszystkie operacje na danych da się zrobić przy pomocy SQL (kwerend).
napisał: _Z_
postów: 12


umieszczony:
8 lipca 2008
10:10

  
Witam,

Mam dwie tabele, jedna jest źródłowa i zawiera dane, a druga docelowa jest pusta. Pobieram dane z tabeli źródłowej i wszystko chcę w szybki sposób przepisać do tabeli docelowej. Chciałbym uniknąć żmudnego przepisywania rekord po rekordzie.

rs.Open "select * from tabela", "DSN=baza1", adOpenStatic, adLockOptimistic
    ' Range("A1").CopyFromRecordset rs
    
    Dim conn As ADODB.Connection
    Dim rec As Recordset
    rec.<insert from rs>



Oczywiście metoda <insert from rs> nie istnieje a ja szukam jej odpowiednika, najlepiej w VBA.

Pozdrawiam

- Marcin


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z