以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助网页数据接收问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149817)

--  作者:abc2363360
--  发布时间:2020/5/13 9:00:00
--  求助网页数据接收问题
此主题相关图片如下:qq截图20200512180510.jpg
图片点击可在新窗口打开查看

第一张图 这个方法存在的问题:如果Input数据类型是date的时候,就会把0提交到数据库,令到原本没有数据的变成了1990-01-01 
例如    参加党派时间 = \'" & e.PostValues("参加党派时间")  Input不选择任何日期的时候,提交后数据库变成了 1990-01-01




图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200512180423.jpg
图片点击可在新窗口打开查看

第二张图 这个方法存在的问题:如果Input原本就有数据,现在删除,提交,e.PostValues(key)就没有这个字段,所以无法把数据库的内容删除



请问如何解决 多个数据类型是date的Input   在不选择任何日期提交的时候,不更新数据库内容?

--  作者:有点蓝
--  发布时间:2020/5/13 9:16:00
--  
请贴出这个网页的完整代码看看
--  作者:abc2363360
--  发布时间:2020/5/13 9:18:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:完整代码.txt


--  作者:abc2363360
--  发布时间:2020/5/13 9:19:00
--  
目前是使用第二个方法 这个方法的问题是:如果Input原本就有数据,现在删除,提交,e.PostValues(key)就没有这个字段,就无法把数据库的内容删除
--  作者:有点蓝
--  发布时间:2020/5/13 9:42:00
--  
    Dim Text As String
    For Each key As String In e.PostValues.Keys
    Text = Text & key & " = \'" & e.PostValues(key) & "\',"
    Next
    Text = Text.TrimEnd(",")

改为:

Dim str() As String = {"备注","手机号码","性别",......}

Dim Text As String
For Each key As String In str
    If e.PostValues.ContainsKey(key)
        Text = Text & key & " = \'" & e.PostValues(key) & "\',"
    Else
        Text = Text & key & " = null ,"
    End If
Next
Text = Text.TrimEnd(",")

建议使用参数化用法,数据库效率会高点http://www.foxtable.com/webhelp/topics/3266.htm

--  作者:abc2363360
--  发布时间:2020/5/13 9:44:00
--  
= null 这个日期字段就不会显示 1990-1-1了吗?
--  作者:abc2363360
--  发布时间:2020/5/13 9:44:00
--  
还是蓝哥NB
--  作者:abc2363360
--  发布时间:2020/5/14 10:24:00
--  
版主好,后端如何检查前端时间填写是否超范围?例如:0001年1月1日,前端可以这样填写,但是后端会报错,提示超范围了。
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20200514102040.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/5/14 10:27:00
--  
比如

dim d as date = cdate(e.postalues("日期"))
if d < cdate("2019-05-01") then msgbox("不能小于2019-5-1")

--  作者:abc2363360
--  发布时间:2020/5/14 10:36:00
--  
根据老师的提示,我修改好了,现在记录一下。谢谢老师。
    Dim timecheck() As String = {"参加党派时间","进入铁通时间","参加工作时间","驾驶证生效日期","驾驶证失效日期","学习开始时间","学习结束时间","关系人生日","行驶证有效期","安全员证有效期","登高证有效期","电工证有效期"}
    
    For Each check As String In timecheck
        If e.PostValues.ContainsKey(check)
            If CDate(e.PostValues(check)).Year < 1990 Or CDate(e.PostValues(check)).Year > 2050 Then
                With wb.AddMsgPage("","warn2","增加失败",check & "时间错误,请重新填写!")
                    .icon = "Warn" \'改变图标
                    .AddButton("btn3","返回").Attribute = ""
                End With
                e.WriteString(wb.Build)
                e.Handled = True \'通知系统异步函数执行完毕,可以关闭信道
                Return ""  \'必须返回
            End If
        End If
    Next