RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-346850

Rekssel's questions

Martin Hope
Rekssel
Asked: 2020-10-30 08:41:22 +0000 UTC

将汇总行添加到 TSQL 查询结果

  • 0

有一个动态编译的查询,即 其中的字段数量各不相同。每个动态字段代表float一个值。查询本身会在每个字段中生成运行总计结果。最后一行应该是最后一行,包含每个字段的最后一行和第一行之间的差异。第一个字段是固定的,具有“标签功能”,即简单地表示日期或总计。

这是字段定义的样子:

    SELECT
        @CellsFields = @CellsFields + ',' + 
        'ROUND(MAX(CASE WHEN val.ObjectLocationId = '+CONVERT(varchar(10), loc.Id)+' and val.ParametrId = 20 THEN val.VL ELSE 0 END),3) as [' + loc.ShortName+', значение1] '+','+
        'ROUND(MAX(CASE WHEN val.ObjectLocationId = '+CONVERT(varchar(10), loc.Id)+' and val.ParametrId = 22 THEN val.VL ELSE 0 END),3) as [' + loc.ShortName+', значение2] '        
    FROM
        [dbo].[PokazateliBlaBla] loc
    WHERE   
        loc.ObjectId = @ObjectId

这就是请求本身的调用方式:

SET @SQL =
    '

    SELECT
        CONVERT(varchar(10),val.TM,104) as ''Дата'''+@CellsFields+'
    FROM
        [dbo].[ValuesBlaBla] val
    WHERE
        val.ParametrID in (20,22) and
        val.TM between '''+@DateStart+' 00:00:00'' and '''+@DateEnd+' 23:59:59''
    GROUP BY
        CONVERT(varchar(10),val.TM,104)
    ORDER BY
        CONVERT(varchar(10),val.TM,104)

    '

    EXEC(@SQL)

结果将是这样的集合: 在此处输入图像描述

除了最后一行,我想通了。我不知道如何获得第一个值和最后一个值之间的差异。如果您依赖图片,则需要从 中减去 的01.09.19值30.09.19。我会很高兴任何理事会和有关可能错误的决定方法的迹象。

sql
  • 1 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-10-07 09:05:29 +0000 UTC

选择平台游戏开发工具 [关闭]

  • -1
关闭。这个问题不可能给出客观的答案。目前不接受回复。

想改进这个问题? 重新构建问题,以便可以根据事实和引用来回答。

2年前关闭。

改进问题

目标是制作 2D 平台游戏。编写自己的引擎更好还是使用现成的引擎更容易?我想确切地知道该往哪个方向走。你需要一个客观的观点。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-09-25 12:59:14 +0000 UTC

线程结束时执行命令

  • 1

我正在将更新系统拧入自制程序的自制启动器中。我有一个现成的更新程序,它在启动器中每个可用程序的单独线程中运行,通过(检查新文件并从服务器下载它们)。foreach()

有一刻我卡住了:当您从启动器单击应用程序启动按钮时,应该只检查该程序的更新,然后应该启动它。

更新然后更新,但是更新后启动有问题。我怎样才能在不将应用程序启动推入线程过程的情况下等待特定线程的完成然后才执行命令?

按钮的代码是这样的:

Thread updateThread = new Thread(new ParameterizedThreadStart(CheckAndLoadUpdateFiles));
updateThread.Start(<appdata>);

StartAppliction(<appdata>.<appname>, <appdata>.<apppath>, <appdata>.<appparams>);

我知道StartApplication线程启动后会立即执行什么,我不想将此过程推入更新过程。

我期待您的建议和建议。

c#
  • 2 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-09-09 14:00:00 +0000 UTC

更改 ComboBox 列表中的 TObject

  • 2

可用ComboBox。TNewObject它存储通过以下方式从数据库添加的对象列表(例如类):

AddItem(Item: string; AObject: TObject)

列表中的第一个元素[0]必须是变量。我试图像这样改变它:

NewObject := TNewObject.Create;
NewObject.ID := 0;
NewObject.Name := '<строится отображаемое имя>';
NewObject.Value := <вычисляется значение>;
MyComboBox.Items[0] := NewObject;

但是,不幸的是,Items[Index: Integer]它只能string取值。

如何ComboBox为元素分配新值?

因为您需要完全清理和重新加载列表的方法Items不太适合我。

delphi
  • 1 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-09-09 10:46:55 +0000 UTC

使用 MSSQL 数据库的类的权宜之计

  • 0

