powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с MS Query
24 сообщений из 24, страница 1 из 1
Проблема с MS Query
    #37706888
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаю (пытаюсь безуспешно) данные из другой книги эксель на лист. После корректировки запроса в секции WHERE получаю предупреждение "Недопустимое имя сводной таблицы ..." (см картинку). Никакой сводной у меня нет, до корректировки все работало.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37706946
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщик, откройте кладовку и покажите весь код, а еще лучще проблемный файл.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37706980
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitryкладовщик, откройте кладовку и покажите весь код, а еще лучще проблемный файл.
Нет кода, я в самом Экселе это делаю: Данные-Подключения-Свойства-Определение-Изменить запрос. И далее в конструкторе или мастере построения условие меняю. Причем в MS Query данные корректные возвращаются, а в Эксель я их вернуть не могу - вышеуказанная ошибка вылезает. Думал, может у кого-то уже такая беда была ((.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37706989
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. меняю значение в секции WHERE:
Код: sql
1.
2.
3.
SELECT Count(Data0.`Дата звонка`) AS 'Всего звонков', Count(Data0.`Перевод состоялся`) AS 'Всего переводов', Count(Data0.`Перевод состоялся`)/Count(Data0.`Дата звонка`) AS 'Процент переводов'
FROM Data0 Data0
WHERE (Data0.Офис='Автовокзал (8 Марта, 95)')


и ошибка(((
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707007
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. создавать новые внешние данные я могу, а корректировать уже существующие не получается. Такая вот непонятка((
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707077
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщик,
Может через подключение работать и здесь менять??
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707180
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может так?

Код: sql
1.
2.
3.
SELECT Count(Data0.`Дата звонка`) AS 'Всего звонков', Count(Data0.`Перевод состоялся`) AS 'Всего переводов', Count(Data0.`Перевод состоялся`)/Count(Data0.`Дата звонка`) AS 'Процент переводов'
FROM Data0
WHERE (Data0.`Офис`='Автовокзал (8 Марта, 95)')



или так:

Код: sql
1.
2.
3.
SELECT Count(Data0.[Дата звонка]) AS 'Всего звонков', Count(Data0.[Перевод состоялся]) AS 'Всего переводов', Count(Data0.[Перевод состоялся])/Count(Data0.[Дата звонка]) AS 'Процент переводов'
FROM Data0
WHERE (Data0.[Офис]='Автовокзал (8 Марта, 95)')
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707184
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или даже так:

Код: sql
1.
2.
3.
SELECT Count([Дата звонка]) AS 'Всего звонков', Count([Перевод состоялся]) AS 'Всего переводов', Count([Перевод состоялся])/Count([Дата звонка]) AS 'Процент переводов'
FROM Data0
WHERE [Офис]='Автовокзал (8 Марта, 95)'
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707268
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitryкладовщик,
Может через подключение работать и здесь менять??
Так я тоже делал.
KL (XL), штука в том, что
Код: sql
1.
2.
3.
SELECT Count(Data0.`Дата звонка`) AS 'Всего звонков', Count(Data0.`Перевод состоялся`) AS 'Всего переводов', Count(Data0.`Перевод состоялся`)/Count(Data0.`Дата звонка`) AS 'Процент переводов'
FROM Data0 Data0
WHERE (Data0.Офис='Автовокзал (8 Марта, 95)')  


работает, если я меняю в WHERE, к примеру, Data0.Офис='Дирижабль' - данные в самом MS Query корректные возвращаются. В Эксель вернуть не могу(( Ну и ошибка какая-то абсурдная, что-то про пивот, когда у меня вообще ни 1-го пивота в книге нету. Ошибка, наверное, не в синтаксисе.
Можно попробовать завтра ч-з MS Query данные с Акцесса или с Постгресса повозвращать что ли для теста и потом редактировать. Но, с друой стороны, сегодня я с МС СКЛя в том же MS Query запрос отредактировал и все с ним было в порядке. Пока думаю, что то ли у меня драйвер эксельный сломался, то ли сам Эксель, то ли компьютер.
Утащу книги домой и в выходные на домашнем компе попробую проверить эту гипотезу.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707299
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточнение:
KL (XL), сам существующий запрос
Код: sql
1.
2.
3.
SELECT Count(Data0.`Дата звонка`) AS 'Всего звонков', Count(Data0.`Перевод состоялся`) AS 'Всего переводов', Count(Data0.`Перевод состоялся`)/Count(Data0.`Дата звонка`) AS 'Процент переводов'
FROM Data0 Data0
WHERE (Data0.Офис='Автовокзал (8 Марта, 95)')


работает и данные в Эксель возвращает. Но корректировать не получается.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37707390
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщик,

попробуйте записывать условие так:

Код: sql
1.
WHERE (Data0.Офис="Автовокзал (8 Марта, 95)")
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709044
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)кладовщик,

попробуйте записывать условие так:

Код: sql
1.
WHERE (Data0.Офис="Автовокзал (8 Марта, 95)")


Такой синтаксис, видимо, ошибочный, т.к. ОДБЦ-драйвер ошибку выдает.
На домашнем компе та же проблема со сводной вылезает. Меняю что-либо в разделе строка подключения - и вышеупомянутый облом(( Причем в том же запросе с домашнего МС СКЛя все поменял и данные вернулись((( Я вот не помню, менял я раньше что-то в МС Квери из Экселя. Может это вообще нельзя делать? Типа создал 1 раз запрос из Экселя и все?
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709046
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщик,

Тяни данные через ADO и забудь про проблемы
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709073
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitryкладовщик,

Тяни данные через ADO и забудь про проблемы
Там в исходной таблице Экселя есть несколько столбцов с одинаковыми названиями. MS Query при работе следующ(ему|им) пол(ю|ям) с уже встречающимся ранее названием Field присваивает имя Field1, Field2 и тд. А как в ADO это сделать? Если таблица (лист в экселе) со столбцами 'Сотрудник', 'Сотрудник' и еще раз 'Сотрудник' (((
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709108
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщик,

считывай без заголовков HDR=NO

ТЫНЦ
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709128
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вам готовая функция пользуйтесь
Код: vbnet
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean)
'==============================================================================
'*Описание функции : Возвращает набор записей Recordset с первой ячейки адреса,
'* указанного диапазона.
'*strSql - Конструкция SQL  запроса.
'* FilePath - Полный путь к файлу включая имя и расширение.
'* OutputRange - адрес ячеки с которой начинается вывод данных.
'* FieldsName - используются или нет заголовки столбцов (True - False)
'* OutputFieldsName - вывод данных с заголовками или без (True - False), _
'==============================================================================
'* Автор R Dmitry (Дмитрий Русак dg_rusak@mail.ru skype: RDG_Dmitry)          |
'* WM:_R269866874234 U144446690328                                            |
'==============================================================================
Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
Select Case Val(Application.Version)
    Case Is < 12
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is >= 12
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select

cn.Open sCon
If Not cn.State = 1 Then Exit Function
Set rs = cn.Execute(StrSql)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i = 0 To rs.Fields.Count - 1
    OutputRange.Offset(0, i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset(1, 0)
 End If
 DoEvents
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function

'=================Пример использования=======================
Sub test()
Dim strSql2$
strSql2 = "select * from table"
Sheets(2).[a1].CurrentRegion.ClearContents
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets(2).[a1], True, True)
Sheets(2).Activate
End Sub

...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709277
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitry,

перед select case строка потерялась :(
Код: vbnet
1.
If FieldsName Then FieldName = "Yes" Else FieldName = "No"

...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709361
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кладовщик,
Там в исходной таблице Экселя есть несколько столбцов с одинаковыми названиями. MS Query при работе следующ(ему|им) пол(ю|ям) с уже встречающимся ранее названием Field присваивает имя Field1, Field2 и тд. А как в ADO это сделать? Если таблица (лист в экселе) со столбцами 'Сотрудник', 'Сотрудник' и еще раз 'Сотрудник' (((
Никак не надо делать . Провайдер сам разберётся с именованием полей в наборе записей.
Из столбцов с одинаковыми именами 'Сотрудник', 'Сотрудник' и еще раз 'Сотрудник', и ещё ...
получите поля 'Сотрудник', 'Сотрудник 1 ', 'Сотрудник 2 ', ... и т.д.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709415
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

По мне так лучше F1.....Fn, букав меньше
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709619
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На данный момент думаю сделать ч-з ADO. К сожалению, у меня строка отличается от SELECT * FROM Table, поэтому-то я и хотел MS Query использовать. Т.к. число столбцов и их названия могут меняться, и каждый раз порядка 60 полей в строке прописывать противно(( Думаю пока все-таки все столбцы в рекордсете возвращать, а потом уже на листе экселя удалять ненужные.
ЗЫ А все-таки, почему не получается в MS Query запросы менять и возвращать в Эксель? Я сейчас попробовал еще раз: ч-з МС Квери с МС СКЛя получил данные, попробовал изменить - в МС Квери изменил, вернуть на лист не получается из-за той же ошибки. Может что-то где-то в настройках нужно изменить?
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709785
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщик,

Разницы нет какая строчка, это всего лишь строка с нужным набором символов
Если запрос составлен правильно то и отработает jet соответственно, простой запрос или сложный ему до фонаря
у меня и такие и бывают :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SqlReport = "SELECT First(Sad.NameSad), Sum(Q.DetiAll) AS DetiAll, Sum(Q.DetiV) AS DetiV, Sum(Q.Famall) AS FamAll, Sum(Q.FamOut) AS FamOut" _
& " FROM (SELECT first(Deti.[IdSad]) AS IDsad, count( Deti.[IdDeti]) AS DetiAll, 0 as DetiV, 0 as FamAll, 0 as FamOut" _
& " FROM Deti WHERE (Deti.[DataDeti] < " & DataSql(DF) & ") And (Deti.[DataVybDeti] >= " & DataSql(DS) & " Or Deti.[DataVybDeti] Is Null)" _
& " GROUP BY Deti.[IdSad] Union SELECT (Deti.IdSad) AS IDsad, 0 as DetiAll, Count((Deti.IdDeti)) AS DetiV, 0 as FamAll, 0 as FamOut" _
& " FROM Deti WHERE (((Deti.DataDeti) < " & DataSql(DF) & ") And ((Deti.DataVybDeti) >= " & DataSql(DS) & " And (Deti.DataVybDeti) < " & DataSql(DF) & "))" _
& " Group BY(Deti.idSad) Union SELECT First(A.IdSad) AS IDsad,  0 as DetiAll, 0 as DetiV, Count(A.DetiAll) AS FamiliAll , 0 as FamOut" _
& " FROM (SELECT First(Deti.IdSad) AS IDsad, Count(Deti.IdDeti) AS DetiAll" _
& " FROM Deti WHERE (((Deti.DataDeti) < " & DataSql(DF) & ") And ((Deti.DataVybDeti) >= " & DataSql(DS) & " Or (Deti.DataVybDeti) Is Null))" _
& " GROUP BY Deti.IdSad, Deti.IdFamili)  AS A" _
& " GROUP BY A.IdSad Union all SELECT A4.IDsad, 0 AS DetiAll, 0 as DetiV, 0 as FamAll, 1 AS FamOut" _
& " FROM (SELECT First(Deti.IdSad) AS IDsad, Count(Deti.IdDeti) AS DetiAll, Deti.IdFamili" _
& " FROM Deti WHERE (((Deti.DataDeti) < " & DataSql(DF) & ") And ((Deti.DataVybDeti) >= " & DataSql(DS) & " Or (Deti.DataVybDeti) Is Null))" _
& " GROUP BY Deti.IdFamili, Deti.IdSad) as A4 INNER Join" _
& " (SELECT First(Deti.IdSad) AS IDsad, Count(Deti.IdDeti) AS DetiAll, Deti.IdFamili" _
& " FROM Deti WHERE (((Deti.DataDeti) < " & DataSql(DF) & ") And ((Deti.DataVybDeti) >= " & DataSql(DS) & "And (Deti.DataVybDeti) < " & DataSql(DF) & "))" _
& " GROUP BY Deti.IdFamili, Deti.IdSad) as A44" _
& " ON (A4.IdFamili = A44.IdFamili) AND (A4.DetiAll = A44.DetiAll) AND (A4.IDsad = A44.IDsad))  AS Q INNER JOIN Sad ON Q.IDsad = Sad.IdSad" _
& " GROUP BY Q.IdSad"

...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709793
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кладовщик,

> вернуть на лист не получается из-за той же ошибки.
Кстати, у Вас в описании ошибки 'недопустимое имя поля сводной таблицы'. При цитировании Вы слово 'поле' потеряли. Может проблема из-за повторяющихся имен столбцов на листе с данными ?

> Может что-то где-то в настройках нужно изменить?
Вряд-ли. Скорее всего - в запросе.
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37709855
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища, с запросом все в порядке.
Я провел эксперимент: создал сейчас новую книгу, в ней новое подключение к той же книге с исходными данными. Скопировал текст запроса из книги, кот-ю с работы припер. Все работает в полный рост. Текст запроса меняю, данные корректные возвращаются. Вот такие дела :-()
...
Рейтинг: 0 / 0
Проблема с MS Query
    #37717307
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Унес книгу на работу, сменил там в св-вах данных строку подключения и все корректно ч-з МС Квери обновилось. В чем была проблема со старыми книгами - до сих пор не знаю(( Какой-то конкретный случай сатанизма в нескольких конкретных воркбуксах, не иначе.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с MS Query
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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