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

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

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


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

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

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



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

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

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


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

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

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



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

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

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

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

Ржу...
...
Рейтинг: 0 / 0
Около SQL Server -й вопрос.
    #39657134
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дедушкатолько хардкор :)
скрипт на 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
Около SQL Server -й вопрос.
    #39657310
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Около SQL Server -й вопрос.
    #39658070
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
londiniumSQL Server Reporting Services как вариант Дело советует.
...
Рейтинг: 0 / 0
Около SQL Server -й вопрос.
    #39658429
пятый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны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
Около SQL Server -й вопрос.
    #39658431
пятый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и еще вопрос, как подключение к SQL Server и скрипт туда вставить?
...
Рейтинг: 0 / 0
Около SQL Server -й вопрос.
    #39658433
пятый2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по повершелу отдельного форума не нашел (
...
Рейтинг: 0 / 0
Около SQL Server -й вопрос.
    #39658673
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пятый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
Около SQL Server -й вопрос.
    #39658695
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пятый2,

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


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