Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Около SQL Server -й вопрос. / 19 сообщений из 19, страница 1 из 1
06.06.2018, 18:51
    #39656843
пятый2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
Добрый вечер.

Есть запрос для SQL Server.

Запрос возвращает результат - пару строк.


Требуется сделать что-то типа простой формочки для пользователей, чтобы они там вводили текстовый параметр и жали на кнопку.

И формочка показывала им результат.

Запускаться будет на компьютере с виндоус.



Подскажите, с помощью чего это проще всего реализовать?
...
Рейтинг: 0 / 0
06.06.2018, 18:54
    #39656844
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2Подскажите, с помощью чего это проще всего реализовать?С помощью того, на чем умеете.
...
Рейтинг: 0 / 0
06.06.2018, 19:01
    #39656847
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2с помощью чего это проще всего реализовать?MS Access project.
...
Рейтинг: 0 / 0
06.06.2018, 19:06
    #39656853
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2Подскажите, с помощью чего это проще всего реализовать?
Нативное приложение:
.NET WinForms
Delphi
EXCEL + макросы
Веб-приложение:
HTML/CSS + PHP/Python
WCF/WPF
.NET ASP
Вариантов завались, выбирайте, что умеете.
Судя по "формочка" - нативное приложение.
Но судя по вопросу - вам в "Работу" нужно.
...
Рейтинг: 0 / 0
06.06.2018, 19:30
    #39656874
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2Добрый вечер.

Есть запрос для SQL Server.

Запрос возвращает результат - пару строк.


Требуется сделать что-то типа простой формочки для пользователей, чтобы они там вводили текстовый параметр и жали на кнопку.

И формочка показывала им результат.

Запускаться будет на компьютере с виндоус.



Подскажите, с помощью чего это проще всего реализовать?
Apache + mod_php + sqlsrv расширение для apache + Microsoft Drivers for PHP for SQL Server + простейшие формы на html, без навороченных JS.
И всё. Вот тут посмотреть как это на PHP
...
Рейтинг: 0 / 0
06.06.2018, 19:30
    #39656875
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
Andy_OLAP,

То есть sqlsrv расширение для php.
...
Рейтинг: 0 / 0
06.06.2018, 19:33
    #39656881
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2Есть запрос для SQL Server.
Запускаться будет на компьютере с виндоус.

Ну и конечно на файерволле, где стоит SQL Server, открыть 1433 TCP (ну или какой-то другой для недефолтного инстанса) для запроса от компьютера с windows, где будет стоять apache, плюс завести отдельного sql login, имеющего право на отработку запроса из нужной базы.
Плюс включить TCP/IP на компьютере с SQL Server и настроить полностью.
...
Рейтинг: 0 / 0
06.06.2018, 21:04
    #39656919
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
SQL Server Reporting Services как вариант
...
Рейтинг: 0 / 0
06.06.2018, 22:53
    #39656956
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
только хардкор :)
скрипт на powershell
(может и формочку с полем ввода и кнопкой нарисовать и запрос к базе отправить)
...
Рейтинг: 0 / 0
07.06.2018, 10:36
    #39657129
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2Подскажите, с помощью чего это проще всего реализовать

Andy_OLAPApache + mod_php + sqlsrv расширение для apache + Microsoft Drivers for PHP for SQL Server + простейшие формы на html, без навороченных JS.

Ржу...
...
Рейтинг: 0 / 0
07.06.2018, 10:39
    #39657134
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
Дедушкатолько хардкор :)
скрипт на powershell
(может и формочку с полем ввода и кнопкой нарисовать и запрос к базе отправить)
Я чет даже и не подозревал, что так можно. Спасибо за идею, попробовал - простейший вариант.

