powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007, макрос, View
7 сообщений из 7, страница 1 из 1
Excel 2007, макрос, View
    #36909920
EgorovSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Макрос:



Dim form As SelectData

Sub RefreshData()
If form Is Nothing Then
Set form = New SelectData
End If
form.Show (vbModal)
Dim startDate As Date, EndDate As Date, strText
startDate = CDate(form.TextBox1.Text)
If form.ComboBox1.Text = "День" Then
EndDate = DateAdd("d", 1, startDate)
End If
If form.ComboBox1.Text = "Неделя" Then
EndDate = DateAdd("d", 7, startDate)
End If
If form.ComboBox1.Text = "Месяц" Then
EndDate = DateAdd("m", 1, startDate)
End If
If form.ComboBox1.Text = "09.09-20.09" Then
EndDate = DateAdd("d", 12, startDate)
End If
If form.ComboBox1.Text = "Год" Then
EndDate = DateAdd("m", 12, startDate)
End If
strText = "SELECT r.[Дата обращения],DATEPART(year, r.[Дата обращения]) AS Год, DATEPART(month, r.[Дата обращения]) AS Месяц, DATEPART(week, " & _
"r.[Дата обращения]) AS Неделя, CONVERT(DATETIME, CONVERT(VARCHAR, r.[Дата обращения], 12)) AS День,c.Регион, c.[Статус клиента], r.[Тип обращения], c.[Зарегистрирован во фронте], r.[Реакция клиента]," & _
"r.[Дата следующего звонка клиенту], r.[Когда планирует приобрести полис], r.[Модель], r.[Марка], r.[Год выпуска], c.[Дата рождения]," & _
"c.[Пол], c.[Дата первого водительского удостоверения], r.[Номер телефона],r.[Страховая премия], r.[Тема], r.[Канал], r.[Клиент], r.[Оператор]," & _
"COALESCE(c.[Контактный телефон],c.[Мобильный телефон], c.[Домашний телефон], r.[Номер телефона]) Телефон,c.[Канал регистрации в CRM],c.[Дата регистрации],r.[Суть претензии],c.[HASH]," & _
"c.[Дата регистриции во фронте] , r.[Продукт], r.[Комментарий] as [Комментарий к обращению], c.[Комментарий] as [Комментарий клиент], r.[Направление], r.[Подписан ли договор],r.[Дата начала действия договора],
r.[Действует ли договор], r.[Состояние оплаты], r.[Тема текущего обращения] " & _
"FROM crmContact_view2 r " & _
"LEFT JOIN crmCustomer_view c ON r.client_id = c.id WHERE [Дата обращения] BETWEEN '" & SQLDate(startDate) & "' AND '" & SQLDate(EndDate) & "' ORDER BY 1"
Worksheets("Данные").Range("a:az").Clear
With Worksheets("Данные").QueryTables.Add(Connection:= _
"ODBC;DSN=CRM;SERVER=TVR-CRM-01;UID=capella;Pwd=Passw0rd;DATABASE=CapellaCRM;" _
, Destination:=Worksheets("Данные").Range("A1"))
.CommandText = strText
.Name = "Query from CapellaSRM"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False

End With
Worksheets("Данные").Columns("A").NumberFormat = "m/d/yyyy"
Worksheets("Данные").Columns("B").NumberFormat = "m/d/yyyy"
Worksheets("Данные").Columns("C:D").NumberFormat = "General"
Worksheets("Данные").Columns("R").NumberFormat = "General"
Worksheets("Данные").Columns("T").NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Worksheets("Сводный отчет").PivotTables("СводнаяТаблица1").PivotCache.Refresh

End Sub
Function SQLDate(D As Date)
Dim retStr
retStr = DatePart("yyyy", D)
If DatePart("m", D) < 10 Then
retStr = retStr & "0"
End If
retStr = retStr & DatePart("m", D)
If DatePart("d", D) < 10 Then
retStr = retStr & "0"
End If
retStr = retStr & DatePart("d", D)
SQLDate = retStr
End Function


Собственно Select берет данные из двух вьюх:


