Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблеммы с переносом с сумированием ADO в Excel / 22 сообщений из 22, страница 1 из 1
19.10.2012, 12:16
    #38005570
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Суть проблеммы
нужно при помощи ADO почитать общую сумму оплаты данных на листе "Платежи"
вроде считает,
но когда начинаю проверять, некоторые платежи выпадают из расчета.
файл прилогаю.
...
Рейтинг: 0 / 0
19.10.2012, 13:19
    #38005685
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
у меня ничего не выпало. Конкретнее пожалуйста
...
Рейтинг: 0 / 0
19.10.2012, 14:08
    #38005778
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Shocker.Proу меня ничего не выпало. Конкретнее пожалуйста

Обидно до соплей.
все поудалял из книг для примера
сейчас стало все нормально
а до этого было следующее.

Select ом отбирал платежи и при отборе некоторые просто пропускались.
отбирал макросом "Макрос5"
...
Рейтинг: 0 / 0
19.10.2012, 14:52
    #38005832
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Возвращай все обратно и смотри, в какой момент сглючит
...
Рейтинг: 0 / 0
19.10.2012, 21:35
    #38006367
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Shocker.Pro,

а подскажите
вот код
авторSub Макрос5()

Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ThisWorkbook.FullName + ";Extended Properties='Excel 8.0'"
rs.Open "SELECT * FROM [Платежи$] WHERE (REG_NUM=107) ORDER BY REG_NUM ", cn, 3
Cells(1, 1).CopyFromRecordset rs
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing


End Sub


как контролировать ?
все работает стабильно
и отбирает всегда одинаковые строки
прямой зависимости не могу выявить
...
Рейтинг: 0 / 0
19.10.2012, 23:35
    #38006436
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Книгу сохраняете перед запуском макроса?
Он берет файл с диска, т.е. не может учесть изменения, внесенные после последнего сохранения.
...
Рейтинг: 0 / 0
20.10.2012, 11:29
    #38006612
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Chumakov_JAкак контролировать ?Что значит "контрлировать"? Пошагово выполнить?

[MOD]Учимся использовать тэги оформления кода - FAQ [/MOD]
...
Рейтинг: 0 / 0
20.10.2012, 22:13
    #38006880
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Shocker.Pro,
все банально просто.
файл Excel, принимает данные из БД постоенной на DB2
лист где хранятся платежи имеет записей от 30 до 80 тысяч
все работает на Excel 2007 поэтому проблем с ограничением не испытываю
также принимаю из DB2 в отдельный лист описание плательщиков (имя ,адрес и т.д.)
листы скрытые после этого формулами расчитываю
по отдельным плательщикам всякие данные все считает отлично
автор http://www.sql.ru/forum/actualthread.aspx?tid=844510
стал вопрос как узнать кто из плательщиков имеющий определенный статус вообще ничего не платит.
и вот тут начал выдумывать анализ и получение данных на ADO

автор http://www.sql.ru/forum/actualthread.aspx?tid=976075

но при простом
авторSELECT * FROM [Платежи$] WHERE (INS_REG_NUM=103) ORDER BY INS_REG_NUM

у меня происходит неполное получение данных
при этом я уверен на 100 % что пустых строк от начало и до конца SELECTa нет
но при этом автофильтром я вижу 528 строк (а так хочется написать записей)
а SELECT отбирает всего 261 и вот тут я застопорился ..................
...
Рейтинг: 0 / 0
20.10.2012, 23:10
    #38006919
портер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Chumakov_JA, попробуй опять же
1. поюзать акцесс, связав исходный эксельный лист по ОЛБЦ. Там все-таки конструктор удобный для всяких экспериментов.
2. МС Квери.
ЗЫ Похоже, АДО для источника типа Эксель вообще косячная штука. При массовом использовании, бывает, уже в обед перегружаю комп, т.к. память стремительно утекает как змеиная песочная собка, "Out of memory" - и все тут.
...
Рейтинг: 0 / 0
20.10.2012, 23:14
    #38006921
портер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Код: vbnet
1.
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;


Кстати, такой провайдер вроде тока для ограниченного 2003-м Экселем числом строк робит корректно? Т.е. более 2^16 строк он не пережует?
...
Рейтинг: 0 / 0
21.10.2012, 00:04
    #38006960
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
портерChumakov_JA, попробуй опять же
1. поюзать акцесс, связав исходный эксельный лист по ОЛБЦ. Там все-таки конструктор удобный для всяких экспериментов.
2. МС Квери.
ЗЫ Похоже, АДО для источника типа Эксель вообще косячная штука. При массовом использовании, бывает, уже в обед перегружаю комп, т.к. память стремительно утекает как змеиная песочная собка, "Out of memory" - и все тут.

