Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> vb Excel, Передача данных 
:(
    Опции темы
Sergmugb
Дата 29.4.2005, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.11.2004
Где: ХМАО г.Покачи

Репутация: нет
Всего: нет



Люди подскажите, как результат запроса передать в excel, да так чтобы передача велась быстро, не могу придумать.
Смысл такой: выполнил запрос, получил выборку в (rszapr) и теперь все от туда надо в ексель запихать.
Я это реализовал через 2 цикла, полюс ко всему сначала отображаю выборку в датагрид и оттуда по 1 ячейке выгребаю, это долго.
Знаю что есть метод побыстрее, но вот какой?

Это сообщение отредактировал(а) Sergmugb - 29.4.2005, 10:57
PM MAIL   Вверх
Paradox
Дата 29.4.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



а поконретнее можно ?
данные чтоли выгребаешь откуда то и надо засандалить в Excel ?

тогда можно зацепится к Excel через ADO например и наколбасить туда
если в этом дело могу и поподробнее


--------------------
---
PM MAIL WWW   Вверх
Papirus
Дата 29.4.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Если сформирован адо.рекордсет, то для вставки данных в ексель можно использовать метод CopyFromRecordset объекта Range.

Код

Workbooks(1).Sheets(1).Range("A1").CopyFromRecordset  rszapr

PM MAIL ICQ   Вверх
Flotskiy
Дата 29.4.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Добрый день всем!
Вот код на данную тему:
Код


Private Sub cmdForma4_Click()
On Error Resume Next
Dim iIndx As Integer
Dim iRowIndex As Integer
Dim iColIndex As Integer
Dim iRecordCount As Integer
Dim iFieldCount As Integer
Dim sMessage As String
Dim avRows As Variant
Dim excelVersion As Integer

Dim sSqlString As String

Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset

connectString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
                 & "Data Source=" & gDataBaseName '(это путь к БД или пример:  "C:\BIBLIOTEKA\BDanny\Bibliot.mdb") 
                 
sSqlString = "SELECT (Autor & ' ' & PodRed & ' ' & Title & ' ' & PlassPubl & ': ' & " & _
             " Publishes & ', ' & DatPubl) AS Nazvanie, AmountCopy " & _
        "FROM Titles WHERE InventNumber =" & Text2.Text

adoConnection.Open connectString
adoRecordset.CursorLocation = adUseClient
adoRecordset.Open sSqlString, adoConnection

'-- Read all of the records into our array
avRows = adoRecordset.GetRows()

'-- Determine how many fields and records
iRecordCount = UBound(avRows, 2) + 1
iFieldCount = UBound(avRows, 1) + 1

'-- Create reference variable for the spreadsheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open "C:\Мои документы\Ф4\Форма4" 'открывается существующий файл
' еслинужен файл новый открыть то-
' objExcel.Workbooks.Add 
'-- We need this line to insure Excel remains visible if we switch
Set objTemp = objExcel

excelVersion = Val(objExcel.Application.Version)
If (excelVersion >= 8) Then
 Set objExcel = objExcel.ActiveSheet
End If

'-- Place the names of the fields as column headers --
iRowIndex = 1
iColIndex = 1
For iColIndex = 1 To iFieldCount
  With objExcel.Cells(iRowIndex, iColIndex)
     .Value = adoRecordset.Fields(iColIndex - 1).Name
     With .Font
       .Name = "Arial"
       .Bold = True
       .Size = 9
     End With
  End With
Next
'-- memory management --
adoRecordset.Close
adoConnection.Close
Set adoRecordset = Nothing
Set adoConnection = Nothing

'-- Just add data --
With objExcel
  For iRowIndex = 2 To iRecordCount + 1
   For iColIndex = 1 To iFieldCount
    .Cells(iRowIndex, iColIndex).Value = avRows(iColIndex - 1, iRowIndex - 2)
   Next
  Next
End With
objExcel.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit

End Sub


Код рабочий, подстраивай.

PS. Посмотри раздел "Ссылки на интересные сайты", ссылка на сайт "dmk", там есть готовые примеры (зтот код оттуда).
С уважением


Это сообщение отредактировал(а) Flotskiy - 29.4.2005, 15:44
--------------------
FlotskiySk k
PM MAIL   Вверх
Sergmugb
Дата 3.5.2005, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.11.2004
Где: ХМАО г.Покачи

Репутация: нет
Всего: нет



Спасибо, попробую.
PM MAIL   Вверх
Papirus
Дата 3.5.2005, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(Flotskiy @ 29.4.2005, 15:20)
Вот код на данную тему:


И не влом в циклах массивы перелопачивать? Если надо выборочно - то понимаю, если не надо, то что ж не нравиться во вставке одним оператором? работает на порядок быстрее (проверено). smile

PM MAIL ICQ   Вверх
Gannibal
Дата 3.5.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17





--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.