Идея может и не нова, но если не знаешь как это делается, то может пригодиться. Возникла такая потребность экспорта-импорта данных из SQL Server в DBF по средством клиента в Access. Можно конечно это сделать и средствами SQL Server, но на удаленном клиенте это не работает. Поэтому было сделано следуещее.. За основу была взята информация с форума сайта http://www.sql.ru (тема: импорт DBF из клиента) реализующую загрузку из DBF в SQL Server. Sub dbf() Dim cn As New ADODB.Connection Dim rst As ADODB.Recordset Dim rstt As ADODB.Recordset Dim strPath As String
strPath = "D:\" cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ";Extended Properties=dBASE IV;User ID=Admin;Password="
Set rst = New ADODB.Recordset rst.Open "SELECT * FROM TEP.DBF", cn
With rst .MoveFirst While Not .EOF
Set rstt = New ADODB.Recordset rstt.Open "INSERT INTO dbo.tep (ID_INN, TN, ADDRESS) VALUES (N'" & !ID_INN & "', " & !TN & ", N'" & !Address & "')", _ CurrentProject.Connection, adOpenKeyset, adLockOptimistic Set rstt = Nothing
.MoveNext Wend
End With
Set rst = Nothing cn.Close Set cn = Nothing
End Sub Несколько изменив получаем экспорт из SQL Server в DBF Sub VFond(Period1, Period2, dekada As Byte, StrNom As String, REGIM As Byte) Dim cn, cns As New ADODB.Connection Dim rst As ADODB.Recordset Dim rsts As ADODB.Recordset Dim rstt As ADODB.Recordset Dim strPath, strcon, tmf As String Dim n As Boolean Dim colst As Integer
ReadOptions ClearTempFiles
CopyFile PathMaska & "ob.dbf", CurrentProject.path & "\tmp\" & StrNom & ".dbf", False
strPath = CurrentProject.path & "\tmp\" strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ";Extended Properties=dBASE IV;User ID=Admin;Password="
Set cn = New ADODB.Connection cn.Open strcon
Set rst = New ADODB.Recordset rst.Open "SELECT * FROM " & StrNom & ".dbf", cn, adOpenDynamic, adLockOptimistic
Set cns = CodeProject.Connection If REGIM = 1 Then Set rsts = cns.Execute("pr_ex_ChekPolis 0,0," & REGIM & "," & Period1 & ", " & Period2 & ", " & dekada & "") Else Set rsts = cns.Execute("pr_ex_ChekPolis '" & Period1 & "','" & Period2 & "'," & REGIM & ",0,0,0") End If
colst = rst.RecordCount n = True
With rsts .MoveFirst StrProcess "Выполнено :", colst, n n = False While Not .EOF
rst.AddNew rst!fam = !fam rst!NAME = !im rst!otch = !otch rst!born = !data_rogd rst!polis = !polis rst.Update
.MoveNext Wend
End With
Set rst = Nothing cn.Close Set cn = Nothing Call SysCmd(acSysCmdClearStatus)
tmf = cmdSaveDialog(PathArhiv, StrNom & ".rar") ' If tmf = "" Then Exit Sub End If
Pack tmf, CurrentProject.path & "\tmp\" & StrNom & ".dbf"
MsgBox "Выполнено"
End Sub
|