创建了一个特殊的帮助类来连接和使用数据库。

如果不需要或没有经验,使用这样的课程是否合理Entity Framework。请大家指出不足并提出其他意见。

类本身:

public class DBHelper
{
        public static string sqlConnectionString = "Data Source=<default>;Initial Catalog=<default>;Persist Security Info=<default>;User ID=<default>;Password=<default>";
        public bool connectionOnline = false;
        public SqlConnection sqlConnection = null;
        public DBHelper(string _DataSource, string _InitialCatalog, string _User, string _Password)
        {
                string AssebledConnectionString =
                        "Data Source=" + _DataSource + ";" +
                        "Initial Catalog=" + _InitialCatalog + ";" +
                        "Persist Security Info=True;" +
                        "User ID=" + _User + ";" +
                        "Password=" + _Password;
                connectionOnline = false;
                InitializeConnection(AssebledConnectionString);
        }
        public DBHelper()
        {
                connectionOnline = false;
                InitializeConnection(sqlConnectionString);
        }
        public DBHelper(string sqlCustomConnectionString = null)
        {
                connectionOnline = false;
                InitializeConnection(sqlCustomConnectionString);
        }
        public void Dispose()
        {
                this.DisengageConnection();
                sqlConnection = null;
        }
        void InitializeConnection(string sqlCustomConnectionString = null)
        {
                try
                {
                        if ((connectionOnline) || (sqlConnection != null)) return;
                        sqlConnection = new SqlConnection(sqlCustomConnectionString ?? sqlConnectionString);
                        sqlConnection.Open();
                        connectionOnline = true;
                }
                catch
                {
                        connectionOnline = false;
                        //Не удалось соединиться с базой данных
                }
        }
        void DisengageConnection()
        {
                if ((!connectionOnline) || (sqlConnection == null)) return;
                sqlConnection.Close();
                connectionOnline = false;
        }
        public SqlCommand GetStoredProc(string procedureName)
        {
                SqlCommand sqlCommand = new SqlCommand(procedureName, sqlConnection)
                {
                        CommandType = CommandType.StoredProcedure
                };
                return sqlCommand;
        }
        public DataSet GetDataSet(SqlCommand sqlCommand)
        {
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
                DataSet dsTable = new DataSet();
                sqlDataAdapter.Fill(dsTable);
                return dsTable;
        }
        public DataTable GetResultTable(SqlCommand sqlCommand, int dataTableNumber = 0)
        {
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
                DataSet dsTable = new DataSet();
                sqlDataAdapter.Fill(dsTable);
                if ((dsTable.Tables.Count > 0) && (dsTable.Tables.Count - 1 >= dataTableNumber))
                {
                        return dsTable.Tables[dataTableNumber];
                }
                else
                {
                        return new DataTable();
                }
        }        
}    

使用存储过程的示例:

DBHelper db = new DBHelper();
SqlCommand sqlCommand = db.GetStoredProc("<имя хранимой процедуры>");
sqlCommand.Parameters.AddWithValue("@<имя параметра 1>",<param1_value>);
sqlCommand.Parameters.AddWithValue("@<имя параметра 2>",<param2_value>);
//...
sqlCommand.Parameters.AddWithValue("@<имя параметра N>",<paramN_value>);
//далее действия в зависимости от характера хранимой процедуры
//либо простое исполнение
sqlCommand.ExecuteNonQuery();
//либо получение данных
DataTable dataTable = db.GetResultTable(sqlCommand);
c#
  • 1 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-08-28 12:08:07 +0000 UTC

FastReport 备注高度 by MasterData 高度

  • 1

FastReport 4.12.6 中有一个报告。它显示按类型分组的数据(使用 SubReport)。报告本身在卸载和分组数据方面起作用。问题是组字段的高度没有延伸到它们自己的 MasterData。它看起来(示意性地)像这样:报告结果示意图

正如您在图像中看到的:字段 2(组名)和 5(类型总数(在第 2 行的字段 3 中表示))应该在高度上拉伸,但这不会发生。“播放”了备忘录本身的 StretchMode 属性,以及放置它们的 MasterData 的 Stretched。

报告的结构如下:

MasterData
  Memo //для поля 2 (название группы)
  Subreport
    MasterData
      Memo //для поля 5 (общее количество типов (указаны в поле 3 во 2й строке))
      Subreport
        MasterData
          Memo //для остальных полей

数据附加到 MasterData 和 Memo(三个不同的查询:组 (2)、组中的类型及其编号 (5)、详细信息 (3,6,7))如果子 ID 与父 ID 不匹配。

我无法更详细地描述它,因为它是公司机密。

有关如何将 Memo 扩展到其 MasterData 的完整高度的建议?好吧,或者告诉我,也许我通常使用错误的分组方法,我应该,好吧,相应地指导它。


我附上了一个与我的主要报告完全相同的最小示例(也就是说,不正确,没有拉伸,设置仍然相同)。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<TfrxReport Version="4.12.6" DotMatrixReport="False" IniFile="\Software\Fast Reports" PreviewOptions.Buttons="4095" PreviewOptions.Zoom="1" PrintOptions.Printer="Default" PrintOptions.PrintOnSheet="0" ReportOptions.CreateDate="43705,4791322454" ReportOptions.Description.Text="" ReportOptions.LastChange="43705,4818397107" ScriptLanguage="PascalScript" ScriptText.Text="begin&#13;&#10;&#13;&#10;end." PropData="03546F7003C0000844617461736574730100095661726961626C65730100055374796C650100">
  <TfrxDataPage Name="Data" Height="1000" Left="0" Top="0" Width="1000"/>
  <TfrxReportPage Name="Page1" PaperWidth="210" PaperHeight="297" PaperSize="9" LeftMargin="10" RightMargin="10" TopMargin="10" BottomMargin="10" ColumnWidth="0" ColumnPositions.Text="" HGuides.Text="" VGuides.Text="">
    <TfrxMasterData Name="MasterData1" Height="18,89765" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" RowCount="2" Stretched="True">
      <TfrxSubreport Name="Subreport1" Left="0" Top="0" Width="718,1107" Height="18,89765" ShowHint="False" Page="Page2"/>
      <TfrxMemoView Name="Memo1" Left="109,60637" Top="0" Width="94,48825" Height="18,89765" ShowHint="False" StretchMode="smMaxHeight" Font.Charset="1" Font.Color="-16777208" Font.Height="-13" Font.Name="Arial" Font.Style="0" Frame.Typ="15" ParentFont="False" Text="Group"/>
    </TfrxMasterData>
  </TfrxReportPage>
  <TfrxReportPage Name="Page2" PaperWidth="210" PaperHeight="297" PaperSize="9" LeftMargin="10" RightMargin="10" TopMargin="10" BottomMargin="10" ColumnWidth="0" ColumnPositions.Text="" HGuides.Text="" VGuides.Text="">
    <TfrxMasterData Name="MasterData2" Height="18,89765" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" RowCount="2" Stretched="True">
      <TfrxSubreport Name="Subreport2" Align="baWidth" Left="0" Top="0" Width="718,1107" Height="18,89765" ShowHint="False" Page="Page3"/>
      <TfrxMemoView Name="Memo3" Left="204,09462" Top="0" Width="94,48825" Height="18,89765" ShowHint="False" StretchMode="smMaxHeight" Font.Charset="1" Font.Color="-16777208" Font.Height="-13" Font.Name="Arial" Font.Style="0" Frame.Typ="15" ParentFont="False" Text="Count"/>
    </TfrxMasterData>
  </TfrxReportPage>
  <TfrxReportPage Name="Page3" PaperWidth="210" PaperHeight="297" PaperSize="9" LeftMargin="10" RightMargin="10" TopMargin="10" BottomMargin="10" ColumnWidth="0" ColumnPositions.Text="" HGuides.Text="" VGuides.Text="">
    <TfrxMasterData Name="MasterData3" Height="18,89765" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" RowCount="5" Stretched="True">
      <TfrxMemoView Name="Memo4" Left="298,58287" Top="0" Width="94,48825" Height="18,89765" ShowHint="False" StretchMode="smMaxHeight" Font.Charset="1" Font.Color="-16777208" Font.Height="-13" Font.Name="Arial" Font.Style="0" Frame.Typ="15" ParentFont="False" Text="Details"/>
    </TfrxMasterData>
  </TfrxReportPage>
</TfrxReport>
fastreport
  • 2 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-08-26 13:18:55 +0000 UTC

Pascal 和 C# 中的汇编程序

  • 2

有一个 Pascal 程序,最初不是我写的。我把它翻译成C#。在程序的一部分中,对文件校验和进行了非常特殊的计算。校验和以格式存储在数据库中,bigint校验和计算函数如下所示:

