Dulu saya pernah diminta membuat program, dengan dua database tetapi database tersebut diharuskan sama-sama memiliki nama field dalam suatutable, dalam kenyataannya hanya salah satu database umpamanya database
Tujuan dari Source dan Query SQL ini adalah, digunakan untuk menyamakan field dalam suatu table diantara dua database dengan server yang berbeda pula umpamanya ServerFrom.dbo.TableF ke ServerTo.dbo.TableT
utuk source code vb6 dan sqlserver saya menggunakan metode ini
Tujuan dari Source dan Query SQL ini adalah, digunakan untuk menyamakan field dalam suatu table diantara dua database dengan server yang berbeda pula umpamanya ServerFrom.dbo.TableF ke ServerTo.dbo.TableT
utuk source code vb6 dan sqlserver saya menggunakan metode ini
Private Sub CekDataField(ByVal tabelnya As String)
Dim CNNP As New ADODB.Connection
Set rsS = New ADODB.Recordset
Set rsS1 = New ADODB.Recordset
Dim IDFrom, IDTo As String
Dim NamaField, namaTipe As String
Dim tipestatField, tipeuserField, lengthField As Integer
On Error GoTo ERR
c_InitialCatalogKey = ";Initial Catalog='" & DinT & "'"
c_DataSourceFrom = ";Data Source=" & ServerT
c_ConnStringKey = c_Provider & c_InitialCatalogKey & c_DataSourceFrom '& c_trusted
cSQL = "select name,id from [ " & ServerF & "].[" & DinF & "].[dbo].[sysobjects] where name ='" & tabelnya & "'"
rsS.Open cSQL, _
c_ConnStringKey, adOpenStatic, adLockReadOnly
If Not rsS.EOF Then
rsS.MoveFirst
IDFrom = rsS.Fields!id
rsS.MoveNext
End If
If rsS.State Then rsS.Close
rsS.Open "select name,id from [ " & ServerT & "].[" & DinT & "].[dbo].[sysobjects] where name ='" & tabelnya & "'", _
c_ConnStringKey, adOpenStatic, adLockReadOnly
If Not rsS.EOF Then
rsS.MoveFirst
IDTo = rsS.Fields!id
rsS.MoveNext
End If
If rsS.State Then rsS.Close
cSQL = "select * from openquery([" & ServerF & "],'select id,name,typestat,xusertype,length from " & DinF & ".dbo.syscolumns where id=''" & IDFrom & "''')" & _
" where name not in (select name from " & DinT & " .dbo.syscolumns where id='" & IDTo & "')"""
rsS.Open cSQL, c_ConnStringKey, adOpenStatic, adLockOptimistic
If Not rsS.EOF Then
rsS.MoveFirst
While Not rsS.EOF
NamaField = rsS.Fields!Name
tipestatField = rsS.Fields!typestat
tipeuserField = rsS.Fields!xusertype
lengthField = rsS.Fields!length
rsS1.Open "select name from " & DinT & " where xusertype ='" & tipeuserField & "'", c_ConnStringKey, adOpenStatic, adLockOptimistic
If Not rsS1.EOF Then
rsS1.MoveFirst
namaTipe = rsS.Fields!Name
rsS1.MoveNext
End If
If rsS1.State Then rsS1.Close
AlterTable "& tabelnya &", "& NamaField &", "& namaTipe &", (lengthField / tipestatField), c_ConnStringKey
rsS.MoveNext
Wend
End If
MDIfrmMenuUtama.StatusBar.Panels(1).Text = cSQL
If rsS.State Then rsS.Close
If CNNP.State Then CNNP.Close
Set rsS = Nothing
Set CNNP = Nothing
On Error GoTo 0
Exit Sub
ERR:
MsgBox "Error " & ERR.Number & " (" & ERR.Description & ") in procedure PindahDataPokok of Form frm_pindahdata", vbCritical
MDIfrmMenuUtama.StatusBar.Panels(1).Text = ""
statusN = False
End Sub
Comments
Post a Comment