以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  为什么保存失败!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=149826)

--  作者:foxtablefanse
--  发布时间:2020/5/13 11:11:00
--  为什么保存失败!
输入页

Dim e As RequestEventArgs = args(0)
Select Case e.Path
    Case "addludan.htm"
        Dim wb As New weui
        Dim chp As List(of String) = DataTables("ZL_车辆信息").SQLGetValues("牌照号")
        Dim zhucao As List(of String) = DataTables("RL_员工档案").SQLGetValues("姓名","当前_岗位 in (\'010105\',\'010106\')","姓名 Desc")
        Dim zhihui As List(of String) = DataTables("RL_员工档案").SQLGetValues("姓名","当前_岗位 in (\'010105\',\'010106\',\'010107\')","[当前_岗位] Desc")
       \' Dim hc As new HttpClient("http://www.anqy.work/bianhao.htm")
        
        wb.AddForm("","form1","handle.htm") \'指定接收表单数据的的页面为handle.htm
        With wb.AddInputGroup("form1","ipg1","新增路单")
           \' .AddHiddenValue("编号",hc.GetData()) \'插入一个隐藏的路单主键,此值将随表单数据一并提交到服务器.
            .AddInput("姓名","姓  名:","text").Value=e.Cookies("uname")
            .AddSelect("用车形式","用车形式:","台班|包月")
            .AddSelect("车辆来源","车辆来源:","自有|外协")
            .AddSelect("车辆牌照","牌 照 号:","|" & String.Join("|",chp.ToArray))
            .AddInput("用车单位","用车单位:","text").Placeholder="请输入"
            .AddInput("二级单位","二级单位:","text").Placeholder="XX厂或XX队等"
            .AddInput("作业地点","作业地点:","text").Placeholder="请输入"
            .AddInput("作业内容","作业内容:","text").Placeholder="请输入"
            .AddInput("启用时间","启用时间:","datetime-local")
            .AddInput("结束时间","结束时间:","datetime-local")
            .AddSelect("主操","主  操:","|" & String.Join("|",zhucao.ToArray))
            .AddSelect("副操","副  操:","|" & String.Join("|",zhucao.ToArray))
            .AddSelect("主指挥","主  指  挥:","|" & String.Join("|",zhihui.ToArray))
            .AddInput("副指挥","副  指  挥:","text").Placeholder="请输入!多名人员用逗号分隔"
            .AddSelect("结账方式","结账方式:","签单|现金")
            .AddInput("现金金额","现金金额:","number").Step = "0.01"
            .AddInput("签单时长","签单时长:","number").Step = "0.1"
            .AddSelect("计费车型","计费车型:","|8|16|20|25|25K5|35|50|75|100|130|160|200|220|260|300|350|货车")
            .AddHiddenValue("创建人",e.Cookies("uname"))
            .AddHiddenValue("创建日期",Format(Date.Now,"yyyy-MM-ddTHH:mm"))
        End With
        With wb.AddInputGroup("form1","ipg2","备 注:")
            .AddTextArea("备注",5).Placeholder = "请输入200字以内的备注"
        End With
        
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build)
End Select

提交页

Dim e As RequestEventArgs = args(0)
Dim wb As New WeUI

Select Case e.Path
    Case "handle.htm"
        Dim nms() As String = {"姓名","用车形式","车辆来源","车辆牌照","用车单位","二级单位","作业地点","作业内容","启用时间","结束时间","主操","副操","主指挥","副指挥","结账方式","现金金额","签单时长","计费车型","备注","创建人","创建日期"}
        Dim bts() As String={"姓名","用车形式","车辆来源","车辆牌照","用车单位","作业地点","作业内容","启用时间","结束时间","主操","结账方式","签单时长"} \'必填项目
        
        For Each  bt As String In  bts
            If e.PostValues.ContainsKey(bt) = False Then \'生成错误提示页
                With wb.AddMsgPage("","msgpage","增加失败", bt & "列不能为空!")
                    .icon = "Warn" \'改变图标
                    .AddButton("btn1","返回").Attribute = ""
                End With
                e.WriteString(wb.Build)
                Return False \'必须返回
            End If
        Next
        \'msgbox(1)
        Dim cmd As new SQLC  ommand
        cmd.C  
        \'cmd.C  ommandText = "Select * Fr  om YW_路单 Where 1=2"
        \'Dim dtb As DataTable = cmd.ExecuteReader(True)
        Dim dr As DataRow =  DataTables("YW_路单").AddNew()
        \' msgbox(2)
        For Each nm As String In nms
            dr(nm) = e.PostValues(nm)
        Next
        
        \'Dim cmd As new SQLCommand
        \'cmd.C
        cmd.C  ommandText = "AutoNo"  \'生成流水号
        cmd.StoredProcedure = True \'表示执行的是存储过程
        cmd.Parameters.Add("@prefix","LD")
        cmd.Parameters.Add("@mode",0)
        cmd.Parameters.Add("@nolen","3")
        cmd.Parameters.Add("@listna","编号")
        cmd.Parameters.Add("@tablena","YW_路单")
        cmd.Parameters.Add("@runningnum","",True)
        cmd.ExecuteNonQuery
        dr("编号") = cmd.Parameters("@runningnum") \'获取存储过程返回的编号值
        
        Dim dt As Date =CDate(dr("启用时间"))
        If dt.Day > 25 Then \'如果为25日以后的日期
            dt = new Date(dt.year,dt.month,1) \'改为下个月的第一天
            dt= dt.AddMonths(1)
        End If
        dr("统计月") =  Format(dt,"yyyy-MM")
        dr.save()
 
        With wb.AddMsgPage("","msgpage","增加成功", "单号:" & dr("编号")) \'生成成功提示页
            .AddButton("btn1","继续增加","addludan.htm")
        End With \'返回增加成功消息
        e.WriteString(wb.Build) \'生成网页
End Select


错误:
2020-05-13 10:55:13.0653语句已终止。
将截断字符串或二进制数据。
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   在 System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)





--  作者:有点蓝
--  发布时间:2020/5/13 11:19:00
--  
这种提示是某个列的字符长度不够大,改大一点:http://www.foxtable.com/webhelp/topics/0036.htm

另外可以这样,避免有多余的空格
        For Each nm As String In nms
            dr(nm) = e.PostValues(nm).trim()
        Next

--  作者:程兴刚
--  发布时间:2020/5/13 11:21:00
--  
须判断zhucao、和zhihui这样的变量是否获取到值!
--  作者:有点蓝
--  发布时间:2020/5/13 11:39:00
--  
For Each nm As String In nms
    If e.PostValues.ContainsKey(nm)
        dr(nm) = e.PostValues(nm).trim()
    Else
        dr(nm) = Nothing
    End If
Next