小编Eri*_*ikE的帖子

根据SQL Server中多个先前行的值提取行

我有一个包含这样的示例数据的表:

ID  Key   User
--  ----  -----
1   a     test
2   ab    test
3   abc   test
4   abcd  test
5   e     test1
6   ef    test1
7   efg   test1
8   efgh  test1
9   t     test1
10  ty    test1
11  tyu   test1
12  tyui  test1
Run Code Online (Sandbox Code Playgroud)

数据由用户构造的值的顺序"快照"组成.我想为每个用户实例返回最后一行,构建一个不同的最终Key值.注意大多数行Key包含整个前一行Key加上一个额外的字母?我只想要终止这样一个序列的行,并且是每个链中可能的最长值,Keys它们依次包含前一个Key值.

以上示例数据应返回以下内容:

ID  Key   User
--  ----  -----
4   abcd  test
8   efgh  test1
12  tyui  test1
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

sql t-sql

6
推荐指数
2
解决办法
1655
查看次数

Oracle DB的SSRS报告-使用存储过程

我正在Sql Server Reporting Services 2005中开发一个报表,并连接到Oracle 11g数据库。当您发表答复时,也许会有助于知道我精通MSSQL Server而对Oracle没有经验。

我有多个嵌套的子报表,需要在外部报表中使用摘要数据,而在内部报表中使用相同的数据,但需要使用详细数据。为了使DB服务器免于多次执行,我想在开始时填充一些临时表,然后在报表和子报表中多次查询它们。

在SSRS中,数据集显然按照它们在RDL文件中出现的顺序执行。而且,您可以拥有不返回行集的数据集。因此,我创建了一个存储过程来填充四个临时表,并将其作为报表中的第一个数据集。当我从SQLDeveloper运行该SP时,它可以工作,并且可以从临时表中查询数据。但是,由于SSRS显然没有重用同一会话,因此似乎无法解决问题,因此,即使使用ON COMMIT PRESERVE ROWS创建了全局临时表,我的数据集也为空。

我改用“真实”表,现在传入一个附加参数,即字符串形式的GUID,它在每个新执行中都是唯一生成的,它是每个表主键的一部分,因此我可以只获取这个执行。

从Sql Developer运行此程序效果很好,例如:

DECLARE
ActivityCode varchar2(15) := '1208-0916      ';
ExecutionID varchar2(32) := SYS_GUID();
BEGIN
CIPProjectBudget (ActivityCode, ExecutionID);
END;
Run Code Online (Sandbox Code Playgroud)

没关系,在此示例中,我不知道GUID,这只是证明了行之有效,因为在我的四个表中插入了行。

但是在SSRS报告中,我的数据集中仍然没有任何行,并且SQL Developer确认没有插入任何行。

所以我在考虑以下方面:

  • Oracle使用隐式事务,而我的更改没有落实吗?
  • 即使我可以证明非行返回的SP正在执行(因为如果我遗漏了参数映射,它也会在报表呈现时抱怨没有足够的参数),也许它并未真正执行。不知何故。
  • 错误的执行顺序不是问题,或者表中会出现行,而行中不会。

我对有关如何完成此操作的任何想法感兴趣(尤其是关于不多次运行主查询的部分)。我将重新设计整个报告。我将停止使用存储过程。建议任何你喜欢的!我只是需要帮助才能使它正常工作,所以我陷入了困境。

如果您想了解更多详细信息,请在我的SSRS报告中有一个List对象(它是对Dataset中的每一行重复一次的容器),该对象具有一些头值,然后包含一个子报表。最终,总共将有四个报告:一个主报告,三个嵌套子报告。每个子报表都将在父报表的列表中。

sql oracle stored-procedures subreport reporting-services

5
推荐指数
1
解决办法
5067
查看次数

用于在编程语言中大写字母的经验法则

我想知道是否有人知道为什么我所看到的最常拼写的所有编程语言(如首字母缩略词)也通常用小写字母书写.想到FORTRAN,LISP和COBOL,但我相信还有更多.

也许这没有任何理由,但我很想知道这些变化是否是由各自社区的标准或决定造成的.或者人们只是懒得打盖锁?(我知道我是)

lisp fortran programming-languages naming-conventions uppercase

5
推荐指数
3
解决办法
4128
查看次数

MySql:使用复合PK的长列表在许多行上运行

在MySql中处理多行的好方法是什么,因为我在与ODBC连接的客户端应用程序中有很长的键列表?

注意:我的经验主要是SQL Server,所以我知道一点,而不是专门针对MySQL.

任务是从9个表中删除一些行,但我可能有超过5,000个密钥对.

我开始时使用简单的方法循环遍历所有密钥,并针对每个表为每个密钥提交一个语句,例如:

DELETE FROM Table WHERE Key1 = 123 AND Key2 = 567 -- and 8 more tables
DELETE FROM Table WHERE Key1 = 124 AND Key2 = 568 -- and 8 more tables
DELETE FROM Table WHERE Key1 = 125 AND Key2 = 569 -- and 8 more tables
...
Run Code Online (Sandbox Code Playgroud)

除此之外,有45,000个单独的陈述,你可以想象这有点慢.

因此,在不担心我在前端使用的编程语言的情况下,提交列表的好方法是什么,以便我可以一次或至少大批量地加入并执行操作?以下是我的想法:

  • 创建临时表并插入,然后加入.我很乐意查找MySQL的语法来创建临时表,但这是一条很好的路线吗?

  • 假设我使用临时表,那么填充临时表的最佳方法是什么?5000条INSERT Table VALUES ()陈述?SELECT 123, 456 UNION ALL SELECT 124, 457?我刚刚测试过MySql允许这种不针对表发出的SELECT.但是如果列表太长,SQL Server最终会爆炸,所以这在MySQL中是一个好方法吗?我应该一次将列表保持几百个吗?

    --CREATE …
    Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures list large-data-volumes set-based

5
推荐指数
1
解决办法
549
查看次数

运行时的C#覆盖方法

我有两个问题.

1)我找到了一些关于如何平滑地进行控件滚动的代码.

大.但是它会覆盖WndProc方法,所以要使用它,我必须撕掉我在设计时删除窗体上的FlowLayoutPanel,子类FlowLayoutPanel,然后最终实例化我的新类并手动创建所有属性并更改所有引用控制为this.Controls ["ControlName"].(或者我想我可以创建一个类级变量,它本质上就是控件最初的变量,但是当它没有在任何地方声明时,它们如何让你使用intellisense?)

所以现在我只是想知道实际上是否有运行方式来实现它.

我可以做一些简单的事情,其中​​MainPanel是控件的名称:

MainPanel = (SmoothScrollingFlowLayoutPanel)MainPanel
Run Code Online (Sandbox Code Playgroud)

它不是那么容易,可以吗?即便如此,它仍然很烦人,因为我仍然必须拥有子类(这可能是一个很好的设计决定,但我想要一次性的自由).那么可以将代码放入FlowLayoutPanel的父代,如下所示:

private Delegate void WndProcHandler(ref Message m);
private WndProcHandler w;

public void SomeCode() {
   w = MainPanel.WndProc; // get reference to existing wndproc method
   MainPanel.WndProc = WndProcSmoothScroll; //replace with new method
}

