|
|
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
Уважаемые Гуру и все кто сможет помочь... Не уверена что выбрала правильный раздел.. Расскажу суть проблемы с самого начала. В организации 1С ТиС7.7. Много пользователей, работает вяло, минимальный объем данных выгружается достаточно долго. Но при этом большинство пользователей извлекает по большей части сходные данные, просто по-разному организованные. Возникла идея ограничить доступ пользователям к 1С, обеспечив их при этом необходимыми данными в виде готовых динамических отчетов в Excel(в форме сводных таблиц, чтобы каждый смотрел как ему удобно). Для этого выгружать некие срезы БД (за день, неделю, месяц), делать из них выбор необходимой информации посредством SQL запроса в готовые отчеты, где потом посредством макросов рассчитывать необходимые аналитики. Данные выгружаются в DBF файлы. Ввиду моего скудного знания SQL(и написания запросов SQL на VBA) запросы делаю посредством MS Query. И собственно всё неплохо, если требуется простое соединение таблиц MS Query справляется нормально, все работает. Проблемы возникают, если нужно сделать полное внешнее соединение таблиц. MS Query умирает. Да собственно и если соединять более двух таблиц уже та же история. Что вообще лучше сделать? Если запрос SQL будет написан текстом непосредственно в макросе, то больше шансов что он выполнится, чем с использованием MS Query? Если не использовать выгрузку в DBF файлы, а подключаться к тем же данным в SQL формате на сервере, поможет ли это? ускорит процесс? есть шанс, что MS Query сможет с этим справится? А может есть какие более изящные решения, подскажите пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 11:11 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillavera, Доброго времени суток и Вам. Раскажу как у нас... Есть у нас определенное ПО в компании, но я не пользююсь им для отчетов. Мои познания в SQL и VBA возможно еще хуже чем у вас Но я сделал так. Есть Сервер MS SQL 2005 для своего отдела я организовал доступ к таблицам одной из баз (только чтение). Склепал в ЕКЦЕЛЕ пару запросов в MS Query и вывел их в сводную. Ну а со сводной можно сделать что угодно в ЕКЦЕЛЕ... Можете пару формул написать или макрос... Ну а сейчас я думаю над тем что бы сделаь формы в ЕКЦЕЛЬ и привязать их к серваку... То есть сделать файл в котором будут только формы... И 0 данных ... А вообще сделайте так, проследите кому какие данные нужны. Сделайте пару файлов для каждой из выделеных вами групп людей раскиньте доступ к таблицам базы и скиньте им ЕКСЕЛЕВСКИЕ файлы которые вы создадите. Так будет меньше гемора. И 1С виснуть не будет с серваком ))))) ИМХО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 11:24 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, мне кажется ,Вы мне предлагаете то же что и я планировала. Тут вопрос вот в чем. Общий набор данных в принципе определился. Что нужно ежедневно, что еженедельно, что ежемесячно. Проблема в больших объемах. Я просто не могу сделать запрос в Query( Mожет, конечно, если комп помощней и и потянет... Приходилось как-то на личном буке работать, запросы выполнялись пошустрей. Где-то на форуме читала, что MSQuery нормально работает только при оперативке от 2ГБ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 11:35 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillaveraСпасибо большое, мне кажется ,Вы мне предлагаете то же что и я планировала. Тут вопрос вот в чем. Общий набор данных в принципе определился. Что нужно ежедневно, что еженедельно, что ежемесячно. Проблема в больших объемах. Я просто не могу сделать запрос в Query( Может, конечно, если комп помощней и и потянет... Приходилось как-то на личном буке работать, запросы выполнялись пошустрей. Где-то на форуме читала, что MSQuery нормально работает только при оперативке от 2ГБ? Ну конечно там еще зависит от того, на сколько правильно построена база проставлены ключи в таблицах БД. И от того как вы сделаете запрос... Конечно еще играет роль кол-во данных. Если вы хотите выводить 10 000 000 строк то будет долговато Примерно часик, второй... Покажите скриншот запроса Query может тут помогут спецы.... Возможно вы как-то не правильно объединяете поля... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 12:41 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
-O_o-,в двух словах: Есть справочники товары, клиенты, агенты, которые выгружаются отдельно, они изменяются не так часто. Есть таблица с данными о продажах, таблица с данными о Дебиторской задолженности. они содержат поля код товара, код агента, код клиента. если я хочу видеть продажи в разрезе клиентов делаю простое соединение таблицы продажи(access) с клиентами, если в разрезе товаров или производителей - соответственно со справочником товаров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 13:17 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
-O_o-,что-то у меня кроме Painta ничего здесь и нет, не знаю как скрины лучше уменьшить. Есть еще данные о дебиторской задолженности. Естественно вовсе не обязательно, что мы продаем в те точки, которые нам должны и наоборот. То есть если я хочу видеть и продажи и ДЗ в одном запросе - нужно полное внешнее соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 13:24 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
...полное внешнее соединение access и DZ. Вот тут мы и сели.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 13:26 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillavera, А вы точно объединяете таблицы по одним и тем же ключам??? То есть должно быть так как на картинке... Если же вы объединяете по разным полям... то выведет бред И кстати... Сделайте скрин, потом через ПАИНТ сохраните в формате ЖПГ. MS Picture manager есть такая стандартная программа в которой можно сжать рисунок не изменяя его размера (высоты и ширины). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 14:04 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
-O_o-,да по одним и тем же( SELECT access.ZONA, access.KANAL, Sum(access.SUMPROD) AS 'Продажи', Sum(access.SUMDOG) AS 'Продажи_в_ДогЦен' FROM {oj access access LEFT OUTER JOIN `Y:\Червакова\Выгрузки\Неделя1`\dz.DBF dz ON access.KODCLI = dz.KODCLI} GROUP BY access.ZONA, access.KANAL ORDER BY access.ZONA, access.KANAL UNION SELECT access.ZONA, access.KANAL, Sum(access.SUMPROD) AS 'Продажи', Sum(access.SUMDOG) AS 'Продажи_в_ДогЦен' FROM access access, `Y:\Червакова\Выгрузки\Неделя1`\dz.DBF dz WHERE access.KODCLI <> dz.KODCLI GROUP BY access.ZONA, access.KANAL ORDER BY access.ZONA, access.KANAL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 16:47 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillavera, авторЕсли запрос SQL будет написан текстом непосредственно в макросе, то больше шансов что он выполнится, чем с использованием MS Query? Если не использовать выгрузку в DBF файлы, а подключаться к тем же данным в SQL формате на сервере, поможет ли это? ускорит процесс? есть шанс, что MS Query сможет с этим справится? Так перечитал еще раз топик. 1-е советую конектиться сразу к SQL server через Excel - импорт внешних данных. В MS Query вытягиваем таблицы из SQL server. Так будет однозначно быстрее. У меня 500 000 строк в MS Query выводит за 1 сек. Потом запрос который получили выводим в сводную талицу. И еще одно, вы делает запрос к базе Access которая лежит на общем серваке??? Если да то товзможно это и тормозит обработку данных. ИМХО... Рекомендую сразу сделать в MS SQL server отчет, а потом его подтягивать через Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 17:54 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
автор Рекомендую сразу сделать в MS SQL server отчет, а потом его подтягивать через Excel. -O_o-, спасибо большое за ответ Сейчас запрос к набору DBF таблиц, да на общем сервере. Поясните, пожалуйста, что вы имеете ввиду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 22:30 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillaveraавтор Рекомендую сразу сделать в MS SQL server отчет, а потом его подтягивать через Excel. -O_o-, спасибо большое за ответ Сейчас запрос к набору DBF таблиц, да на общем сервере. Поясните, пожалуйста, что вы имеете ввиду? Админ который следит за базой, пускай сразу сделает таблицу с данными которые вы пытаетесь вытянуть через MS Query. Пускай все расчеты сделает на сервере в отдельную таблицу... А вы уже прямо из экселя будете тянуть эту таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 22:49 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
-O_o-, ...идея как раз была такова, чтобы вытянуть некоторый универсальный набор таблиц, из которых можно было было бы посредством MSQuery собрать то, что нужно и выгрузить в Excel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 23:10 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillavera-O_o-, ...идея как раз была такова, чтобы вытянуть некоторый универсальный набор таблиц, из которых можно было было бы посредством MSQuery собрать то, что нужно и выгрузить в Excel Ну так создайте эти таблицы на самом сервере, а потом через MS Query тяните все что вам нужно... Забросьте идею с DBF и Access тяните сразу из ЦДБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 23:21 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
-O_o-, спасибо большое за помощь. в принципе завтра IT отдел как раз обещал мне сделать формы для выгрузки сиих таблиц, чтобы я могла из MSQuery брать данные непосредственно с SQL server, посмотрим, как отразится на скорости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 23:34 |
|
||
|
Excel/MSQuery+SQL+VBA
|
|||
|---|---|---|---|
|
#18+
vanillavera-O_o-, спасибо большое за помощь. в принципе завтра IT отдел как раз обещал мне сделать формы для выгрузки сиих таблиц, чтобы я могла из MSQuery брать данные непосредственно с SQL server, посмотрим, как отразится на скорости... Буду ждать ответа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2010, 23:36 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36743122&tid=2177866]: |
0ms |
get settings: |
5ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 477ms |

| 0 / 0 |
