以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  移动开发“ 今日之前的日期”不可编辑、删除  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109272)

--  作者:Zhao2006
--  发布时间:2017/11/8 12:03:00
--  移动开发“ 今日之前的日期”不可编辑、删除
甜老师好!我的订餐系统使用中发现问题:有些员工吃过了的饭,过后又把它删了。因此如何设计:今天之前的订单不能删除的代码?我翻遍了帮助都找不到相关命令条件的。。。只好又求助伟大救星甜老师了。
[此贴子已经被作者于2017/11/8 12:04:38编辑过]

--  作者:Zhao2006
--  发布时间:2017/11/8 12:06:00
--  
附件
图片点击可在新窗口打开查看此主题相关图片如下:过期删除.jpg
图片点击可在新窗口打开查看
总是不显示的,再发看看。
--  作者:有点甜
--  发布时间:2017/11/8 12:37:00
--  

js端不好控制,建议在httprequest里面控制。

 

edit.htm页面,先根据编号的值查找到对应的行;

 

然后对比日期,如果是之前的数据,那就提示不允许删除返回;否则,执行原来的代码。


--  作者:zhao2006
--  发布时间:2017/11/8 15:30:00
--  
哦哦,原理听起来似乎明白了,但整代码可不是件简单的事。我是用自定义函数的,edit代码如下:
Dim e As RequestEventArgs = args(0)
Dim wb As New weui
Dim Pagetext As Integer = e.GetValues("page")
Dim PrimaryKey As Integer = e.GetValues("key")
Dim PageURL = "List.htm?page=" & Pagetext
If e.PostValues.Count = 0 Then \'生成编辑页面
    Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey)
    If dr IsNot Nothing Then
        wb.AddForm("","form1","edit.htm?key=" & PrimaryKey &  "&page=" & Pagetext)
        With wb.AddInputGroup("form1","ipg1","编辑table")
            .AddHiddenValue("编号", dr("_Identify"))
            .AddInput("xm","姓名","text").Value=dr("姓名")
            .AddInput("rq","日期","date").Value=dr("日期")
            .AddInput("fs","份数","number").Value=dr("份数")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit")
        End With
    Else
        With wb.AddMsgPage("","msgpage","编辑失败", "此table可能已经被删除!") \'提示用户此table不存在.
            .icon= "Warn"
            .AddButton("btn1","返回",PageURL) \'生成返回原来页面的按钮
        End With
    End If
Else \'保存编辑结果
    Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey)
    If dr IsNot Nothing Then
        Dim inms() As String = {"xm","rq","fs"} \'输入框名称数组
        Dim cnms() As String = {"姓名","日期","份数"} \'列名数组,注意列名和输入框必须一一对应,位置不能错乱
        For i As Integer = 0 To inms.Length -1
            dr(cnms(i)) = e.PostValues(Inms(i))
        Next
        dr.Save()
        \'显示完成提示,2秒后自动返回原来的页面
        wb.AppendHtml("<meta http-equiv=\'refresh\' c>",True)
        wb.AddToast("","t1", "编辑完成",0).Visible = True
        
    Else
        With wb.AddMsgPage("","msgpage","保存失败", "此table可能已经被删除!") \'提示用户此table不存在.
            .icon= "Warn"
            .AddButton("btn1","返回",PageURL) \'生成返回原来页面的按钮
        End With
    End If
End If
e.WriteString(wb.Build) \'生成网页

--  作者:有点蓝
--  发布时间:2017/11/8 16:46:00
--  
Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey & " and 日期 = \'" & date.today & "\'")
--  作者:有点甜
--  发布时间:2017/11/8 17:03:00
--  

Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey)

 

直接替换成

 

Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey & " and 日期 = #" & date.today & "#")

 

----------------

 

如果想额外增加提示,还可以这样

 

Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey)

If dr IsNot Nothing Then

    If dr("日期") < Date.Today Then

        \'这里提示出错,生成一个页面

     Else

         \'正常页面

    End If

End If


--  作者:zhao2006
--  发布时间:2017/11/8 17:08:00
--  
这个连今天的也不可编辑了,应该是今天之前的日期不可编辑。
--  作者:有点甜
--  发布时间:2017/11/8 17:46:00
--  

贴出你写的代码。改成这样呢?

 

Dim dr As DataRow = DataTables("订餐明细表").SQLFind("[_Identify]=" & PrimaryKey & " and 日期 >= #" & date.today & "#")


--  作者:zhao2006
--  发布时间:2017/11/8 17:58:00
--  
呵呵,爽歪了,就是这个行!非常的谢谢甜老师,这样我这个小软件又上一档次了!