private void WndProcSmoothScroll(ref Message m) { // make smooth scrolling work
   if (
      (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
      && (((int)m.WParam & 0xFFFF) == 5)
   ) {
      m.WParam = (IntPtr)(((int)m.WParam & ~0xFFFF) | 4);
   }
   if …
Run Code Online (Sandbox Code Playgroud)

c# methods overriding runtime

5
推荐指数
1
解决办法
3448
查看次数

在代码中有效地表达2x2逻辑网格

在事件处理程序中,我正在响应值的更改.我可以访问旧值和新值,并希望根据更改的内容执行某些操作.

每个不同的结果将执行动作/函数X,Y或Z的某种组合.Z接受-1和1之间的参数.执行这些的顺序并不重要.

查看以下逻辑网格.旧值是最左边的标签列,新值是标签的第一行:

          New:
          0          !=0
          --------   -------
Old:  0 | nothing    Y, Z(1)
    !=0 | X, Z(-1)   X, Y    -- Z(0) is okay but not required for this quadrant
Run Code Online (Sandbox Code Playgroud)

什么是代表这个的好方法?

我在C#工作,但会接受任何语言的答案,因为它不是一个真正的语言问题 - 我可以翻译任何东西.

例:

if (oldvalue == 0 && newvalue == 0) return;
if (oldvalue != 0) X();
if (newvalue != 0) Y();
Z(oldvalue != 0 ? -1 : 0 + newvalue != 0 ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)

我认为这看起来很不错,但还有其他方法可以做到.

int which = (oldvalue == 0 ? 0 : 1) …
Run Code Online (Sandbox Code Playgroud)

c# language-agnostic grid logic

5
推荐指数
1
解决办法
616
查看次数

从IIS中的WindowsAuthentication中删除NEGOTIATE

我有一个在IIS 7.5中运行的站点,使用与实际服务器名称不同的DNS别名访问该站点.在IE 8中,集成身份验证失败,但在Firefox和Chrome中一切正常.(IE会出现几次凭证质询,然后显示401.1错误页面.)

我已经发现这是因为IE使用Kerberos(又名"Negotiate")而非NTLM,而Kerberos需要注册服务主体名称(使用SETSPN),以便正确处理DNS名称和服务器名称之间的不匹配.

但是,我的网站不需要冒充 - 只需委派即可.因此,我只想从IIS中的WindowsAuthentication方法列表中删除"Negotiate",而不是搞乱SetSPN.

我已经搜索了相当长的一段时间来了解如何在IIS中执行此操作.我打了很多appcmd的命令-但我就是无法找到网上的例子,或找出通过阅读MSDN文档或使用如何appcmd /?使appcmd命令只有一个站点内适用于特定的应用程序,而不是对整个Web服务器.在两天后的几个搜索小时内,访问了至少三十几个网页,我仍然没有结果.

如何在tarnation中完成这项工作 - 看起来它应该如此简单!

iis-7 kerberos windows-authentication iis-7.5

5
推荐指数
1
解决办法
3万
查看次数

允许绝对定位元素比父绝对定位元素更宽

背景

我有一个小的单级CSS弹出菜单(从技术上讲,它是一个扩展元素).它绝对位于父级绝对定位元素的左下方,该元素相当窄.请参阅h1下面的第二个元素:

<div id="controls">
   <h1>Controls 1</h1>
   <h1 id="size" class="poplinks button">
      Size
      <a href="#" class="button selected" title="small"><img src=""></a>
      <a href="#" class="button" title="medium"><img src=""></a>
      <a href="#" class="button" title="large"><img src=""></a>
   </h1>
</div>
Run Code Online (Sandbox Code Playgroud)

这很简单就变成了一个扩展菜单/弹出窗口,如下所示:

.poplinks:hover {
   width:auto;
}
.poplinks a {
   display:none;
}
.poplinks:hover a {
   display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)

问题

这会产生以下类似按钮的元素:

按键

h1具有风格width:48px;,而且也有应用样式规则width:auto;h1在悬停的元素,所以它应该能够扩大.但是,在悬停时,子菜单被迫保持不比父元素的宽度宽,当我希望它向右延伸时(在父元素的包含框之外).

垂直

我想看到的(通过将元素移动到父元素之外获得,但我希望它保留在内部以继承样式,因此当我将菜单栏从左侧移动到顶部时,它会自动跟随):

在此输入图像描述

这可能吗?你有什么建议?

在JS小提琴中为自己看这个.

浏览器

注意:我计划在Firefox,Chrome和IE 8中使用它.我正在使用Firefox和Chrome中的主要样式,并且基本上完成后,将添加条件CSS以使IE正常工作并尽可能接近.

合理

我绝对定位父菜单的原因是我正在构建一个类似应用程序的页面来显示图像.该页面将托管在父Windows应用程序中,不需要大量识别信息:只显示所需的图像.我选择使菜单绝对定位,而不是使用内联块或浮点数或其他方法来使我的菜单列到位(有两个).但是,它不一定是这种方式.如果您对替代布局或策略有建议,我会全力以赴.

css css-position absolute

5
推荐指数
1
解决办法
9990
查看次数

使dapper SQL成为语法颜色

如果一个人被绑定并决定在Visual Studio中使用C#项目语法中的Dapper SQL字符串着色(并且为了奖励,语法检查甚至是智能感知!),那么如何进行呢?

我有一些疯狂的想法:

  • 创建一种实际上是C#的新语言,但是它有足够的差异以某种方式支持内联SQL(不在双引号内).
  • 制作Visual Studio插件(或以某种方式修改话务员VS代码),在某些时候设法获得代码着色.

谁知道可能有哪些其他选择.

我认为实现我的目标在努力,时间,资源等方面可能是非常昂贵的.我从这个角度问,如果你有这些资源,它实际需要什么?

c# colorize visual-studio dapper

5
推荐指数
1
解决办法
637
查看次数

HTMLAgilityPack中的XPath select不能按预期工作

我正在用C#编写简单的屏幕抓取程序,为此我需要选择所有输入放在一个名为"aspnetForm"的表单中(页面上有2个表单,我不希望输入来自另一个),以及此表单中的所有输入都放在不同的表格,div中,或者只放在此表单的第一个子级别.

所以我写了非常简单的XPath查询:

//form[@id='aspnetForm']//input
Run Code Online (Sandbox Code Playgroud)

它在我测试的所有浏览器(Chrome,IE,Firefox)中按预期工作 - 它返回我想要的内容.

但是在HTMLAgilityPack中根本不起作用 - SelectNodes总是返回NULL.

我为测试编写的查询工作正常,但不返回我想要的.首先选择作为我的表单的第一个孩子的所有输入,然后选择返回的表单:

//form[@id='aspnetForm']/input
//form[@id='aspnetForm']
Run Code Online (Sandbox Code Playgroud)

是的,我知道我可以枚举上次查询的节点,或者在其结果上创建另一个SelectNodes,但我真的不想这样做.我想在浏览器中使用相同的查询.

XPath目前在HTMLAgilityPack中被破坏了吗?C#有任何替代的XPath实现吗?

更新:测试代码:

using HtmlAgilityPack;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace HtmlAGPTests
{
    [TestClass]
    public class XPathTests
    {
        private const string html =
                "<form id=\"aspnetForm\">" +
                "<input name=\"first\" value=\"first\" />" +
                "<div>" +
                    "<input name=\"second\" value=\"second\" />" +
                "</div>" +
                "</form>";

        private static HtmlNode GetHtmlDocumentNode()
        {
            var document = new HtmlDocument();
            document.LoadHtml(html);
            return document.DocumentNode;
        }

        [TestMethod]
        public void TwoLevelXpathTest()     // fail - nodes is NULL actually.
        {
            var query = …
Run Code Online (Sandbox Code Playgroud)

c# xpath screen-scraping

5
推荐指数
1
解决办法
3076
查看次数