Страницы: 1
RSS
отчет из dbf файлов
 
Здравствуйте, я новичок в программировании в visual basic, прошу помочь, у меня вот какая проблема надо сделать отчет в екселе из dbf файлов,    
ну во:  
1. в администрировании-источники данных пользователя-добавил свою бд, указал путь, назначил имя  
2. создал файл в екселе зашел в редактор бэйсика создал модуль вроде прописал переменные  
3. потом как че писать может кто нить выложить пример или указать ссылку куда нить заранее благодарен)))
 
DBF обычно можно сразу открыть - отобразить на листе. А уж КАКОЙ отчёт из этих данных создавать - одному Вам известно.
 
Может быть с помощью MSQuery можно составить запрос к этим базам, результат выгрузить на лист.  
И в общем можно обойтись без ВБА.  
 
Но если что - вот нашёл пример (не проверял):  
 
==================================  
Открыть файл C:\DB\Baza.dbf можно так:  
 
код    
--------------------------------------------------------------------------------  
   Dim cmd As String  
   Dim sql As String  
   Dim cn As ADODB.Connection  
   Dim rs As ADODB.Recordset  
     
   cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB;Extended Properties=dBASE III;"  
   Set cn = New ADODB.Connection  
   cn.ConnectionString = cmd  
   cn.Open  
     
   sql = "select * from Baza.dbf"  
   Set rs = New ADODB.Recordset  
   rs.Open sql, cn, adOpenKeyset, adLockOptimistic  
   
   Do Until rs.EOF              ' пройтись по всем записям  
       Debug.Print rs.Fields(0) ' вывести в окно Debug содержимое поля 0 (первое поле)  
       rs.MoveNext  
   Loop  
 
 
--------------------------------------------------------------------------------  
 
Предварительно необходимо подключить ADO:  
Project -> References -> Microsoft ActiveX Data Objects  
 
======================================  
 
Или вот ещё:  
========================  
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sh As Worksheet  
 
Const cstrBase As String = "C:\EXPORT\" 'Директория с файлами dbf  
n = 1  
t = 2  
With cn  
   .Provider = "Microsoft.Jet.OLEDB.4.0"  
   .ConnectionString = "Data Source=" & cstrBase & ";Extended Properties=dBase IV"  
   .Open  
   
   Set rs = .Execute("SELECT * FROM  tab")  
 
   For i = 0 To rs.Fields.Count - 1  
       sh.Cells(1, i + 1).Value = rs.Fields(i).Name  
   Next i  
 
   If Not (rs.EOF And rs.BOF) Then rs.MoveFirst  
 
   Do Until rs.EOF  
   If t > 65000 Then  
      Set sh = Application.Worksheets.Add  
      sh.Name = "part" + Str(n)  
      For i = 0 To rs.Fields.Count - 1  
          sh.Cells(1, i + 1).Value = rs.Fields(i).Name  
      Next i  
      t = 2  
      n = n + 1  
   End If  
     
   For j = 0 To rs.Fields.Count - 1  
       sh.Cells(t, j + 1).Value = rs.Fields(j).Value  
   Next j  
     
   rs.MoveNext  
   t = t + 1  
   Loop  
   .Close  
End With  
 
это код из кнопки... открывается файл tab.dbf из директории C:\EXPORT\ заполняются заголовки и содержимое файла в Excel. При достижении 65000 записей идет добавление нового листа и продолжение файла. На файлике до 30 тыс. записей работает хорошо.  
=================  
 
Тоже не проверял. Или проверял... непомню :)
 
На форуме обсуждалось и не раз. Например: http://www.planetaexcel.ru/forum.php/files.php?thread_id=20329
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх