Прыжки с шестом.
Потребуется файл HighJumperDatabase.mdb из Competitors Pack.
Задача:
Решение:
Никогда не приходилось работать с Access, поэтому пришлось честно гуглить: http://www.visualbasicscript.com/m_43134/tm.htm. Его я взял за основу, только немного подрихтовал и вот что получилось:
# создаём массив, который будет содержать все результаты $sum = @() # подключения к БД. Наглый копипаст с форума.# более-менее внятное описание этого кода тут: # http://technet.microsoft.com/en-us/magazine/2009.05.scriptingguys.aspx $adOpenStatic = 3 $adLockOptimistic = 3 $MDBConn = New-Object -comobject ADODB.Connection $MDBConn.Open("provider=microsoft.jet.oledb.4.0;data source=$pwd\HighJumperDatabase.mdb") $Record = New-Object -comobject ADODB.RecordSet $Record.Open('select * from [High Jumper Data]',$MDBConn,$adOpenStatic,$adLockOptimistic) $Record.MoveFirst() do { # делаем объект текущего атлета и забиваем в него нужные значения $current = "" | Select @{n='Name';e={$Record.Fields.Item("Name").Value}}, @{n='Personal Best';e={$Record.Fields.Item("Personal Best").Value}}, @{n='Season Best';e={$Record.Fields.Item("Season Best").Value}} # добавляем текущего участника в массив $sum += $current # переходим на следующую итерацию $Record.MoveNext() } until ($Record.EOF) # закрываем все подключения $Record.Close() $MDBConn.Close() # сортируем и выводим лучшего спортсмена $sum | Sort "Season Best", "Personal Best" | select Name -Last 1
Кстати, отличное решение этой задачи нашёл на VBS. Человек уложился в 4(!) строчки:
Set adoCon = CreateObject("ADODB.Connection")
adoCon.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=HighJumperDatabase.mdb"
Winner = adoCon.Execute("SELECT TOP 1 Name FROM [High Jumper Data] ORDER BY [Personal Best] DESC")("Name")
WScript.Echo "Expected Winner: " & Winner
Есть мнение, что фанаты PowerShell должны дружно застрелиться :-) хотя это просто вопрос запроса к базе Access.
потребуется файл High Jump Stats_Adv4.txt из Competitors Pack.
В файле перечислены имена прыгунов с шестом и через запятую перечислены высОты планки.
Задача:
Решение:
Т.к. я графики тоже никогда не рисовал, поэтому тоже пришлось обратиться к гуглу. И вышло примерно такое:
# переименовываем txt файл в CSV. Теперь не нужно конвертировать тектовый файл в # формат Excel, т.к. при переименовании Excel сам это сделает ren "High Jump Stats_Adv4.txt" "High Jump Stats_Adv4.csv" # выполняем обычную рутину для создания COM объекта для Excel $excel = New-Object -ComObject excel.application $file = $excel.Workbooks.Open("$pwd\High Jump Stats_Adv4.csv")# | Out-Null $excel.Visible = $false $excel.DisplayAlerts = $false $sheet = $excel.Worksheets.Item(1) # добавляем диаграмму #$chart = $excel.Charts.Add() # задаём диапазон для диаграммы $Range = $sheet.Range("A1:l1") # добавляем элемент Chart с нужным диапазоном. Я выбрал 10 первых попыток # для первого атлета. $chart = $excel.Charts.Add() $chart.SetSourceData($Range) $chart.ChartStyle = 27 # сохраняем Chart в файл формата Excel и закрываем работу $file.SaveAs("$pwd\High Jump Stats_Adv4.xlsx") $excel.Quit() gps excel | stop-process # переименовываем CSV файл обратно в TXT ren "High Jump Stats_Adv4.csv" "High Jump Stats_Adv4.txt"
Comments: