Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Около SQL Server -й вопрос.  [new]
пятый2
Member

Откуда:
Сообщений: 124
Добрый вечер.

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

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


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

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

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



Подскажите, с помощью чего это проще всего реализовать?
6 июн 18, 18:51    [21473778]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
пятый2
Подскажите, с помощью чего это проще всего реализовать?
С помощью того, на чем умеете.
6 июн 18, 18:54    [21473790]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20207
пятый2
с помощью чего это проще всего реализовать?
MS Access project.
6 июн 18, 19:01    [21473809]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
пятый2
Подскажите, с помощью чего это проще всего реализовать?

Нативное приложение:
.NET WinForms
Delphi
EXCEL + макросы
Веб-приложение:
HTML/CSS + PHP/Python
WCF/WPF
.NET ASP
Вариантов завались, выбирайте, что умеете.
Судя по "формочка" - нативное приложение.
Но судя по вопросу - вам в "Работу" нужно.
6 июн 18, 19:06    [21473827]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
пятый2
Добрый вечер.

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

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


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

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

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



Подскажите, с помощью чего это проще всего реализовать?

Apache + mod_php + sqlsrv расширение для apache + Microsoft Drivers for PHP for SQL Server + простейшие формы на html, без навороченных JS.
И всё. Вот тут посмотреть как это на PHP
6 июн 18, 19:30    [21473892]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Andy_OLAP,

То есть sqlsrv расширение для php.
6 июн 18, 19:30    [21473895]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
пятый2
Есть запрос для SQL Server.
Запускаться будет на компьютере с виндоус.

Ну и конечно на файерволле, где стоит SQL Server, открыть 1433 TCP (ну или какой-то другой для недефолтного инстанса) для запроса от компьютера с windows, где будет стоять apache, плюс завести отдельного sql login, имеющего право на отработку запроса из нужной базы.
Плюс включить TCP/IP на компьютере с SQL Server и настроить полностью.
6 июн 18, 19:33    [21473904]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
londinium
Member

Откуда: Киев
Сообщений: 1138
SQL Server Reporting Services как вариант
6 июн 18, 21:04    [21474009]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
только хардкор :)
скрипт на powershell
(может и формочку с полем ввода и кнопкой нарисовать и запрос к базе отправить)
6 июн 18, 22:53    [21474170]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
пятый2
Подскажите, с помощью чего это проще всего реализовать

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

Ржу...
7 июн 18, 10:36    [21474960]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Дедушка
только хардкор :)
скрипт на powershell
(может и формочку с полем ввода и кнопкой нарисовать и запрос к базе отправить)

Я чет даже и не подозревал, что так можно. Спасибо за идею, попробовал - простейший вариант.

+
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')
}
7 июн 18, 10:39    [21474975]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5642
Minamoto
Я чет даже и не подозревал, что так можно. Спасибо за идею, попробовал - простейший вариант.

Раз уж пошла такая пьянка:
<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>

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);
}
7 июн 18, 12:49    [21475639]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
tunknown
Member

Откуда:
Сообщений: 748
londinium
SQL Server Reporting Services как вариант
Дело советует.
8 июн 18, 09:13    [21477989]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
пятый2
Member

Откуда:
Сообщений: 124
Сон Веры Павловны
Minamoto
Я чет даже и не подозревал, что так можно. Спасибо за идею, попробовал - простейший вариант.

Раз уж пошла такая пьянка:
<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>

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 или один файл?


Сейчас читаю "основы повер шела" .....
8 июн 18, 15:02    [21479421]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
пятый2
Member

Откуда:
Сообщений: 124
Ну и еще вопрос, как подключение к SQL Server и скрипт туда вставить?
8 июн 18, 15:03    [21479423]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
пятый2
Member

Откуда:
Сообщений: 124
по повершелу отдельного форума не нашел (
8 июн 18, 15:04    [21479430]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5642
пятый2
Подскажите, куда этот код пихать?

Xaml-разметка в отдельном файле (в примере это D:\Trash\1.xaml), powershell-код в отдельном (.ps1).
пятый2
Ну и еще вопрос, как подключение к SQL Server и скрипт туда вставить?

Скрипт в подключение вставлять не надо, надо подключение вставить в скрипт.
Вот вариант вместе с выводом результатов в браузер:
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 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 или винформс, чтобы при необходимости добавить поле или кнопку в окошко, можно было сделать это самому.
9 июн 18, 07:28    [21480813]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
tunknown
Member

Откуда:
Сообщений: 748
пятый2,

В документацию зависимостей нужно обязательно вставить, иначе потом придут админы и отключат PS по политике.
9 июн 18, 09:07    [21480909]     Ответить | Цитировать Сообщить модератору
 Re: Около SQL Server -й вопрос.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5642
tunknown
пятый2,
В документацию зависимостей нужно обязательно вставить, иначе потом придут админы и отключат PS по политике.

Ну, сам PS отключат вряд ли, а вот установят execution policy в restricted - запросто.
9 июн 18, 09:38    [21480983]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить