Страницы: 1
RSS
Загрузка информации из dbf-файла
 
Здраствуйте. Помогите решить такую задачу:  
Есть два dbf-файла. Можно ли с помощью Visual Basic произвести загрузку данных из dbf-файлов. (Необходимо загрузить только некоторые поля.) Как это реализовать програмно. (Если можно то небольшой пример)  
Заранее спасибо.
 
можно, но пример нужен от Вас.......  
"Правила...., они где то рядом......"
Спасибо
 
Строки соединения здесь -> http://www.connectionstrings.com  
 
Пример (сцыла на Tools -> Preferences -> Microsoft ActiveX Data Objects 2.8 Library)  
 
Sub Zapros()  
   Dim cn As ADODB.Connection  
   Dim rs As ADODB.Recordset  
   Dim sSQL As String  
 
   Set cn = New ADODB.Connection  
     
   With cn  
       .ConnectionString = "ТВОЯ_СТРОКА"  
       .CursorLocation = adUseClient  
       .Mode = adModeRead  
       .Open  
   End With  
     
   sSQL = "SELECT * FROM Table1;"  
     
   ' Setup record set.  
   Set rs = New ADODB.Recordset  
     
   On Error GoTo QUERY_ERROR  
   With rs  
       .Source = sSQL  
       .ActiveConnection = cn  
       .CursorType = adOpenForwardOnly  
       .LockType = adLockReadOnly  
       .Open Options:=adCmdText  
   End With  
     
   With Лист1  
       .Range("A1").CurrentRegion.ClearContents  
       .Range("A2").CopyFromRecordset rs  
   End With  
       
   rs.Close  
   Set rs = Nothing  
 
Exit Sub  
 
QUERY_ERROR:  
   MsgBox Err.Description, vbCritical, "Error"  
End Sub
There is no knowledge that is not power
 
я бы так сделал  
 
Sub Import_DBF()  
Dim strSQL$, Ph$, Fl$, Fld$, ADR$  
Ph = "C:\" 'Путь к файлу  
Fl = "CLIENTS" 'Имя импортируемого файла  
Fld = "[INN],[TITLE]" 'имена импортируемых полей, через запятую
ADR = "A1" ' Куда вставляем данные  
   With ActiveSheet.QueryTables.Add(Connection:=Array( _  
       "OLEDB;Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""CollatingSequence=ASCII;DBQ=" & Ph & ";DefaultDir=" & Ph & ";" _  
       & "Driver={Driver do Microsoft dBase (*.dbf)};FIL=dBase IV;""" _  
       & ";Initial Catalog=" & Ph & ""), Destination:=Range(ADR))  
       .CommandType = 2 '2-Sql 3-table  
        strSQL = "SELECT " & Fld  _  
        & " FROM `" & Ph & "`\`" & Fl & "`"  
       .CommandText = Array(strSQL)  
       .Refresh BackgroundQuery:=False  
       .Delete  
   End With  
End Sub
Спасибо
 
уважаемый R Dmitry подскажите как переделать этот макрос чтобы мне загружало из ДБФ не много по другому: полностью строку, в которой содержится определенное заранее число (оно в дбф уникально)
 
добрый день.  
 
как сделать чтобы при загрузке из ДБФ грузились только данные (без заголовков столбца) ? Что нужно поменять в строке подключения ? может кто то владеет описанием этой строки импорта ? не могу сам разобраться.  
 
Ph = "C:\BAZA"  
Fl = "baza"    
Fld = "*"    
ADR = "A1"  
 
With ActiveSheet.QueryTables.Add(Connection:=Array( _  
"OLEDB;Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""CollatingSequence=ASCII;DBQ=" & Ph & ";DefaultDir=" & Ph & ";" _  
& "Driver={Driver do Microsoft dBase (*.dbf)};FIL=dBase IV;""" _  
& ";Initial Catalog=" & Ph & ""), Destination:=Range(ADR))  
.CommandType = 2    
 
strSQL = "SELECT " & Fld _  
& " FROM `" & Ph & "`\`" & Fl & "`" & " Where [FIO]='" & CStr(Range("B1").Value) & "'"
 
.CommandText = Array(strSQL)  
.Refresh BackgroundQuery:=False  
.Delete  
End With  
 
 
СПАСИБО
 
Sub GetCsv(ByRef rs, ByRef CountFields, ByRef CountRows, ByVal FilePath$)  
'R Dmitry 05/05/2012  
Dim sCon As String  
Dim cn  As Object, p  
Set cn = CreateObject("ADODB.Connection")  
'GetFileName PP  
p = Split(FilePath, Application.PathSeparator)  
p = p(UBound(p))  
FilePath = Replace(FilePath, p, "")  
 
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  
sCon = sCon & FilePath & ";Extended Properties=""text;HDR=" & "Yes" & ";FMT=Delimited """  
strSql2 = "select * from [" & p & "]"
cn.CursorLocation = 3  
cn.Open sCon  
Set rs = cn.Execute(strSql2)  
CountRows = rs.RecordCount  
CountFields = rs.Fields.Count  
End Sub  
 
Sub Load()  
Dim  FullFileName$, rs As Object, r, f  
FullFileName = "c:\test.dbf"  
Set rs = CreateObject("ADODB.Recordset")  
GetDBF rs, f, r, FullFileName  
[a1].copyfromrecordset rs
End Sub
 
не понимаю. вы можете показать именно в моем макросе, где поставить так, чтобы не импортировались названия строк импортируемой базы ?  
спасибо
 
У вас не работает Object browser в редакторе VBA?  Посмотрите там свойство для QueryTable, отвечающее за отображение заголовков
 
откуда Вы знаете ? у меня нормально работает макрос, который я скинул. просто хочу попросить где именно в нем поменять надо, чтобы не импортировало названия столбцов
 
{quote}{login=brother_alex}{date=25.08.2012 07:00}{thema=}{post}откуда Вы знаете ? {/post}{/quote}brother_alex, anvg не утверждает, что у Вас что-то не работает :-)  
Он Вас СПРАШИВАЕТ - Вы сами не можете посмотреть в Object browser нужное свойство?
 
off....  
(Интересно, откуда у анонима кусок кода моей программы ????  
При том, что это для CSV....)  
По теме, просто удалите первую строку таблицы, либо можете скрыть заголовки.  
Либо используйте ADO....
Спасибо
Страницы: 1
Читают тему
Наверх