strText = "SELECT r.[Дата обращения],DATEPART(year, r.[Дата обращения]) AS Год, DATEPART(month, r.[Дата обращения]) AS Месяц, DATEPART(week, " & _
"r.[Дата обращения]) AS Неделя, CONVERT(DATETIME, CONVERT(VARCHAR, r.[Дата обращения], 12)) AS День,c.Регион, c.[Статус клиента], r.[Тип обращения], c.[Зарегистрирован во фронте], r.[Реакция клиента]," & _
"r.[Дата следующего звонка клиенту], r.[Когда планирует приобрести полис], r.[Модель], r.[Марка], r.[Год выпуска], c.[Дата рождения]," & _
"c.[Пол], c.[Дата первого водительского удостоверения], r.[Номер телефона],r.[Страховая премия], r.[Тема], r.[Канал], r.[Клиент], r.[Оператор]," & _
"COALESCE(c.[Контактный телефон],c.[Мобильный телефон], c.[Домашний телефон], r.[Номер телефона]) Телефон,c.[Канал регистрации в CRM],c.[Дата регистрации],r.[Суть претензии],c.[HASH]," & _
"c.[Дата регистриции во фронте] , r.[Продукт], r.[Комментарий] as [Комментарий к обращению], c.[Комментарий] as [Комментарий клиент], r.[Направление], r.[Подписан ли договор],r.[Дата начала действия договора],
r.[Действует ли договор], r.[Состояние оплаты], r.[Тема текущего обращения] " & _
"FROM crmContact_view2 r " & _
"LEFT JOIN crmCustomer_view c ON r.client_id = c.id WHERE [Дата обращения] BETWEEN '" & SQLDate(startDate) & "' AND '" & SQLDate(EndDate) & "' ORDER BY 1"



Так вот проблема собственно такая.


При обновлении данных все работает хорошо. Операции вставки и замены также не вредят обновлению. А вот стоит удалить хотя бы одно поле (к примеру, r.[Продукт]) выскакивает ошибка 1004 "Недопустимое имя поля сводной таблицы. Чтобы создать сводную таблицу, используйте данные, организованные в виде списка с заголовками столбцов. Для изменения имени поля сводной таблицы введите новое имя.". Хотя на самом деле во Вьюхах все поля именованные.


strText = "SELECT r.[Дата обращения],DATEPART(year, r.[Дата обращения]) AS Год, DATEPART(month, r.[Дата обращения]) AS Месяц, DATEPART(week, " & _
"r.[Дата обращения]) AS Неделя, CONVERT(DATETIME, CONVERT(VARCHAR, r.[Дата обращения], 12)) AS День,c.Регион, c.[Статус клиента], r.[Тип обращения], c.[Зарегистрирован во фронте], r.[Реакция клиента]," & _
"r.[Дата следующего звонка клиенту], r.[Когда планирует приобрести полис], r.[Модель], r.[Марка], r.[Год выпуска], c.[Дата рождения]," & _
"c.[Пол], c.[Дата первого водительского удостоверения], r.[Номер телефона],r.[Страховая премия], r.[Тема], r.[Канал], r.[Клиент], r.[Оператор]," & _
"COALESCE(c.[Контактный телефон],c.[Мобильный телефон], c.[Домашний телефон], r.[Номер телефона]) Телефон,c.[Канал регистрации в CRM],c.[Дата регистрации],r.[Суть претензии],c.[HASH]," & _
"c.[Дата регистриции во фронте] , r.[Комментарий] as [Комментарий к обращению], c.[Комментарий] as [Комментарий клиент], r.[Направление], r.[Подписан ли договор],r.[Дата начала действия договора],
r.[Действует ли договор], r.[Состояние оплаты], r.[Тема текущего обращения] " & _
"FROM crmContact_view2 r " & _
"LEFT JOIN crmCustomer_view c ON r.client_id = c.id WHERE [Дата обращения] BETWEEN '" & SQLDate(startDate) & "' AND '" & SQLDate(EndDate) & "' ORDER BY 1"



Есть аналогичная проблема, но в другом файле. Там работает Select * (select по всем полям), но не работает Select по конкретным полям, хотя, повторюсь, поля все именованные.


В чем может быть проблема? В excele? В макросе? Во вьюхах?
...
Рейтинг: 0 / 0
Excel 2007, макрос, View
    #36910949
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забейте на MS.Query и сводные таблицы.
Лучше - делать запрсы через ADODB и сводить выборки программно (в VBA).
Как минимум - не будет проблем из-за разночтений в синтаксисе Query и SQL-ODBC...
...
Рейтинг: 0 / 0
Excel 2007, макрос, View
    #36911109
EgorovSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А примерчик может есть?
...
Рейтинг: 0 / 0
Excel 2007, макрос, View
    #36911178
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgorovSV,

а кто вам мешает вставить псевдо -поле

......
"-" as [Продукт],
.............
...
Рейтинг: 0 / 0
Excel 2007, макрос, View
    #36911553
EgorovSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не выход
Пытаюсь сделать при помощи ADODB
Успехи пока не очень
...
Рейтинг: 0 / 0
Excel 2007, макрос, View
    #36912268
EgorovSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде победил при помощи Ado
...
Рейтинг: 0 / 0
Excel 2007, макрос, View
    #36912278
EgorovSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM спасибо за совет
Хотя все равно непонятно почему не работало со сводными таблицами...
Ох уж эти глюки вечные при разработке ПО=)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007, макрос, View
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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