我有一个搜索屏幕,用户可以在其上指定名字,姓氏,学期或课程的任意组合.我不确定如何优化代码SQL Server 2005存储过程来处理这些可能的可选参数.什么是最有效的方式?每个组合的单独程序?将项目作为可空的parms并构建动态SQL?
假设我的Excel工作表附加了一个函数:
Public Function foo(bar As Integer) as integer
foo = 42
End Function
Run Code Online (Sandbox Code Playgroud)
如何获得foo返回到工作表中单元格的结果?我试过了"=foo(10)",但它给了我的全部是"#NAME?"
我也试过=[filename]!foo(10) and [sheetname]!foo(10)没有改变.
<Document>
<A>
<B>
<C></C>
</B>
</A>
<E>
<F>
<C></C>
</F>
<G>
<C></C>
</G>
</E>
</Document>
Run Code Online (Sandbox Code Playgroud)
如果我将上述XML加载到XmlDocument并使用XPath查询在C上执行SelectSingleNode // C
XmlNode oNode = oDocument.SelectSingleNode("E");
XmlNodeList oNodeList = oNode.SelectNodes("//C");
为什么它会从Under B返回节点,而我预期会发生它只会从E下返回节点
合理?
编辑:我怎么才能让它从那个节点开始返回?
我的任务是确定是否可以使用javascript检测链接点击.
我知道onclick属性,它让我成为那里的一部分.除此之外,我不知道最好的方法是什么.我已经告诉我的老板,它可能涉及某种形式的ajax,这可能涉及一个大型图书馆,这是不可接受的.
有没有其他方法可以使用ajax,或者无论如何使用不会增加大量时间的ajax?
编辑:他希望能够告诉用户有多少次使用网站主页上的链接.不幸的是,我们无法做一个光滑的服务器端解决方案,因为网站上的几乎所有页面都只是普通的HTML.我想将所有页面转换为php或其他替代方案,只需记下HTTP_REFERRER数据,但目前还不可能.
我们已经在使用Google分析; 它不记录引用者数据.
再次编辑:事实证明我的老板没有看到叠加层,我认为他点击了所有标签.根据我的调查,最初他们都报告零点击,但我发现我们已经有旧版谷歌的分析模糊了.快速升级到新的热点,问题就解决了.
感谢所有回复.
我对这段代码中效率更高的其他一些看法很感兴趣.基本上在下面的代码中,有一个setInterval循环,我需要在代码在循环中运行之前满足4个要求.所以在第1节我写了一个if语句检查所有4.工作正常.
然后我切换到只使用try/catch,我想要执行的代码坐在try {}中.逻辑是在每个循环期间,将生成异常但针对每个无效条件进行抑制.在所有条件都为真的最后一个循环中,代码执行并清除间隔.
要么有效.我喜欢try/catch方法,因为我需要编写更少的条件代码并担心破坏.但是我担心try/catch的效率非常低,特别是在一个100ms的setInterval()循环中.关于SO的其他聪明人的一些看法是什么?
试着抓
var intvar = setInterval(function(){
try{
clearInterval(intvar);
jQuery('#'+nav[pageid].t1+'>a').replaceWith(jQuery('<span>'+jQuery('#'+nav[pageid].t1+'>a').text()+'</span>'));
//set display classes for nav
jQuery('#'+nav[pageid].t1).addClass('selected').find('#'+nav[pageid].t2).addClass('subselect'); //topnav
jQuery('#'+nav[pageid].t3).addClass('selected').find('#'+nav[pageid].t4).addClass('subselect'); //leftnav
}catch(err){}
},100);
Run Code Online (Sandbox Code Playgroud)
IF块
var intvar = setInterval(function(){
if(typeof jQuery == 'function' && typeof nav == 'object' && typeof pageid != 'undefined' && typeof document.getElementById('leftnav') == 'object'){
clearInterval(intvar);
jQuery('#'+nav[pageid].t1+'>a').replaceWith(jQuery('<span>'+jQuery('#'+nav[pageid].t1+'>a').text()+'</span>'));
//set display classes for nav
jQuery('#'+nav[pageid].t1).addClass('selected').find('#'+nav[pageid].t2).addClass('subselect'); //topnav
jQuery('#'+nav[pageid].t3).addClass('selected').find('#'+nav[pageid].t4).addClass('subselect'); //leftnav
}
},100);
Run Code Online (Sandbox Code Playgroud) 当我使用C#中的新对象初始化器初始化对象时,我不能使用类中的一个属性来执行进一步的操作,我不知道为什么.
我的示例代码:
Person person = new Person { Name = "David", Age = "29" };
Run Code Online (Sandbox Code Playgroud)
在Person类中,x将等于0(默认值):
public Person()
{
int x = Age; // x remains 0 - edit age should be Age. This was a typo
}
Run Code Online (Sandbox Code Playgroud)
然而,person.Age确实等于29.我确信这是正常的,但我想明白为什么.
我正在开发一个ASP.NET MVC项目,我已经开始考虑我的缓存策略了.我试图让我的框架尽可能开放用于缓存.
根据我在Scott Hanselman播客期间听到的内容,StackOverflow.com使用页面输出缓存并将内容拉链并将其放入RAM中.这听起来像是对用户范围的缓存非常有用,但对于像个性化页面这样的东西,你必须为每个用户缓存一个版本,并且可能很快失控.
所以,对于缓存策略.哪个应该使用,输出缓存,数据缓存还是组合?我的第一个想法是两者,但就缓存依赖性而言,它听起来有点复杂.
我有几个花车有点大.他们大约有1亿.
我想这个数字显示类似下面的123,456,789.01234
我发现我可以使用CONVERT如果货币数据类型,但这并不做充分的把戏(它留下了一些小数).
我必须在左边有逗号,在右边有五个小数位.
是否有任何内置的SQL函数来帮助解决这个问题?或者我是否必须编写自定义函数?
谢谢
***更新
我一直在围绕这个问题跳舞,但它一直在上升.我们有一个系统,我们的表格可以从最初存储为一个描述开始,NVARCHAR(150)然后我们得到一张票,要求将字段大小扩展到250,然后是1000等等......
在我们添加到大多数表的"note"字段和/或"description"字段上重复该循环.当然,我关注的是性能并打破了页面的8k限制.但是,我的另一个问题是通过将系统中的每个表中的这些字段分解为延迟加载的引用,使系统的可维护性降低.
所以在这里我面对的是同样的两个选项,一直盯着我.(欢迎其他人)请借给我你的意见.
更改所有可能的注释和/或说明,NVARCHAR(MAX)并确保我们在所有列表中排除这些字段.基本上永远不会做:SELECT * FROM [TableName]除非它只检索一条记录.
删除所有注释和/或描述字段,并使用对[Notes]表的forign键引用替换它们.
CREATE TABLE [dbo].[Notes] ((
[NoteId] [int] NOT NULL,
[NoteText] [NVARCHAR]MAX)NOT NULL )
显然我更喜欢使用选项1,因为如果我们选择2,它会在我们的系统中发生很大变化.但是如果选项2真的是唯一的好方法,那么至少我可以说这些变化是必要的,我已经完成了家庭作业.
更新:我在一个包含100,000条记录的示例数据库上运行了多次测试.我发现由于集群索引扫描选项1所需的IO大约是选项2所需的两倍.如果我选择大量记录(1000或更多),即使我做了选项1也是两倍慢不包括选择中的大文本字段.随着我请求更少的行,线条模糊更多.我是一个网页应用程序,其中页面大小为50左右是常态,因此选项1将起作用,但我将在(非常)不久的将来将所有实例转换为选项2以实现可伸缩性.
我似乎无法弄清楚为什么这不起作用.我需要将文本框绑定到内联表达式中的值.好像很简单吧?但这些都不奏效.有任何想法吗?提前致谢.
<asp:textbox id="tbName" runat="server" Text='<%# Eval("test") %>' />
<asp:textbox id="tbName" runat="server" Text='<%= "test" %>' />
Run Code Online (Sandbox Code Playgroud)
编辑:我应该提到这个页面后面没有代码,顶部只有以下指令.
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Page Language="C#" %>
Run Code Online (Sandbox Code Playgroud)
编辑:
我可以提出的唯一可行的解决方案是添加一个内联服务器脚本,就像这个一样.我希望我知道为什么内联表达式不起作用,除非你在数据绑定上下文中.
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
tbName.Text = "test";
}
</script>
Run Code Online (Sandbox Code Playgroud) sql-server ×3
asp.net ×2
c# ×2
javascript ×2
ajax ×1
architecture ×1
asp.net-mvc ×1
caching ×1
data-binding ×1
database ×1
excel ×1
excel-vba ×1
html ×1
optional ×1
outputcache ×1
parameters ×1
sql ×1
try-catch ×1
vba ×1
xml ×1
xpath ×1