Foxtable(狐表)用户栏目专家坐堂 → 移动开发中,怎么实现不加载表,直接用SQL语句实现数据的更新与插入?


  共有2912人关注过本帖树形打印复制链接

主题:移动开发中,怎么实现不加载表,直接用SQL语句实现数据的更新与插入?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
移动开发中,怎么实现不加载表,直接用SQL语句实现数据的更新与插入?  发帖心情 Post By:2019/7/17 10:38:00 [只看该作者]

移动开发中,怎么实现不加载表,直接用SQL语句实现数据的更新与插入?
红色部分代码dr定义相关的内容,如何用SQL语句进行实现呢?


页面代码如下:
Dim e As RequestEventArgs = args(0)
'定义故障报修表
Dim drgz As DataTable
Dim cmdgz As New SQLCommand
cmdgz.C
cmdgz.CommandText = "Sel ect * from {故障报修}"
drgz=cmdgz.ExecuteReader

'定义故障处理表
Dim drgzcl As DataTable
Dim cmdgzcl As New SQLCommand
cmdgzcl.C
cmdgzcl.CommandText = "Sel ect * from {故障处理}"
drgzcl=cmdgzcl.ExecuteReader
drgzcl.DataCols("处理提交时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)

Dim wb As New weui
Select Case e.Path
    Case "baoxiuchuli.htm"
        If e.PostValues.Count = 0 Then
            wb.AddPageTitle("","ph1","【报修处理】录入")
            wb.AddForm("","form1","baoxiuchuli.htm")         
            With wb.AddInputGroup("form1","ipg1","报修处理")
                .AddInput("处理时间","处理时间","date")                          
                .AddInput("报修提交时间","报修提交时间","text")              
                With wb.AddInputGroup("form1","ipg44","报修情况说明")
                    .AddTextArea("报修摘要",5).Placeholder = ""
                End With     
                With wb.AddInputGroup("form1","ipg55","处理内容及处理说明")
                    .AddTextArea("处理内容",5).Placeholder = "请填写故障处理的具体内容 "
                    .AddSelect("处理结果","处理结果","|处理完毕|有待进一步处理|等待反馈结果")
                End With   
                With wb.AddInputGroup("form1","ipg66","处理人员")
                    With .AddSelect("处理人员","处理人员","|" & drgz.sqlGetComboListString("处理人员","是否处理='false'"))
                    End With
                    .AddInput("运维人员","运维人员","text")
                End With
            End With
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With
            wb.AppendHTML("<script src='./lib/ajaxformbaoxiu.js'></script>") '引入脚本文件
            e.WriteString(wb.Build)
        Else
            Dim nms2 = New String() {"rdg1"}
            Dim nms() As String = {"处理时间","报修编号","报修人员","报修摘要","处理内容","处理结果","处理人员"} '不能为空的列名数组
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页
                    With wb.AddMsgPage("","msgpage","增加失败", nm & "列不能为空!")
                        .icon = "Warn" '改变图标
                        .AddButton("btn1","返回").Attribute = ""
                    End With
                    e.WriteString(wb.Build)
                    Return "" ' '必须返回
                    
                End If
            Next
            nms = New String() {"处理编号","处理时间","报修时间","报修编号","报修内容","报修故障","报修人员","报修摘要","处理内容","处理结果","处理人员","运维人员","处理耗时","处理摘要","处理提交时间","报修提交时间"}  '重新定义了nms数组,增加了两列.
            Dim dr As DataRow = DataTables("故障处理").AddNew()  
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) Then
                    dr(nm) = e.PostValues(nm)
                    ' cmdgzcl.CommandText = "insert into drgzcl(nm) values(e.PostValues(nm)) "
                    ' cmdgzcl.ExecuteNonQuery
                End If
            Next 
            For Each nm As String In nms2
                If e.PostValues.ContainsKey(nm) Then
                    dr(e.PostValues(nm)) = True
                End If
            Next
            '获取sql服务器时间,并写入处理提交时间列
            Dim cmd As New SQLCommand
            Dim dt As Date
            cmd.C
            'cmd.CommandText = "Sel ect GetDate()"
            cmd.CommandText = "Sel ect CONVERT(varchar(100), GETDATE(), 20)"
            dt = cmd.ExecuteScalar()
            dr("处理提交时间")=dt

            '根据处理时间生成处理编号
            If dr.IsNull("处理时间") Then
                dr("处理编号") = Nothing
            Else
                Dim bh As String = Format(dr("处理时间"),"yyyyMMdd") '取得报修编号的8位前缀
                If dr("处理编号").StartsWith(bh) = False '如果报修编号的前8位不符
                    Dim max As String
                    Dim idx As Integer
                    max = drgzcl.sqlCompute("Max(处理编号)","处理时间 = " & dr("处理时间") & " And [_Identify] <> " & dr("_Identify")) '取得该天的最大报修编号
                    If max > "" Then '如果存在最大报修编号
                        idx = CInt(max.Substring(9,3)) + 1 '获得最大报修编号的后三位顺序号,并加1
                    Else
                        idx = 1 '否则顺序号等于1
                    End If
                    dr("处理编号") = bh & "-" & Format(idx,"000")
                End If
            End If            '
            '保存并生成增加成功提示页面
            dr("处理摘要")=  "[" & dr("报修人员") & "]同志于[" & dr("报修时间") & "]提出编号为[" & dr("报修编号")  & "]的故障报修,经[" & dr("处理人员") & "][" & dr("运维人员") & "]于[" & dr("处理时间") & "]采取[" & dr("处理内容") & "]后,[" & dr("处理结果") & "].请及时使用,若有疑问请报修."
            
            If dr.IsNull("报修提交时间") Or dr.IsNull("处理提交时间") Then
                dr("处理耗时") = Nothing
                'MessageBox.Show("处理耗时因值不足暂时不计算")
            Else
                'MessageBox.Show("处理耗时计算")
                Dim tp As TimeSpan
                tp = dr("处理提交时间") - dr("报修提交时间")
                dr("处理耗时") = tp.TotalSeconds() '真正的时段型数据要转换为秒数,才能存入时段列
            End If
            dr.save()
    
            '更新故障报修表中的是否处理字段为true
            Dim cmd1 As New SQLCommand
            cmd1.C
            cmd1.CommandText = "up date 故障报修 set 是否处理='true' where 报修编号='" & e.values("报修编号") & "' "
            cmd1.ExecuteNonQuery()        
            '添加成功后的页面提示
            With wb.AddMsgPage("","msgpage","增加成功", "好好学习,天天向上") '生成成功提示页
                .AddButton("btn1","继续增加","baoxiuchuli.htm")
                .AddButton("btn2","返回首页","index.htm")
            End With    
        End If
        e.WriteString(wb.Build)
 
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111420 积分:567176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/17 10:44:00 [只看该作者]

1、drgzcl=cmdgzcl.ExecuteReader(true)

2、Dim dr As DataRow = drgzcl.AddNew() 

 回到顶部