Код: powershell
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.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Button'
$form.Size = New-Object System.Drawing.Size(200,150)
$form.StartPosition = 'CenterScreen'

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,10)
$textBox.Size = New-Object System.Drawing.Size(160,10)
$form.Controls.Add($textBox)

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(40,50)
$OKButton.Size = New-Object System.Drawing.Size(100,30)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$form.Topmost = $true

$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    [System.Windows.MessageBox]::Show('Run')
}

...
Рейтинг: 0 / 0
07.06.2018, 12:49
    #39657310
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
MinamotoЯ чет даже и не подозревал, что так можно. Спасибо за идею, попробовал - простейший вариант.
Раз уж пошла такая пьянка:
Код: xml
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.
<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Dummy form"
  TextOptions.TextFormattingMode="Display"
  UseLayoutRounding="True"
  Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}"
  WindowStartupLocation="CenterScreen"
  Height="150"
  Width="525">
  <Grid Margin="5">
    <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <TextBox
      x:Name="TextInput"
      VerticalAlignment="Center" />
    <Grid Grid.Row="1">
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
      <Button
        x:Name="AcceptButton"
        Grid.Column="1"
        Content="Ok"
        Width="80"
        Height="24"/>
      <Button
        x:Name="CancelButton"
        Grid.Column="2"
        Content="Cancel"
        IsCancel="True"
        Width="80"
        Height="24"
        Margin="20,0,0,0"/>
    </Grid>
  </Grid>
</Window>


Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Add-Type -AssemblyName PresentationCore,PresentationFramework,WindowsBase,System.Xml;
$xmlWPF = new-object System.Xml.XmlDocument;
$xmlWPF.Load("D:\Trash\1.xaml");
$window = [Windows.Markup.XamlReader]::Load((new-object System.Xml.XmlNodeReader $xmlWPF));
$xmlWPF.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | %{
    Set-Variable -Name ($_.Name) -Value $window.FindName($_.Name) -Scope Global
}
$AcceptButton.Add_Click({
    $window.DialogResult = $true;
    $window.Close();
});
$CancelButton.Add_Click({
    $window.DialogResult = $false;
    $window.Close();
});
$window.ShowDialog() | Out-Null;
if ($window.DialogResult) {
    [System.Windows.MessageBox]::Show($TextInput.Text);
}
...
Рейтинг: 0 / 0
08.06.2018, 09:13
    #39658070
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
londiniumSQL Server Reporting Services как вариант Дело советует.
...
Рейтинг: 0 / 0
08.06.2018, 15:02
    #39658429
пятый2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
Сон Веры ПавловныMinamotoЯ чет даже и не подозревал, что так можно. Спасибо за идею, попробовал - простейший вариант.
Раз уж пошла такая пьянка:
Код: xml
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.
<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Dummy form"
  TextOptions.TextFormattingMode="Display"
  UseLayoutRounding="True"
  Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}"
  WindowStartupLocation="CenterScreen"
  Height="150"
  Width="525">
  <Grid Margin="5">
    <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <TextBox
      x:Name="TextInput"
      VerticalAlignment="Center" />
    <Grid Grid.Row="1">
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
      <Button
        x:Name="AcceptButton"
        Grid.Column="1"
        Content="Ok"
        Width="80"
        Height="24"/>
      <Button
        x:Name="CancelButton"
        Grid.Column="2"
        Content="Cancel"
        IsCancel="True"
        Width="80"
        Height="24"
        Margin="20,0,0,0"/>
    </Grid>
  </Grid>
</Window>


Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Add-Type -AssemblyName PresentationCore,PresentationFramework,WindowsBase,System.Xml;
$xmlWPF = new-object System.Xml.XmlDocument;
$xmlWPF.Load("D:\Trash\1.xaml");
$window = [Windows.Markup.XamlReader]::Load((new-object System.Xml.XmlNodeReader $xmlWPF));
$xmlWPF.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | %{
    Set-Variable -Name ($_.Name) -Value $window.FindName($_.Name) -Scope Global
}
$AcceptButton.Add_Click({
    $window.DialogResult = $true;
    $window.Close();
});
$CancelButton.Add_Click({
    $window.DialogResult = $false;
    $window.Close();
});
$window.ShowDialog() | Out-Null;
if ($window.DialogResult) {
    [System.Windows.MessageBox]::Show($TextInput.Text);
}




