我想知道是否有可能根据另一个参数的结果使参数变灰?在这种情况下,如果指定日期设置为"否",则"开始日期"和"结束日期"应显示为灰色.

正如您在屏幕截图中看到的那样,尽管将"指定日期"设置为"是"或"否"仍未发生 - 开始日期和结束日期将指示一个值(除非您勾选NULL值).如果在开始日期和结束日期旁边都勾选了NULL框,则报告将正常运行 - 但如果它们基于"否"自动变灰,则会使用户更容易处理该过程.
因此,简而言之,如果"否"日期显示为灰色,则显示"是".这可能吗?如果是这样怎么样?
非常感谢任何回复
我们想要改变将值从PHP传递到存储过程(T-SQL)的方式.我只有很少的PHP经验,但我会尝试通过与我们的Web开发人员的讨论来解释这个过程.
当前流程
示例测试表
为了更新记录,例如本例中的Field3,我们将所有现有值传递回存储过程.
EXEC dbo.UpdateTest @ID = 1, @Field1 = 'ABC', @Field2 = 'DEF', @Field3 = 'GHI', @Field4 = 'JKL'
Run Code Online (Sandbox Code Playgroud)
让我们说更新Field3,你必须单击一个按钮.这将导航到一个新页面,该页面将运行存储过程以更新数据.由于新页面不知道值,因此必须运行一个SELECT过程以在运行之前检索值UPDATE.
然后,该脚本将用户重定向回重新加载更新数据的页面,并且更改将反映在屏幕上.
新进程
我们想要做的只是传递我们想要改变的字段.
EXEC dbo.UpdateTest @ID = 1, @Field2 = 'DEF', @Field3 = 'GHI'
Run Code Online (Sandbox Code Playgroud)
我们的解决方案很简单 首先,我们将所有可更新字段设置为可选(因此NULL可以传递).然后我们检查参数是否NULL(未通过),如果是,那么我们忽略它,如果不是,我们更新它.
UPDATE
dbo.Test
SET
Field1 = NULLIF(ISNULL(@Field1,Field1),'-999')
,Field2 = NULLIF(ISNULL(@Field2,Field2),'-999')
,Field3 = NULLIF(ISNULL(@Field3,Field3),'-999')
,Field4 = NULLIF(ISNULL(@Field4,Field4),'-999')
WHERE
ID = @ID
Run Code Online (Sandbox Code Playgroud)
但是,我们仍然希望程序来更新数据库记录NULL,如果一个NULL值被通过.解决方法是将任意值分配给相等NULL(在本例中为-999),以便在NULL传递任意值(-999)时更新过程.
这个解决方案相当混乱,在我看来,这是一种解决问题的低效方法.还有更好的解决方案吗?我们做错了什么?
非常感谢任何回复
我在一份需要转换为SQL Server的旧报告中遇到过这一行.
REGEXP_LIKE (examCodes, learner_code)
Run Code Online (Sandbox Code Playgroud)
examCodes是源,mathner_code是模式.我知道SQL Server没有REGEXP_LIKE,并且大多数地方都告诉您使用PATINDEX.
这是我认为这将工作:
PATINDEX(learner_code, examCodes)
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
Msg 4145, Level 15, State 1, Line 54
An expression of non-boolean type specified in a context where a condition is expected, near 'WHERE'.
Run Code Online (Sandbox Code Playgroud)
在MSDN上,语法指定为,
PATINDEX ('%pattern%',expression)
Run Code Online (Sandbox Code Playgroud)
但是learner_code是一个字段,我不能指定一个模式?
我首先没有写这份报告所以我很困惑它无论如何都在寻找什么样的模式.
非常感谢