function GetCheckSum(FileName: string): DWORD;
var
  F: file of DWORD;
  P: Pointer;
  Fsize: DWORD;
  Buffer: array[0..500] of DWORD;
begin
  FileMode := 0;
  AssignFile(F, FileName);
  Reset(F);
  Seek(F, FileSize(F) div 2);
  Fsize := FileSize(F) - 1 - FilePos(F);
  if Fsize > 500 then
    Fsize := 500;
  BlockRead(F, Buffer, Fsize);
  Close(F);
  P := @Buffer;
  asm
        XOR     eax, eax
        XOR     ecx, ecx
        mov     edi, P

    @again:
        add     eax, [edi + 4 * ecx]
        inc     ecx
        cmp     ecx, Fsize
        jl      @again
        mov     @result, eax
  end;
end;

告诉我汇编器中发生了什么,以及这种构造在 C# 中的样子?

使用了以下内容:

private long GetCheckSum(string FilePath)
{
    byte[] FBytes = File.ReadAllBytes(FilePath);
    int FSize = FBytes.Length / 2;
    int FToRead = FSize + 500 > FBytes.Length ? FBytes.Length : FSize + 500;
    long FSum = 0;
    for (int i = FSize; i < FToRead; i++)
    {
        FSum += FBytes[i];
    }
    return FSum;
}

在我看来,结果是一样的。如我错了请纠正我。

c#
  • 3 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-08-22 08:45:42 +0000 UTC

如何更改 Visual Studio 表单的命名空间

  • 0

我在 Visual Studio 2019 中做一个中型项目。项目表单的数量已经达到“不方便”,我决定将它们分散到文件夹中(我没有马上想到它)。事实是现有表单的命名空间没有改变(project_name),但是当我在特定文件夹中创建一个新表单时,它的命名空间被写为“project_name.folder_name”。我希望文件夹中的所有表单都具有此命名空间。但是手动更改,“红场”开始,工作室大声咒骂,但不提供解决方案。

这个问题纯粹是道德的,因为。当前状态不影响应用程序的运行,但是继续工作有点烦(我有轻度的强迫症,出现问题时无法集中注意力)。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Rekssel
Asked: 2020-08-20 12:55:36 +0000 UTC

将带有接口的类型传递给 C# 扩展方法参数

  • 1

我为这个问题苦苦挣扎了很久,研究文学,疯狂地强奸谷歌,但我没有找到解决办法,也许这里有人会告诉你。

我将从头开始。我有三个实现相同接口属性的类:

interface IStandartUnit
{
    int ID { get; set; }
    string Name { get; set; }
}

我不会完整的上课(很多机密信息,这里不需要):

public class UnitDepartment : IStandartUnit //подразделения
public class UnitFilial : IStandartUnit //филиалы
public class UnitPerson : IStandartUnit //сотрудники

为了显示每个类的列表,我使用CheckedListBox(为什么? - 歌词,不是特别相关。)。在执行期间,有必要为CheckedListBox创建一个扩展方法,以便通过传递的ID计算列表中元素的索引。例如,像这样:

public static class ListBoxExtension
{
    public static int GetUnitIndexById(this CheckedListBox clb, int _id)
    {
        int i = 0;

        foreach(UnitFilial uf in clb.Items)
        {
            if (uf.ID == _id)
            {
                break;
            }
            i++;
        }

        return i;
    }
}

一般来说,结果应该如下:我将ID和bool 状态传递给CheckedListBox的扩展方法,并且该方法将列表元素的Checked属性更改为传递的属性。但我决定从一个简单的方法开始,只是寻找一个索引。困难在于:我需要一个用于所有三个类的列表的通用扩展方法。谁还没有理解 - 我通过将它们的实例添加到CheckedListBox来使用类(ToString() 写在每个类中,不用担心 =P)。不混合。一份清单 - 一类。

最后一个问题。我可以以某种方式实现这样的事情以使其工作:

public static class ListBoxExtension
{
    public static void SetUnitState(this CheckedListBox clb, int _id, bool _state)
    {
        int i = 0;
        foreach(IStandartUnit su in clb.Items)
        {
            if(su.ID == _id)
            {
                break;
            }
            i++;    
        }
        clb.SetItemChecked(i, _state);
    }
} 

我将不胜感激有关此事的任何建议。谢谢你。

UPD:我很抱歉占用您的时间。代码可以正常工作。只是我笨。我希望问题中的infa不会无用,也许有人会派上用场。

c#
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5