Как ускорить процесс считывания данных в Ехel?

Программирование на Visual Basic for Applications
JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Как ускорить процесс считывания данных в Ехel?

Сообщение JohnK » 02.08.2003 (Сб) 21:49

У меня около 1500 тыс строк в каждой по 7 колонок - как "пачкой" считать или как еще?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.08.2003 (Вс) 5:40

Куды? И нафига?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 04.08.2003 (Пн) 0:07

Приложение пишу на VB, вот туда то мне и нужно, в массив считать!
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.08.2003 (Пн) 2:41

Поячеечно.
Кинуть массив из памяти на лист можно одной командой, обратное неверно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 04.08.2003 (Пн) 7:36

помнится когда-то на этом форуме обсуждалось что к EXCEL'ю можно подрубится как к базе данных, наверно, для тебя это был бы лучший вариант IMXO
Ничто так не ограничивает полёт мысли программиста, как компилятор

Koyote23
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 09.06.2003 (Пн) 10:24
Откуда: Николаев Украина

Сообщение Koyote23 » 03.09.2003 (Ср) 11:01

Private Sub CopyRecords(TBLName As String)
Dim i, j As Integer
Dim InsText
Dim FLDName As String
Dim iFields As Integer, iRecords As Integer
Dim tmp As Variant
Dim arr() As String
If Left(TBLName, 5) <> "Sheet" Then
'создаём табличку в базе с нужным именем
Set Td = Db.CreateTableDef(TBLName)
i = 1
'создаём поля в табличке с нужным именем
While objExlSht.Cells(1, i).Value <> ""
FLDName = objExlSht.Cells(1, i).Value
Set Fl = Td.CreateField(FLDName, dbText)
Td.Fields.Append Fl
i = i + 1
Wend
Db.TableDefs.Append Td
'пишем в поля значения строк
ReDim arr(Td.Fields.Count - 1)
For tmp = 0 To Td.Fields.Count - 1
arr(tmp) = Td.Fields(tmp).Name
Next tmp
j = 1
Set Rs = Db.OpenRecordset(Td.Name, dbOpenTable)
While objExlSht.Cells(j + 1, 1).Value <> vbNullString
Rs.AddNew
For i = 0 To UBound(arr)
InsText = CStr(objExlSht.Cells(j + 1, i + 1).Value)
If CStr(InsText) <> vbNullString Then
'пишем в поле с именем arr(i) значение InsText
Rs(arr(i)) = InsText
End If
Next i
Rs.Update
Form1.StatusBar1.Panels(1).Text = "Proceed Table " & Td.Name & " at Rows at " & j
j = j + 1
Wend
Rs.Close
End If
End Sub
Вложения
peregonzhik.zip
Попробуй это
как - то делал
(4.52 Кб) Скачиваний: 79


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 85

    TopList