powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблеммы с переносом с сумированием ADO в Excel
22 сообщений из 22, страница 1 из 1
Проблеммы с переносом с сумированием ADO в Excel
    #38005570
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть проблеммы
нужно при помощи ADO почитать общую сумму оплаты данных на листе "Платежи"
вроде считает,
но когда начинаю проверять, некоторые платежи выпадают из расчета.
файл прилогаю.
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38005685
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня ничего не выпало. Конкретнее пожалуйста
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38005778
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proу меня ничего не выпало. Конкретнее пожалуйста

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

Select ом отбирал платежи и при отборе некоторые просто пропускались.
отбирал макросом "Макрос5"
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38005832
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращай все обратно и смотри, в какой момент сглючит
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38006367
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблеммы с переносом с сумированием ADO в Excel
    #38006436
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Книгу сохраняете перед запуском макроса?
Он берет файл с диска, т.е. не может учесть изменения, внесенные после последнего сохранения.
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38006612
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JAкак контролировать ?Что значит "контрлировать"? Пошагово выполнить?

[MOD]Учимся использовать тэги оформления кода - FAQ [/MOD]
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38006880
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблеммы с переносом с сумированием ADO в Excel
    #38006919
портер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Chumakov_JA, попробуй опять же
1. поюзать акцесс, связав исходный эксельный лист по ОЛБЦ. Там все-таки конструктор удобный для всяких экспериментов.
2. МС Квери.
ЗЫ Похоже, АДО для источника типа Эксель вообще косячная штука. При массовом использовании, бывает, уже в обед перегружаю комп, т.к. память стремительно утекает как змеиная песочная собка, "Out of memory" - и все тут.
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38006921
портер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;


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

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


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

ТС, провайдер нужно использовать другой для 2007-го Экселя
http://connectionstrings.com/excel-2007
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38007482
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблеммы с переносом с сумированием ADO в Excel
    #38007533
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JA,
еще добавлю, что в качестве таблицы данных используйте только заголовок листа,
Именованные диапазоны будут тоже косячить.
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38007696
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну подскажите ещё момент
где неправельно

автор 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
Проблеммы с переносом с сумированием ADO в Excel
    #38007960
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JA,

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

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

Синтаксис
FROM таблица_1 [ LEFT | RIGHT ] JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
...
Рейтинг: 0 / 0
Проблеммы с переносом с сумированием ADO в Excel
    #38009286
anvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант запроса
Код: 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
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблеммы с переносом с сумированием ADO в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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