Ребята, я в повер шел ничего не понимаю, но это вроде самый простой варинат, ничего не надо доустанавливать и т.п.



Подскажите, куда этот код пихать?

Это будет два разных файла .psc1 или один файл?


Сейчас читаю "основы повер шела" .....
...
Рейтинг: 0 / 0
08.06.2018, 15:03
    #39658431
пятый2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
Ну и еще вопрос, как подключение к SQL Server и скрипт туда вставить?
...
Рейтинг: 0 / 0
08.06.2018, 15:04
    #39658433
пятый2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
по повершелу отдельного форума не нашел (
...
Рейтинг: 0 / 0
09.06.2018, 07:28
    #39658673
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2Подскажите, куда этот код пихать?
Xaml-разметка в отдельном файле (в примере это D:\Trash\1.xaml), powershell-код в отдельном (.ps1).
пятый2Ну и еще вопрос, как подключение к SQL Server и скрипт туда вставить?
Скрипт в подключение вставлять не надо, надо подключение вставить в скрипт.
Вот вариант вместе с выводом результатов в браузер:
Код: powershell
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.
cls;
Add-Type -AssemblyName PresentationCore,PresentationFramework,WindowsBase,System.Xml;
$xmlWPF = new-object System.Xml.XmlDocument;
$xmlWPF.Load("D:\Trash\1.xaml");
$window = [Windows.Markup.XamlReader]::Load((new-object System.Xml.XmlNodeReader $xmlWPF));
$xmlWPF.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | %{
    Set-Variable -Name ($_.Name) -Value $window.FindName($_.Name) -Scope Global
}
$AcceptButton.Add_Click({
    $window.DialogResult = $true;
    $window.Close();
});
$CancelButton.Add_Click({
    $window.DialogResult = $false;
    $window.Close();
});
$window.ShowDialog() | Out-Null;
if (-Not $window.DialogResult) { exit; }
$connection = new-object system.data.SqlClient.SQLConnection("Data Source=.;Initial Catalog=master;Integrated Security=True");
$command = new-object system.data.sqlclient.sqlcommand("select * from sys.objects where type=@type",$connection)
$connection.Open()
$command.Parameters.AddWithValue("@type", $TextInput.Text) | Out-Null;
$reader = $command.ExecuteReader();
$data = New-Object System.Data.DataTable -Property @{TableName = "Data"};
$data.Load($reader);
$reader.Dispose();
$command.Dispose();
$connection.Dispose();
$xmlReport = new-object System.Xml.XmlDocument;
$xmlWriter = $xmlReport.CreateNavigator().AppendChild();
$data.WriteXml($xmlWriter, [System.Data.XmlWriteMode]::WriteSchema);
$xmlWriter.Dispose();
$xsltDoc =  new-object System.Xml.XmlDocument;
$xsltDoc.Load("D:\Trash\1.xsl");
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load(
  $xsltDoc.CreateNavigator().ReadSubtree(),
  (New-Object System.Xml.Xsl.XsltSettings -Property @{EnableScript = $true}),
  (New-Object System.Xml.XmlUrlResolver)
 );
$tmpFile = [System.IO.Path]::ChangeExtension([System.IO.Path]::GetTempFileName(), "htm");
$fileStream = [System.IO.File]::OpenWrite($tmpFile);
$xslt.Transform($xmlReport, $null, $fileStream);
$fileStream.Dispose();
ii $tmpFile;
"done" | oh;


(строку коннекта и запрос, разумеется, вставить свои)
и xslt-шаблон для формирования отчета (тоже в отдельном файле D:\Trash\1.xsl):
Код: xml
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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:utils="urn:myutils"
  exclude-result-prefixes="msxsl utils">
  <xsl:output method="html" />
  <msxsl:script language="C#" implements-prefix="utils">
    <![CDATA[
      public string FormatXsDateTime(string stringValue)
      {
        if (string.IsNullOrEmpty(stringValue)) return string.Empty;
        DateTime date;
        if (DateTime.TryParse(stringValue,
          System.Globalization.CultureInfo.InvariantCulture,
          System.Globalization.DateTimeStyles.RoundtripKind,
          out date
          ))
            return date.ToString("dd.MM.yyyy HH:mm:ss");
        return string.Empty;
      }
    ]]>
  </msxsl:script>
  
  <xsl:template match="/">
    <html>
      <head>
        <style type="text/css">
          p {
            font-family: Verdana;
            font-size: 10pt;
            margin: 3px;
          }
          td, th {
            padding: 4px 10px;
            font-family: Verdana;
            font-size: 10pt;
            vertical-align: top;
          }
          td {
            border-bottom: 1px solid #A0A0A0;
            border-right: 1px solid #A0A0A0;
          }
          th {
            vertical-align: middle;
            border-bottom: 1px solid #A0A0A0;
            border-right: 1px solid #A0A0A0;
          }
          table {
            border-top: 1px solid #A0A0A0;
            border-bottom: 1px solid #A0A0A0;
            border-left: 1px solid #A0A0A0;
            border-collapse:collapse;
          }
        </style>
      </head>
      <body>
        <table>
          <tr>
            <xsl:attribute name="style">
              <xsl:value-of select="'background-color: #E0E0E0'"/>
            </xsl:attribute>
            <xsl:for-each select="//xs:schema//xs:sequence/xs:element/@name">
              <th>
                <xsl:value-of select="." />
              </th>
            </xsl:for-each>
          </tr>
        <xsl:apply-templates />
        </table>
      </body>
    </html>
  </xsl:template>
  <xsl:template match="/NewDataSet/Data">
    <xsl:variable name="this" select="." />
    <tr>
      <xsl:if test="(position() mod 2)!=1">
        <xsl:attribute name="style">
          <xsl:value-of select="'background-color: #F0F0F0'"/>
        </xsl:attribute>
      </xsl:if>
      <xsl:for-each select="//xs:schema//xs:sequence/xs:element">
        <xsl:variable name="xs-element" select="." />
        <xsl:variable name="value" select="string($this/*[local-name()=string($xs-element/@name)]/text())" />
        <td>
          <xsl:choose>
            <xsl:when test="$xs-element/@type='xs:dateTime'">
              <xsl:value-of select="utils:FormatXsDateTime($value)" />
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="$value" />
            </xsl:otherwise>
          </xsl:choose>
        </td>
      </xsl:for-each>
    </tr>
  </xsl:template>
</xsl:stylesheet>


- шаблон, в приниципе, универсальный, единственное, что может потребоваться - добавление форматирующих функций в msxsl:script (ну, и доп. кейсы для них в xsl:choose).
пятый2Сейчас читаю "основы повер шела" .....
Удачи. Еще как минимум нужно будет почитать про WPF или винформс, чтобы при необходимости добавить поле или кнопку в окошко, можно было сделать это самому.
...
Рейтинг: 0 / 0
09.06.2018, 09:07
    #39658695
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
пятый2,

В документацию зависимостей нужно обязательно вставить, иначе потом придут админы и отключат PS по политике.
...
Рейтинг: 0 / 0
09.06.2018, 09:38
    #39658717
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Около SQL Server -й вопрос.
tunknownпятый2,
В документацию зависимостей нужно обязательно вставить, иначе потом придут админы и отключат PS по политике.
Ну, сам PS отключат вряд ли, а вот установят execution policy в restricted - запросто.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Около SQL Server -й вопрос. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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