Работа с базами данных в VBA

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Werwolf
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 07.04.2008 (Пн) 9:30

Работа с базами данных в VBA

Сообщение Werwolf » 07.04.2008 (Пн) 9:49

Люди помогите пожалуйста!
Как сделать выгрузку данных из базы данных в эксель на VisualBasic6.0, причем данные должны выгружаться только те, которые отображаются в DataGrid или MSFlexGrid?
Заранее огромное спасибо!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 07.04.2008 (Пн) 10:52

DataGrid или MSFlexGrid связаны с источником данных?
Ну пройдись по каждой записи от начала до конца и выгружай в Excel.
Что именно вызывает проблему?
А я все практикую лечение травами...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.04.2008 (Пн) 11:18

CopyFromRecordset есть такая ф-я в экселе, найди по ней справку и юзай.

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 07.04.2008 (Пн) 11:25

Вот еще
Утро добрым не бывает!

Werwolf
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 07.04.2008 (Пн) 9:30

Сообщение Werwolf » 07.04.2008 (Пн) 11:26

Проблема в том что я не знаю как это кодом выглядит и найти не могу =(
А про эксель, макрос имелся в виду?

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 07.04.2008 (Пн) 11:33

Дык яснее выражоваваться нужно :) А по ссылоньке то сходи там и про CopyFromRecordset есть. Я видел

И вот еще

Справка по VBA писал(а):CopyFromRecordset Method
See Also Applies To Example Specifics
Copies the contents of an ADO or DAO Recordset object onto a worksheet, beginning at the upper-left corner of the specified range. If the Recordset object contains fields with OLE objects in them, this method fails.

expression.CopyFromRecordset(Data, MaxRows, MaxColumns)

expression Required. An expression that returns a Range object.

Data Required Variant. The Recordset object to copy into the range.

MaxRows Optional Variant. The maximum number of records to copy onto the worksheet. If this argument is omitted, all the records in the Recordset object are copied.

MaxColumns Optional Variant. The maximum number of fields to copy onto the worksheet. If this argument is omitted, all the fields in the Recordset object are copied.

Remarks
Copying begins at the current row of the Recordset object. After copying is completed, the EOF property of the Recordset object is True.

Example
This example copies the field names from a DAO Recordset object into the first row of a worksheet and formats the names as bold. The example then copies the recordset onto the worksheet, beginning at cell A2.

For iCols = 0 to rs.Fields.Count - 1
ws.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
ws.Range(ws.Cells(1, 1), _
ws.Cells(1, rs.Fields.Count)).Font.Bold = True
ws.Range("A2").CopyFromRecordset rs
Утро добрым не бывает!

Werwolf
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 07.04.2008 (Пн) 9:30

Сообщение Werwolf » 07.04.2008 (Пн) 11:39

А код который эксель в макросе генерирует, мжно под VB подогнать? Если его использавать в чистом виде он не работает

Werwolf
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 07.04.2008 (Пн) 9:30

Сообщение Werwolf » 07.04.2008 (Пн) 11:40

выглядит генерированный код вот так:
Range("C3").Select
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Áàçà äàííûõ MS Access;DBQ=C:\Documents and Settings\Àäìèíèñòðàòîð\Ðàáî÷èé ñòîë\Ïðèëîæåíèå Microsoft Office Access.mdb;Defau" _
), Array( _
"ltDir=C:\Documents and Settings\Àäìèíèñòðàòîð\Ðàáî÷èé ñòîë;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
)), Destination:=Range("C3"))
.CommandText = Array( _
"SELECT Òàáëèöà1.`432`, Òàáëèöà1.hgff" & Chr(13) & "" & Chr(10) & "FROM Òàáëèöà1 Òàáëèöà1")
.Name = "Çàïðîñ èç Áàçà äàííûõ MS Access_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 07.04.2008 (Пн) 11:46

Я тебе для чего ссылку давал? :) Чтобы ты сходил и почитал каким образом можно подружить Эксель и VB. Не веришь мне поищи сам по РАННЕЕ СВЯЗЫВАНИЕ ПОЗДНЕЕ СВЯЗЫВАНИЕ EXCEL.APPLICATION Если что непонятно будет то спрашивай.
Да и пользуйся тегами CODE для выделения кусков кода
Утро добрым не бывает!

Werwolf
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 07.04.2008 (Пн) 9:30

Сообщение Werwolf » 07.04.2008 (Пн) 14:56

Решили проблему вот таким образом, вопрос в следующем можно ли сделать чтоб он выгружал данные целиком, а не только те что выделены?
Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("D:\xxx\testfile.xls", ForWriting, True)
f.WriteLine MSFlexGrid1.Clip
f.Close
и второе, если использовать вместо MSFlexGrid1, DataGrid, то он начинает ругаться. Есть ли какой-нибудь метод для DataGrid идентичный Clip?
Заранее спасибо!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 08.04.2008 (Вт) 11:37

вы читать умеете?
CopyFromRecordset


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 80

    TopList