Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 101 След.
PQ: Вырезать ссылку из текстового поля
 
Ух, какие шедевры!.. Спасибо!.. а я только решила разбираться, искать, начинать с нуля - RegEx in Power BI and Power Query in Excel with Java Script
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 

List.Generate
адаптация примера Андрей VG с линка #25 пост #9 на вашу задачу - можно так:

Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Typed = Table.TransformColumnTypes(Source,{{"Код", Int64.Type}, {"Статус", type text}, {"Дата С", type date}, {"Дата ПО", type date}}),
    Maker = Table.Group(Typed, {"Код"}, {"temp", (sub) =>
        let
            setRunningOrder = Table.Sort(sub, {{"Дата С", Order.Descending}}),        // Desc - acc. priority
            Count = Table.RowCount(sub),
            dts = Table.Buffer(setRunningOrder[[Статус],[Дата С],[Дата ПО]]),
            DateLists = Table.AddColumn(dts, "Дата", each List.Dates(_[Дата С], Duration.TotalDays(_[Дата ПО] - _[Дата С]) + 1, #duration(1, 0, 0, 0))),
 
            calcRunningTotal = List.Generate(
                //до id=0
                () => [id = 0 , runningDatesNEW = DateLists[Дата]{id}, runningDatesEXIST = DateLists[Дата]{id}], //N.B. если все running выставить в {} - {} record тоже задаётся! в output => нач. count с -1 -- ! потом убрать join'ом далее... ИЛИ БРАТЬ 1-ЫЙ !!! (как здесь)
                // от хвоста  
                each [id] < Count,       
                // ==> Инструкции… (List.Difference ИЛИ Table.Join (AntiJoun) --- N.B. List OR Table do you have)
                each [id = [id] + 1,  runningDatesNEW = List.Difference( DateLists[Дата]{id},[runningDatesEXIST]), runningDatesEXIST = List.Combine({[runningDatesEXIST], DateLists[Дата]{id}})], 
                each {[id], [runningDatesNEW],  [runningDatesEXIST]}
            ),
            // потом Join по Id
            makeRunningTable = Table.FromRows(calcRunningTotal, {"id", "runningDatesNEW", "runningDatesEXIST"}),
            addIdxForRunningJoin = Table.AddIndexColumn(setRunningOrder, "id"),            // от 0
            result = Table.Join(addIdxForRunningJoin, {"id"}, makeRunningTable, {"id"})    //здесь убирается запись с id=-1 (если надо) 
        in
        result
    }),    
    exp1 = Table.ExpandListColumn(Maker, "temp"),
    exp2 = Table.ExpandRecordColumn(exp1, "temp", { "Статус", "runningDatesNEW"}, { "Статус", "runningDatesNEW"}),
    exp_generated = Table.ExpandListColumn(exp2, "runningDatesNEW"),
    #"Changed Type" = Table.TransformColumnTypes(exp_generated, {{"runningDatesNEW", type date}})
in
#"Changed Type"

p.s.
файл прилагается (со всеми вариантами, прозвучавшими на ветке)...
p.p.s
обратить внимание, что при задании входных переменных - они тоже будут фигурировать в output (т.е. входные данные уже идут 1-й строкой в итоги) - или потом надо от начальной строки избавляться (если не подходит по общему смыслу итоговых сгенерированных строк - т.к. входящие данные служат только как входящие [но выводятся строки сгенерированные на их основе])...
Изменено: JeyCi - 2 Ноя 2018 11:34:45
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 
а вообще, Андрей VG, конечно, прав - Table.Group - это сила (при работе со структурой, как с целым) !..
Алгоритм, минимизирующий память и максимизирующий скорость, - это тоже сила !..
p.s.
ваш List.Accumulate, который вы хотели, как раз имеет недостатки для вашей задачи: у вас state должен быть по сходствам, но в current вы хотите выводить различия... поэтому уже новый state (отражая различия) ну никак уже не будет показывать, что у вас уже было в более приоритетных статусах по сходству... имхо
p.p.s
List.Generate же, насколько понимаю, не обязан выводить ничего (только то, что вы его попросите), но выполняет инструкции, указанные вами по превращению переменных (и кстати помнит эти переменные в памяти, не в строках state or current)... имхо... вам как бы и надо вести 2 линии: что было - чтобы сравнивать потом на сходства, и чего не было - чтобы выводить отличия от прежнего (и добавлять в линию для поиска сходства далее, дабы потом снова выбросить новые все сходства), и вывести лишь отличия)... думаю так... (или, как написал  Андрей VG, - забрасывать пройденное в стек)... надо думать
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 
вариант c комментами
Код
let
    dateList = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    typed = Table.TransformColumnTypes(dateList,{{"Дата С", type date}, {"Дата ПО", type date}}),
    sorted = Table.Sort(typed, {"Код", {"Дата С", Order.Descending} }),    
    grouped=Table.Group(sorted,"Код", {"lastRenew", each  List.Max([Дата С])} ),
    joined=Table.NestedJoin(grouped,"Код", sorted,"Код",  "nest"),    
    indexed = Table.TransformColumns(joined, { {"nest", each Table.AddIndexColumn(_, "Index", 1, 1) } }),
//-UDF1
listrng = (this as table) => let  
    // те Статусы, которые выше   
    add= Table.AddColumn(this, "Initial", each Table.Range(this[[Статус],[Дата С],[Дата ПО]],0,[Index]-1)),    //CUMMULATED PREVIOUS    
    // развернули массивы Дат в колонку [dts] в prior_cummulated_subgroup of Initial:
    // -- UDF2
        listdts =  (this2 as table) => let  
            aa=  Table.AddColumn(this2, "dts", each List.Dates(_[Дата С],Duration.Days(_[Дата ПО] - _[Дата С]) + 1, #duration(1, 0, 0, 0)), type datetime )
        in aa,
    // -- implementation of UDF2
    trans= Table.TransformColumns(add, {"Initial", each listdts(_) } ),    
    // вывод в строки Initial - всех prior Дат 
    trans2= Table.TransformColumns(trans, {"Initial", each List.Sort(List.Distinct(List.Combine(_[dts])))}),     
    // исключение из каждого текущего prior Дат (т.е. тех, у которык уже более приоритетный Статус есть)
    current= Table.AddColumn(trans2, "curretdts", each List.Dates(_[Дата С],Duration.Days(_[Дата ПО] - _[Дата С]) + 1, #duration(1, 0, 0, 0)), type datetime ),
    crossremove= Table.AddColumn(current, "dts_In_Work", each  List.RemoveItems( _[curretdts], _[Initial]) )
in 
crossremove,    
    // - implementation of UDF1
    cumm = Table.TransformColumns(indexed, {"nest", each listrng(_)} ),                   
    #"Expanded nest" = Table.ExpandTableColumn(cumm, "nest", {"Статус", "dts_In_Work"}, {"Статус", "dts_In_Work"}),
    #"Expanded nest.dtsInWork" = Table.ExpandListColumn(#"Expanded nest", "dts_In_Work"),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded nest.dtsInWork",{{"dts_In_Work", type date}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"lastRenew"})
in
    #"Removed Columns"
P.S.
MY REVIEW:
манипулировать подструктурами удобнее через UDF (с точки зрения синтаксиса)
ещё более глубокими подструктурами (иными по строению) - новыми (иными по обработке) UDF
и т.д. [особенно на первых порах]
Изменено: JeyCi - 30 Окт 2018 09:40:39
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 
да, каюсь не сразу осилила читать всю ветку...
по сути надо сравнивать с каждым предыдущим по Дата_ПО -- и удалять те, которые уже вошли датой в последний статус, а иные (у которых Дата_ПО превосходит Дата_ПО последнего статуса -- добавлять довесочком непересекающиеся дни (т.е. отсутствующие в последнем статусе и всех предыдущи)... вам не кажется - что вы могли бы пробовать ещё на этапе получения нач. табл. - разобраться с исключением пересечений?.. (любыми средствами - хотя бы sql)... чтобы потом не ковыряться в этом через PQ... не вижу смысла отталкиваться от кривой нач. структуры инструментом предназначенным для работы со структурой в целом, если для работы с частями от целого имеются иные более удобные инструменты... не вникаю в вашу задачу - не интересно отвёрткой забивать гвозди  8) ... но если вы изобретёте новую функцию EARLIER(DAX) для PQ - и ещё эффективно работающую... - порекомендую вас в Microsoft  ;) ... успехов вам... хотя сама всегда стараюсь изначально продумывать источник, чтобы потом для него выбирать инструмент и на него ложить код выбранным инструментом
p.s.
вы хотите задачу - обратную этой - и ещё убрать пересечение дат (для таких целей есть AntiJoin и List.Difference в PQ - не тестировала)
p.p.s с недающим вам спокойно жить - List.Accumulate - есть интересный пример Running Totals using the List.Accumulate() Function -- куммулятивного собирания листа (и совсем не List.Accumulate, а List.Range нужен)... с ходу не адаптируется под ваш случай -- неудобство: расковырять группы по кодам вашим (можно пробовать заворачивать UDF)... всё-таки PQ немного для иного -- как ETL инструмент, а не для групповых операций и хождению по строкам)... имхо... хотя и PQ работает с sql-запросами - но ваш вопрос всё-таки больше смахивает на ТЗ для разбора всех огрех вашей нач. структуры -- это уже не "Вопрос по XL"  ;)  
Изменено: JeyCi - 27 Окт 2018 12:31:42
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 
может вы всё усложняете?.. вам это надо ? (dateTable)
Код
let
    dateList = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(dateList,{{"Дата С", type date}, {"Дата ПО", type date}}),
    dateTable = Table.AddColumn(#"Changed Type", "dt_list", each  List.Dates(_[Дата С],Duration.Days(_[Дата ПО] - _[Дата С]) + 1, #duration(1, 0, 0, 0)), type datetime ),
    res=Table.ExpandListColumn(dateTable,"dt_list"),
    #"Changed Type1" = Table.TransformColumnTypes(res,{{"dt_list", type date}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Дата С", "Дата ПО"})
in #"Removed Columns"
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 
Цитата
Вильдан volfman написал:
result=List.Accumulate(СтолбецСоСпискомДат[Дата], {}, (st,cur)=>List.Combine(cur,List.Difference(st,cur)))
а зачем вы делаете Combine, если у вас и так есть Accumulate?.. так что хотите на выходе такими манипуляциями - опишите логику шагов - для себя хотя бы  ;) ...
простой List.Accumulate - для получения нескольких аггрегированных результатов - как-то так:
Код
let
Source=Excel.CurrentWorkbook()
{[Name="Table1"]}[Content],
myList=Table.Column(Source, "vol"),
done=List.Accumulate(myList, [result1=0, result2=0, resultN=1],   //initial state & variables

(state, current)=>
// каждый последующий
[result1=Value.Add(state[result1],current),
result2=Value.Subtract(state[result2],current),
resultN=(state[resultN]*current)]
) 
in done
Изменено: JeyCi - 26 Окт 2018 11:32:48
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Power query сделать непересекаемые периоды дат
 
Цитата
PooHkrd написал:
попросить их в личке
! в личку обычно за доп. плату  ;)
потому что ради интереса и так в ветку заходят... а личка всё-таки private территоря времени!... не нам же распоряжаться ей чужой... да и решение на добровольных началах может быть интересно и др. посетителям сайта...
обращение в личку - безвозмездное покушение на чужое время, да только для себя любимого - это эгоизм  :sceptic: имхо...
p.s.
давайте соблюдать рамки приличия...
Изменено: JeyCi - 25 Окт 2018 09:10:13
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Мера Power Pivot: расчет суммы показателя. Ошибка
 
Цитата
vorev написал:
Задание прямо с порога
+1
ответ тоже с порога:
правильно настраивайте фильтра в мере и не учитывайте - для\из какого контекста переменными оперируете (контекст строки, столбца или запроса)... для разных контекстов формульный вид меры может отличаться!
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сворачивание полей в сводной таблице PowerPivot по аналогии со стандартной сводной таблицей, Другими словами, нужна мера которая игнорирует значения в одном из столбцов (сложно описать, подробности в сообщении и примере)
 
насколько я понимаю, если есть хоть какие аггрегиронные переменные - то лучше меру... если мера  справляется с нужной задачей - то лучше меру -- всё как-то меньше памяти расчёты\файл будут занимать... да и если она правильно написана, то и в фильтрации сводной и разворачивании\сворачивании будет вести себя предсказуемо...
вычисляемые столбцы - только в крайних случаях, когда мера не те значения даёт (пробовать вычисляемые столбцы в последнюю очередь) ... имхо
Изменено: JeyCi - 25 Окт 2018 08:50:14
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
TheBestOfTheBest написал: Как мы определим какие строки надо апдейтить, а какие нет?
по первичному ключу
p.s.
ещё мне кажется по логике подходов можно рассмотреть пару вариантов:
6)
Код
BEGIN TRANSACTION
Conclude a transaction by committing all work performed during the transaction.
COMMIT [TRANSACTION | WORK]
Conclude a transaction by rolling back all work performed during the transaction.
ROLLBACK [TRANSACTION | WORK]
были и на планете примеры транзакций через ADO - BeginTrans (правда, вставка) и пример Begin Transaction - PQ
... если проставлять по ходу изменений в доп столбце xl пометку об изменениях - то можно как-то так (чтобы не лопатить весь сервер - по выбранному сиолбцу )  (можно через Application.InputBox дописать в начале выбор) :
Код
'подключение см. выше...
Set RS = CreateObject("ADODB.Recordset")
RS.LockType = 3     ' adLockOptimistic
sSql = "SELECT * FROM tblMyDone "
RS.Open sSql, cn, adOpenKeyset
     
changeToDB = Sheets(1).[A1].CurrentRegion.Value
     
    cn.BeginTrans
    For i = LBound(changeToDB, 1) + 1 To UBound(changeToDB, 1)  'без шапки
        Select Case changeToDB(i, 5)
        Case "CHANGED"
            RS.MoveFirst
            RS.Find "column_1=" & changeToDB(i, 1) & ""         ' Find Primary Key
            RS.Fields(NName).Value = changeToDB(i, N)            ' Change data in edit buffer
        End Select
    Next
     
'    RS.Update
    If MsgBox("Update all changes?", vbYesNo) = vbYes Then      ' Prompt user to "Use Update to replace the original data with the buffered data in the Recordset"
        RS.Update
    Else
        RS.CancelUpdate
    End If
     
'    cn.RollbackTrans
    If MsgBox("Save all changes to DB?", vbYesNo) = vbYes Then    ' Prompt user to commit all changes made
        cn.CommitTrans
    Else
        cn.RollbackTrans
    End If
 
RS.Close
cn.Close

==========или
changeToDB = Sheets(1).[A1].CurrentRegion.Value
    
    For i = LBound(changeToDB, 1) + 1 To UBound(changeToDB, 1)  'без шапки
        Select Case changeToDB(i, 5)    '<<<<< (acc. CHG)
        Case "CHANGED"
            cn.Execute "UPDATE tblMyDone SET " & NName & " = " & changeToDB(i, N) & " WHERE column_1 = " & changeToDB(i, 1) & ""
        End Select
    Next
    
cn.Close
7) подумать на самом сервере - Stored Procedures как запускать из xl?..
ИЛИ лучше ADO команду с параметром (как замена хр.проц.сервера) выполнить со стороны клиента (NName - столбец по которому изменения, column_1 primary key):
Код
'подключение см. выше...
changeToDB = Sheets(1).[A1].CurrentRegion.Value
    
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = cn
    cmd.CommandText = "UPDATE tblMyDone SET " & NName & " = ? WHERE column_1 = ?"
    cmd.CommandType = adCmdText
    
For i = LBound(changeToDB, 1) + 1 To UBound(changeToDB, 1)  
     cmd.Execute Parameters:=Array(changeToDB(i, N), changeToDB(i, 1))
Next    
Set cmd = Nothing
cn.Close
p.s.
хотя честно говоря, ещё ничего не тестировала... т.к. 1-ое с чем считаю важным  познакомиться при старте осваивания инструментов Visual Studio - это развернуть тестовуюБД (уже нашла кнопки), И ! Индексация и ! тест ! скорости выполнения запросов при данной Индексации (чтобы если не ускоряют - удалить индексы - надо освоить тесты)... и вообще мне кажется, что основная работа по созданию БД - это после проектирования, создания и загрузки всех данных, - прогон всех тестов на целостность и скорость работы БД - наверно, занимает больше всего времени... имхо... потом раздать права доступа админу, начальству и юзерам... и потом периодически тестировать скорость при настроенной индексации "по полям объединения и фильтрации" и первичным ключам в обязательном порядке (по мере заполнения бд)
Изменено: JeyCi - 23 Окт 2018 16:02:51
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
JeyCi написал:
P.P.S но в качестве IDE всё-таки VisualStudio  
оно судя по всему, вероятно, ещё и в качестве CASE может использоваться??.. не знаю насколько продуктивно??.. хм... хотя есть нюансы: Microsoft извлек уроки из опыта индустрии, и планирует избежать подводных камней CASE  :( - не понятно есть ли нормальный CASE в Visual Studio, или нет -- и нужен ли при моделировании... (или это уже прошлый век?)
p.s.
кстати хорошую книгу полистала (рекомендую всееем начинающим) - если найдёте (в сети не вижу - а то бы оставила линк) -- но мне понравилась, как Дающая выбор структуры данных, для использования в проектировании бд (Модели Данных - иерархические, сетевые, ER, многомерные, ООМД, ОРМД)... хоть в книге примеры и скрины из Power Designer в качестве CASE-средства -- но все основы Проектирования разложены по полочкам, как для меня - чтобы наконец осмысленно выбирать , что нравится, -- помимо уже пройденного (массивы, словари, коллекции) для более ресурсоёмких задач (деревья, графы, ER, Dimensions)....  Хранилища данных и Аналитики... и конечно же про этапы проектирования... - вобщем очень интересно для разграничения понятий и новых терминов... даже почувствовала себя более подкованной   8) после прочтения (пролистывания)...
! Проектирование баз данных : учебное пособие для студентов вузов /  Л. В. Рудикова . – Минск : ИВЦ Минфина, 2009
спасибо автору ! - теперь есть из чего выбирать - с пониманием ! - хотя дома держать сервер всё-равно как-то не comme ils faut... имхо... для рабочих моментов
Изменено: JeyCi - 19 Окт 2018 14:40:53
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
TheBestOfTheBest написал:
А как будет выглядеть код с UPDATE или MERGE? Проблема как раз не считать/добавить, а обновить. т.к. серверу требуется указать id строк
1) а Update с вложенным Select'ом  не сработает разве - на условном примере
Код
UPDATE
BOX a INNER JOIN (SELECT ID, Cur FROM Box IN "D:\Base1.mdb") b ON
a.ID = b.ID SET a.PREDID = b.Cur 
2) или как-то так (на условном примере)
Код
UPDATE OPT, ITM SET OPT.ITM = ITM.ITM, OPT.TV = ITM.TV
WHERE (OPT.tradeDate = ITM.tradeDate) AND (OPT.TK= ITM.TK) AND (OPT.settlementDt = ITM.settlementDt) 
AND (OPT.strike= ITM.strike) AND (OPT.type= ITM.type) 
допустим OPT - табл из БД, ITM - клиентская табл (в xl)...
хотя да это не вариант - уже вижу - подключение к разл. источникам здесь...
=====
3) Тогда через ADO Join'ом ... -- условные примеры SQL
Код
e.g. UPDATE Results AS A INNER JOIN [SELECT ShortNameR,Name FROM Result
IN "C:\2.mdb"]. AS B ON (A.Name =B.Name) AND
(A.ShortNameR=B.ShortNameR) SET A.VOl_R = B.Vol_R; 

e.g. : UPDATE tblAddress INNER JOIN tblZipCodes ON
[tblAddress].[ZipCode] = [tblZipCodes].[ZipCode]
SET [tblAddress].[City] = [tblZipCodes].[City], [tblAddress].[State] =
[tblZipCodes].[State] WHERE ([Country] = 'US')

4) или перебор строк xl'я и Update RS'а от Server'a
-- думаю так - но не тестила ещё...
5) 8) а есть и ход конём: загнать данные xl'я на сервак отдельной табл
Код
SELECT q_ITM.* INTO ITM FROM q_ITM
 -- и там на месте джойнить, что хочется  ;)  ...
ИЛИ вы предложите альтернативный вариант ? (как вариант)
Изменено: JeyCi - 18 Окт 2018 15:32:03
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
PowerPivot, PowerQuery, PowerBI
 
Цитата
Самир Мамедов написал: теперь у Power BI появился PDF connector. Уже можно будет подключаться к PDF файлам напрямую ....  https://powerbi.microsoft.com/en-us/blog/power-bi-desktop-september-2018-feature-summary/#dotPlot
заманчиво... найдут же чем привлечь  8) ... хотя pdf pdf'у рознь - уж очень сложная реализация текста бывает... попробую на досуге... thanks
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
JeyCi написал: пока стоит vs2010
вообще-то подключается к мастеру (который лежит в C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\master.mdf)
Код
Sub Connect_SQL_Server()
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
With cn
    .ConnectionString = "Provider=SQLOLEDB;Data Source=WIN-...........\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=master"
    Debug.Print .ConnectionString
    .CursorLocation = 3 'adUseClient
    .Mode = 3   'adModeReadWrite
    .Open
End With
Debug.Print cn.ConnectionString
cn.Execute ("INSERT INTO Table1(column_1, column_2) VALUES (12, 0)")
ThisWorkbook.Sheets("Лист1").[A1].CopyFromRecordset cn.Execute("SELECT * FROM Table1")
cn.Close
End Sub
значит и Server Express установился с VS2010 когда-то...
p.s.
всё: создала тестовую бд! - в ней таблицу - потом: -> Build-> Publish... (только в свойствах проектнойБД проставить имя сервера и выбрать Развёртывание после создания файла развёртывания)... и вуаля: оказалось тоже несложно... горизонты открыты, из xl подключение и заполнение бд настраивается макросом... вот и простенький клиент через ADO...
P.P.S но в качестве IDE всё-таки VisualStudio  
Изменено: JeyCi - 18 Окт 2018 15:56:15
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
TheBestOfTheBest написал: Переходите на SQLLocalDB, он полностью поддерживает объекты SQL server'а до версии 2016 (вроде) в последующих версиях отказались от LocalDB, т.к. LocalDB поставляется только с версиями Express.
смущает меня кстати в LocalDB (даже 2012) - его memory-share подключение вместо TCP/IP... при небольших размерах БД - видимо терпимо, а что делать потом... нет уж лучше нормальный SQL Server Express... но тоже: придётся и VisualStudio 2011 ставить, т.к. 2010(да ещё и не SP1) не даст создавать dbo2012 (только 2005/2008), а без него - SSMS Complete (50usd) - чтобы создавать dbo-файлы и править их, если всё равно стоит vs - как-то всё разбросано будет, да и не факт что понравится... а связываться с полноценным Сервером - тоже пока знаний поднасобирать надо... да и на настольном пк - хоть самолётом обзови, думаю, всё равно не взлетит по скорости - на таком-то железе, да ещё 32-й системе... то ли дело серверный винт (или хостинг, на облако вряд ли - просто вариант)... имхо - вот такие опасения о потерянном времени и загрузке памяти пока что
p.s.
пока стоит vs2010 - может и dbo(2008) посмотрела бы, чтоб познакомиться, обкатать, - но движок и драйвер (#67) всё равно устанавливать придётся - знать бы ставятся ли они без самого сервера?.. чтобы из эксельки поковырять?... .sdf CompactEdition уже установили чуть выше и подключились - оказалось не сложно... а для доступа к dbo (2008 пока в силу возможностей текущих) - пока не знаю, как достучаться..... буду думать, может созрею  :oops: ... Или найду какого простенького клиента БД?
Изменено: JeyCi - 12 Окт 2018 16:00:35
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
JeyCi написал:
но если заголовок поля состоит из 2х слов - тогда вылазит та ошибка...
проверила всё - некоторые 2-словные заголовки столбцов проходят, что-то нет... вобщем не в этом суть... просто вывод: есть альтернативные способы ковырять sdf - что вобщем-то и хотела найти... спасибо и за ваши идеи
p.s. зная строку подключения - запросы и в DbConsole можно просмотреть
Изменено: JeyCi - 12 Окт 2018 14:57:25
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 

отловила - нагородила всех свойств, что только смогла...

Код
Sub Connect_SQL_ServerCE()
Dim cn As Object
cn = CreateObject("ADODB.Connection")
With cn
    .ConnectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=E:\NEW docs\Услуги20.sdf;SSCE:Database Password=" & Sheets("Лист1").[b2].Value & ""
    Debug.Print .ConnectionString
    .CursorLocation = 3 'adUseClient
    .Mode = 3   'adModeReadWrite
    .Open
End With
Set rs = CreateObject("ADODB.Recordset")
rs.LockType = 3
sSql = "SELECT [Код] FROM [tbl_uslugi]"
rs.Open sSql, cn, adOpenStatic
    Arr = rs.GetRows
rs.Close
cn.Close
End Sub
но если заголовок поля состоит из 2х слов - тогда вылазит та ошибка...
на известном вам, TheBestOfTheBest, файле - поэтому и названия столбцов и таблиц из него... вобщем как-то так

Изменено: JeyCi - 11 Окт 2018 17:23:45
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
TheBestOfTheBest написал: Файл то не разрушен после такого подключения?
видимо - нет
Цитата
JeyCi написал: отсюда - SQLite & SQL Server Compact Toolbox extension  - подключение устанавливается
(мой #13) и SELECT * FROM tbl_uslugi  ;)  выполняется - перепроверила сейчас... спасибо за беспокойство... просто интересно без SaveToDB поюзать .sdf... но макрос из Excel останавливается, на цикле (как описала в предыдущем посту) - строка #8 из кода выше
Изменено: JeyCi - 11 Окт 2018 16:27:45
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
JeyCi написал: даже так поставила: " SSCE:Database Password=text "  и .Mode=3 и .CursorLocation=3 ... никак...
вот после этого до строки DB.Tables уже дохожу (cn.Open пропускает)... но DB.Tables.Count=0 и ошибка такая же - про многошаговую операцию...  :) он (код), наверно, думает "тише едешь - дальше будешь"
Изменено: JeyCi - 11 Окт 2018 16:25:31
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
TheBestOfTheBest написал:
Переходите на SQLLocalDB, он полностью поддерживает объекты SQL server'а до версии 2016 (вроде) в последующих версиях отказались от LocalDB, т.к. LocalDB поставляется только с версиями Express.
упс, уже и тут отказались  :( ... хотя если руки дойдут - то Express и буду смотреть...
TheBestOfTheBest спасибо! за ликбез
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
СХОЖЕЕ описание ошибки (и номер её) - а кому-то повезло - отловил  :) ... меня же по cn.Open не пропускает... возможно дело где-то там... ??
Изменено: JeyCi - 11 Окт 2018 15:50:10
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
ошибка кстати - какая-то длинная - "произошли ошибки во время выполнении многошаговой  операции oledb - по возможности проверьте значения всех состояний OLEDB. Работа не выполнена" - так звучит
p.s.
даже так поставила: "SSCE:Database Password=text"  и .Mode=3 и .CursorLocation=3 ... никак... и даже одинарные кавычки вокруг text пробовала...
Изменено: JeyCi - 11 Окт 2018 15:37:37
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 

Установила с линка выше ... Сделала через коммандную строку: regsvr32 "C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\sqlceoledb40.dll"
не помогло
Код
Sub Connect_SQL_ServerCE35()
Dim cn As Object
  Set cn = CreateObject("ADODB.Connection")
  cn.ConnectionString = ("Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=E:\NEW docs\Northwind.sdf")
  cn.Open
  Set Db = CreateObject("ADOX.Catalog")
  Db.ActiveConnection = cn
  For i = 0 To Db.Tables.Count - 1
      Debug.Print Db.Tables(i).Name
  NextDebug.Print Now
End Sub
это код работает для 3.5 Sample-файл ... но при поправке на 4.0 и на файл сделанный для 4.0 и с добавкой ";Password=text""- не работает... хотя отсюда -SQLite & SQL Server Compact Toolbox extension - подключение устанавливается - правда строку Подключения нигде не взять... ??
p.s. в VS2010 - тоже не появляется 4.0 - но это ещё можно понять - нет обновления SP1

Изменено: JeyCi - 11 Окт 2018 15:08:37
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Цепной расчет значений внутри столбца в PowerBI
 
Цитата
JeyCi написал: == заново построить Сводную ==
Resume:
вот на этом пункте только лучше не убирать крестики для развёртывания-свёртывания полей боковой шапки... тогда и в свёрнутом виде всё хорошо выглядит... а если нужна детализация - просто развернуть плюсиком - Она и так прекрасно будет видна (да ещё и компактненько только за выбранный в срезе период - всю Детализацию за весь период уже не хочу!.. конечно объём файла увеличивается при такой модели (как сделана) - но если терпимо - то так даже удобнее - глянуть все ТМЦ в свёрнутом виде... имхо... (если надо - развернуть по ПКМ)
Изменено: JeyCi - 11 Окт 2018 16:03:01
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Сводная таблица с динамическими исходными данными
 
Цитата
TheBestOfTheBest написал: MS SQL Server Compact достаточно установить и описать в ODBC
если кто-нибудь заглянет в ветку - черканите please КАК?.. regsvr32??.. но как это делается... без установки SaveToDB... я пока попробую здесь посмотреть
Изменено: JeyCi - 11 Окт 2018 11:26:52
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Цепной расчет значений внутри столбца в PowerBI
 
Цитата
JeyCi написал: по Дате - для эксперимента
с Измерением-Календарь файл не пролезет на планету, но можно/удобно будет фильтровать по годам-кварталам - делать так:
Конструктор-> (Календари) -> ТаблицаДат -> Создать
Добавить поле ="Q"&FORMAT([Дата];"Q")
Создать связь с таблицей-фактов
== заново построить Сводную ==
вставка Среза -> выбрать таблицу-Календарь(Quarter и Year)
не забыть:
переделать меру Прогноз:=IF(ISBLANK([CUMM_from_Blank_Saldo]);BLANK();CALCULATE([lastRes]+[CUMM_from_Blank_Saldo]))
(если надо)
==> можно выбирать год и квартал в Срезе
p.s.
Общие Итоги не сходятся, да и не нужны, - можно снять птицу в: Параметры СводнойТаблицы -> Итоги и Фильтры
p.s.
debitRate заменить на debetRate ;)
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Цепной расчет значений внутри столбца в PowerBI
 
довела до толку:
- поправила бух логику (всё на плюса, кроме крЕдита)
- вывела Вычисляемый столбец в Меру (так логичнее исходя из смысла расчётов её)
- привела в порядок Итоги (исправления в Итогах меры lastRes - и остальные авто-нормализуются)
- выставила Срезы (по ТМЦ - удобно, по Дате - для эксперимента ;))
=> и вуаля... [даже самой понравилось] - если понравится что-то ещё - поправлю...
p.s.
на больших объёмах не проверяла... если будет тормозить - то лучше, наверно, делать правильно - выделяя Измерения в отдельные таблицы (и плясать от них)... на досуге
p.p.s.
DAX 2016 показался достаточно удобным для вычисления предыдущих значений и куммулятивного счёта...
на выстраивание иерархий ещё не тестировала этот язык...
также в отличие от SQL - удобна независимость по отношению к местоположению файла
p.p.p.s.
а РЫБ получилось больше всех на балансе у Зоомагазина  :) (точнее его прогнозе)
Изменено: JeyCi - 10 Окт 2018 11:15:22
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Разбивка столбцов исходной таблицы по разделителю, их последующая привязка к конкретной таблице-шапке по общим именам, Разделить текст не в одном столбце, а сразу в нескольких
 
ok, буду знакомиться... thanks ещё раз!
Изменено: JeyCi - 9 Окт 2018 13:07:25
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Разбивка столбцов исходной таблицы по разделителю, их последующая привязка к конкретной таблице-шапке по общим именам, Разделить текст не в одном столбце, а сразу в нескольких
 
вот я его таким и увидела  :oops: ... подумала, что List.Zip прячет какую-то функцию и заменяет на слово Zip (т.к. из архива файл)... sorry... спасибо! - значит это всё-таки функция...вопрос снят... (интересное её [этой функции] применение в данном контексте)
Изменено: JeyCi - 9 Окт 2018 12:53:45
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 101 След.
Наверх