
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.01.2008, 13:12:02
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
Уважаемые специалисты! Помогите консультанту по Scala построить отчет в Excel с использованием VBA из Excel + T-SQL. Я сообразительный, честно! Много времени не отниму. Проблема в следующем: Задача: вытянуть в ячеечки эксельные просуммированные данные в разрезе измерений учетных. Запросик сделал, он все, как надо суммирует: --------------------------------- SELECT SUM(GL06004) AS SS FROM dbo.GL06T808 WHERE (LEFT(GL06001, 6) = '501026' OR LEFT(GL06001, 6) = '501027' OR LEFT(GL06001, 6) = '501520') AND (SUBSTRING(GL06001, 7, 2) = 'ST' OR SUBSTRING(GL06001, 7, 2) = 'WA') GROUP BY GL06004 --------------------------------- В тексте VBA он выглядит, как: _______________________________________ Sel = "SELECT SUM(GL06004) AS SS " & _ "FROM dbo.GL06T808 " & _ "WHERE (LEFT(GL06001, 6) = '501026' OR LEFT(GL06001, 6) = '501027' " & _ "OR LEFT(GL06001, 6) = '501520') " & _ "AND (SUBSTRING(GL06001, 7, 2) = 'ST' OR SUBSTRING(GL06001, 7, 2) = 'WA') " & _ "GROUP BY GL06004" ______________________________________ Ошибок не возникает, всякие ADO в начале прописаны, проблема в следующем: В ячейку не могу вставить суммированное значение, которое запрос возвращает. Так как чайник я жуткий, только начал учиться. Надеюсь, благодаря упорству и помощи коллег, на науку времени много не потрачу. Так вот, можно было вот так, вставить данные: ______________________________________________ Range("C6").Select 'открываем запрос RST.Open Sel, CN, adOpenKeyset, adLockOptimistic 'вставляем в ячейку 1-й способ ActiveCell.Value = Trim(RST!(Sum(GL06004)) 'не работает такой способ 2-й способ ActiveCell.Value = Trim(RST!SS) 'тоже не работает ______________________________________________ Проблема, как раз в том, что поле GL06004 агрегированное, если просто выносить без суммирования: ActiveCell.Value = Trim(RST!GL06004) - при соответствующем запросе, конечно, то все хорошо ( тестировал лично ), а как с суммированием быть не представляю и очень остро нуждаюсь в консультации. Заранее благодарю! на е-mail, получить ответ также был бы признателен lcoding@mail.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 13:51:38
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
попробуй так Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 15:22:15
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vbapro Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Я обычно сразу избавляюсь от QueryTable Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 15:36:37
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vbaproпопробуй так Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Могу очень ошибаться, но .QueryTables.Add не понимаются в упор, да и должен быть способ намного проще, ну прямо интуиция подсказывает, почему значение, вычисленное не агрегированным запросом, т.е. попросту поле БД эскуэльной, присвоить ячейке, можно, как 2 пальца об асфальст, а с агрегированной столько кода? Уверен есть способ проще. Спасибо тебе за ответ, конечно, огромный, но идея работы отчета, как мне показалось тебе была не очевидна. Не поленюсь, сам отчет выслать с приблизительным кодом. Ну или с примером где без агрегации все работает без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 15:50:46
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
Уважаемые! Ну не нужны тут никакие querytable. Извините заранее, за такой "поучительный тон" от чайника по сути. Но мои коллеги скальцы пищут так (опишу просто, алгоритмически, вспомнив славные дизайнерско-пиэмские времена): Соединиться с БД скала, указав базу, логин, пароль. Написать запрос (любой сложности) к скальской БД Запустить запрос на выполнение. 1. Если агрегаций нет, использовать размножение строк (вниз, вправо столбцы пусть тоже растут), с присваиванием ячейкам в активных листах значений из запроса-ов. (Такой пример у меня есть, и по его образу без проблем наваяю, что то типа "Книга продаж", "Книга покупок", "Прогноз платежей", "Исполнение обзательств покупателями" и тп. 2. НО!!! Тут агрегация по затратам за период, отраженным в бухгалтерских проводках (строка с положительной суммой и сторока с отрицательной суммной) и, как эту вычисленную в запросе с параметрами "дата начала" и "дата окончания" (причем параметры дат берутся тупо из листа старт", без всяких T-SQL-х премудростей) агрегацию запихнуть в конкретную ячейку, мне непонятно. На недели коллеги просветят, но уж, простите неправильно понятым быть не очень приятственно. Всем огромное спасибо, в любом случае за небезразличность и участие!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 16:01:50
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
Дело не в том, какое поле в запросе: результат агрегированной функции, расчета или «сырое» значение, запрос есть запрос – возвращает набор значений. У меня , как минимум три метода отлично сработали: Код: plaintext Код: plaintext Код: plaintext покажи весь свой код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 16:04:04
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
Вопрос номер раз: Чем тебе Код: plaintext Вопрос номер два: Ты про Код: plaintext KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 16:05:04
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
PS рекордсет вот такой: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 16:07:42
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
KL (XL)Вопрос номер раз: Чем тебе Код: plaintext Вопрос номер два: Ты про Код: plaintext KL [MVP - Microsoft Excel] Мои вопросы есс-но не к vbapro :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 16:39:02
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vbaproPS рекордсет вот такой: Код: plaintext 1. Как уже первым делом предупреждал, что именно, не так делаю, и как правильно пользоваться документацией и советами, мне еще предстоит научиться. Так что критикуйте, как хотите. Но сам пишу первый раз, поэтому немного сложновато, а по причине выходных, отряд, доступных не только в нете, но и в реале коллег, в чьем программистском профессионализме я не сомневаюсь (по причине многолетнего знакомства), а соответственно хороших друзей и советчиков недоступен. Но, если у кого то из присутствующих есть желание помочь мне, то задам несколько вопросов: 1. Есть возможность поднять мою табличку на MS SQL (данных там кот наплакал), я бы её через, например access экспортнул. Естественено имя сервера и логин с паролем надо будет поменять в строке подключения из Excel VBA. 2. Вышлю и запрос, чтобы не было сомнений, что он рабочий. 3. Пришлю и сам лист с программой, для того, чтобы у желающих поучить меня уму-разуму, было чем развлечся. Как вам уважаемые, таке варианты? Жду адреса е-мылов и т.п. вещи для, того, чтобы я все это дело выложил. Ну, а проблема моя Вам уважаемые уже известна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 16:58:00
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
KL (XL)Вопрос номер раз: Чем тебе Код: plaintext Вопрос номер два: Ты про Код: plaintext KL [MVP - Microsoft Excel] 1. Не подошел, потому что ошибку выдает при выполнении. 2. Читал в хелпе эксельном, но по ссылке, также, возможно почитаю. На крайняк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 17:02:33
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
1) еще раз опиши структуру таблицы, можно только те поля, которые используешь 2) опиши подробно и ясно задачу, что хочешь получить 3) можешь выложить дамп таблицы в виде xls или sql этого будет достаточно чтоб тебе помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 17:09:55
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vitkru1. Не подошел, потому что ошибку выдает при выполнении. Наверно было бы нелишним указать какую конкретно ошибку выдает этот метод и точно воспроизвести используемый код ;-) И потом, ты к нужным библиотекам-то подсоединился? Ну там Microsoft ActiveX Data Objects #.# Library . А то я никогда не слышал, чтобы CopyFromRecordset выдавал ошибку если в рекордсете есть данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 17:24:36
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
KL (XL) vitkru1. Не подошел, потому что ошибку выдает при выполнении. Наверно было бы нелишним указать какую конкретно ошибку выдает этот метод и точно воспроизвести используемый код ;-) И потом, ты к нужным библиотекам-то подсоединился? Ну там Microsoft ActiveX Data Objects #.# Library . А то я никогда не слышал, чтобы CopyFromRecordset выдавал ошибку если в рекордсете есть данные. "Ругань" на неправильные библиотеки мне знакома, там было про агрумегты что то вроде... Остальное, точнее задачу сейчас опишу и выложу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 17:47:47
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vbapro1) еще раз опиши структуру таблицы, можно только те поля, которые используешь 2) опиши подробно и ясно задачу, что хочешь получить 3) можешь выложить дамп таблицы в виде xls или sql этого будет достаточно чтоб тебе помочь 1. Сделал скрипт создания таблицы проводок 2. Данные выгрузил в эксель 3. Привел пример своего кода 4. Описал задачу На все доп. вопросы, естественно, готов ответить в любой подробности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 18:25:19
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
у меня твоя программа работает: в С7 помещает значение 4000. Какая у тебя ошибка и в каком месте кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 18:28:51
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vbaproу меня твоя программа работает: в С7 помещает значение 4000. Какая у тебя ошибка и в каком месте кода? как не смешно никакой, но данные не проставляются вот думаю с нуля сделать лист, может пойму в чем дело, глаза чтоле уже устали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 18:42:37
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
добавь Option Explicit первой строкой модуля, введи промежуточные переменные и при отладке следи за значениями. При отладке убери On Error Resume Next ... Запрос нормальный, без ошибок, так что пробуй :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 18:46:10
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vbaproдобавь Option Explicit первой строкой модуля, введи промежуточные переменные и при отладке следи за значениями. При отладке убери On Error Resume Next ... Запрос нормальный, без ошибок, так что пробуй :) попробую, не сдамся... только, что профайлером посмотрел, читает ли он вообще что-либо, так как значение переменной, которую добавил чтобы проверить a = Range("C7").Value, равно 0 блин, а не 4000. И профайлер ничего не показал, если я логины, пароли и каталоги неправильно написал, то убью себя, наверное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.01.2008, 18:51:44
|
|||
|---|---|---|---|
|
|||
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vitkru vbaproдобавь Option Explicit первой строкой модуля, введи промежуточные переменные и при отладке следи за значениями. При отладке убери On Error Resume Next ... Запрос нормальный, без ошибок, так что пробуй :) попробую, не сдамся... только, что профайлером посмотрел, читает ли он вообще что-либо, так как значение переменной, которую добавил чтобы проверить a = Range("C7").Value, равно 0 блин, а не 4000. И профайлер ничего не показал, если я логины, пароли и каталоги неправильно написал, то убью себя, наверное так и есть!!!! я осел!!! но мош простить себя, все таки первый раз, на чужих правда исходниках, но со своим запросом кодю, блин.. хорошо и переменные вспомнил, что и про профайлер не забыл.... мош еще чо из меня получицо..... ВСЕМ ОГРОМНОЕ СПАСИБО ЗА ПОДДЕРЖКУ!!! НАДЕЮСЬ НА ДАЛЬНЕЙШЕЕ СОТРУДНИЧЕСТВО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.01.2008, 18:09:30
|
|||
|---|---|---|---|
Вытаскивание суммирующего значения через VBA+MS SQL, в одну ячейку |
|||
|
#18+
vitkru Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=61&tablet=1&tid=2181533]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 308ms |

| 0 / 0 |