сють проблеммы нужно на стандартном варианте Micrisoft Office
а там тока Excel,Word, PowerPoint
...
Рейтинг: 0 / 0
21.10.2012, 00:12
    #38006964
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
портер
ЗЫ Похоже, АДО для источника типа Эксель вообще косячная штука. При массовом использовании, бывает, уже в обед перегружаю комп, т.к. память стремительно утекает как змеиная песочная собка, "Out of memory" - и все тут.
так и есть
BUG: Memory leak occurs when you query an open Excel worksheet by using ActiveX Data Objects (ADO)
...
Рейтинг: 0 / 0
21.10.2012, 00:15
    #38006967
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
портер
Код: vbnet
1.
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;


Кстати, такой провайдер вроде тока для ограниченного 2003-м Экселем числом строк робит корректно? Т.е. более 2^16 строк он не пережует?
+1

ТС, провайдер нужно использовать другой для 2007-го Экселя
http://connectionstrings.com/excel-2007
...
Рейтинг: 0 / 0
21.10.2012, 20:29
    #38007482
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
qwerty112портер
Код: vbnet
1.
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;


Кстати, такой провайдер вроде тока для ограниченного 2003-м Экселем числом строк робит корректно? Т.е. более 2^16 строк он не пережует?
+1

ТС, провайдер нужно использовать другой для 2007-го Экселя
http://connectionstrings.com/excel-2007

Ну огромное спасибо все помогло

автор sCon = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;"";"
...
Рейтинг: 0 / 0
21.10.2012, 22:24
    #38007533
R Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Chumakov_JA,
еще добавлю, что в качестве таблицы данных используйте только заголовок листа,
Именованные диапазоны будут тоже косячить.
...
Рейтинг: 0 / 0
22.10.2012, 09:28
    #38007696
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
ну подскажите ещё момент
где неправельно

автор sSQL = "SELECT `Плательщики$`.INS_REG_NUM, " & _
"`Плательщики$`.INS_SHORT_NAME, Sum(`Платежи$`.PAY_SUM) AS 'Сумма из PAY_SUM' " & _
"FROM {oj `Плательщики$` `Плательщики$` " & _
"LEFT OUTER JOIN `Платежи$` `Платежи$` ON `Плательщики$`.INS_REG_NUM = `Платежи$`.INS_REG_NUM} " & _
"WHERE (`Плательщики$`.CT_ID>=89) AND (`Плательщики$`.INS_UNARRANGE_DATE Is Null) " & _
"GROUP BY `Плательщики$`.INS_REG_NUM, `Плательщики$`.INS_SHORT_NAME " & _
"ORDER BY `Плательщики$`.INS_REG_NUM;"


при этом MS Query
все работает
...
Рейтинг: 0 / 0
22.10.2012, 12:32
    #38007960
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Chumakov_JA,

уже прям выяснил что длинный запрос
а вот как уменьшить ?
...
Рейтинг: 0 / 0
22.10.2012, 12:43
    #38007986
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Chumakov_JA,
из Excel гораздо быстрее можно получить данные, открыв его как OLE-объект. Я открываю в цикле несколько десятков файлов, состоящих из нескольких листов, суммирую значения по ячейкам и переношу суммы в итоговый файл. На всю процедуру уходит несколько секунд.
Запрос на тех же данных работал бы целый день.
...
Рейтинг: 0 / 0
22.10.2012, 14:19
    #38008174
Chumakov_JA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
F,
Пример или ссылку в студию.
...
Рейтинг: 0 / 0
22.10.2012, 16:18
    #38008393
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Пример чего? Вы на чем програму пишете?
...
Рейтинг: 0 / 0
22.10.2012, 18:33
    #38008686
портер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Chumakov_JAChumakov_JA,

уже прям выяснил что длинный запрос
а вот как уменьшить ?
Может убрать OUTER из текста запроса?
Операции LEFT JOIN, RIGHT JOIN
Объединяют записи исходных таблиц при использовании в любом предложении FROM.

Синтаксис
FROM таблица_1 [ LEFT | RIGHT ] JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
...
Рейтинг: 0 / 0
23.10.2012, 10:04
    #38009286
anvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблеммы с переносом с сумированием ADO в Excel
Вариант запроса
Код: sql
1.
2.
3.
4.
5.
sSQL = "Select t1.INS_REG_NUM,t1.INS_SHORT_NAME,Sum(t1.PAY_SUM) As [Сумма из PAY_SUM] "
sSQL = sSQL & "From [Плательщики$] As t1 Left Join [Платежи$] As t2 On "
sSQL = sSQL & " (t1.INS_REG_NUM=t2.INS_REG_NUM) Where (t1.CT_ID>=89) And (t1.INS_UNARRANGE_DATE Is Null) "
sSQL = sSQL & " Group By t1.INS_REG_NUM,t1.INS_SHORT_NAME "
sSQL = sSQL & " Order By t1.INS_REG_NUM"
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблеммы с переносом с сумированием ADO в Excel / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]