Foxtable(狐表)用户栏目专家坐堂 → [求助]备注字段按照时间显示的优化


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

主题:[求助]备注字段按照时间显示的优化

帅哥哟,离线,有人找我吗?
blsu33
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/16 6:39:00 [只看该作者]

老师,
  服务器端数据是按照秒变化的,在计划任务写的
1、客户端读取数据如何操作,也同步到按照秒变化?
2、如果客户端是代码生成的临时查询表,同步怎么做。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/16 8:41:00 [只看该作者]

客户端如果要按秒读取不同数据,不要使用备注列,备注里拆分出上一秒的数据更麻烦,改为不同的行存储,一秒一行数据。客户端按照时间顺序取数据即可

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/16 11:18:00 [只看该作者]

客户端的按秒的事件代码写在哪里?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/16 11:34:00 [只看该作者]

计划管理,窗口计时器

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/16 21:28:00 [只看该作者]

老师计划任务这么写的

Dim dtb As New DataTableBuilder("风量统计")
dtb.AddDef("timebegin", Gettype(Date))
For Each dr As  DataRow In DataTables("Archive").DataRows
    dtb.AddDef(dr("ValueID"), Gettype(Double),"",dr("ValueName"))
Next
dtb.Build()

For Each v As Date In DataTables("nvccsvalue").GetValues("timebegin")
    Dim dr1 As DataRow = DataTables("风量统计").AddNew()
    dr1("timebegin") = v
    Dim drs As List (of DataRow)=DataTables("nvccsvalue").Select("timebegin='" & v &"'")
    For Each dr2 As DataRow In drs
        dr1(dr2("Valueid")) = dr2("idvalue")
    Next
    
Next

如下图

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20201216212641.png
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/16 21:29:00 [只看该作者]

因为查询表要经常查询,导致我建立的窗口控件绑定会出错误,因为查询表不断在刷新。

怎么优化。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/17 8:41:00 [只看该作者]

临时表建表的代码放到计划管理之外,既然是经常使用的,没有必要1秒就新建一次吧

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/20 7:17:00 [只看该作者]

Dim dstr As String=args(0)
Dim dstr1 As String=args(1)
Dim dt As DataTable=DataTables(dstr)
Dim dt2 As DataTable=DataTables(dstr1)
Dim drss As List (of DataRow)=dt.SQLSelect("ValueID<>0")
If drss.Count>0 Then
    For Each dr As DataRow In drss
        If dt2.sqlCompute("count(Valueid)","Valueid='"& dr("Valueid") &"'")>0 Then
            Dim dr1 As DataRow=dt2.sqlfind("Valueid='"& dr("Valueid") &"'","timebegin desc")
            If dr1 IsNot Nothing Then
                If Format(dr1("timebegin"),"yyyy-MM-dd")=Format(Date.Now(),"yyyy-MM-dd") Then
                    Dim str As String=(dr1("idvalues") & vbcrlf & Format(Date.Now(),"yyyy-MM-dd HH:mm:ss/") & dr1("idvalue")).Trim()
                    Dim cmd As new SQLCommand
                    cmd.C
                    cmd.CommandText = "U PDATE {nvccsvalue} SET idvalues ='"& STR & "'" & " WHERE Valueid=" & dr("Valueid")
                    cmd.CommandText = "U PDATE {nvccsvalue} SET idvalue ='"& val(Rand.Next(100)) & "'" & " WHERE Valueid=" & dr("Valueid")
                    cmd.ExecuteNonQuery
                    
                    
                Else
                    
                    Dim cmd2 As new SQLCommand
                    cmd2.C
                    cmd2.CommandText = "I nsert Into {nvccsvalue}(Valueid,timebegin,idvalue)  Values ('" &  dr1("Valueid") & "','" & Date.Now() & "','" & val(Rand.Next(100)) & "')"
                End If
            End If
        Else
            Dim str3 As String=(Format(Date.Now(),"yyyy-MM-dd HH:mm:ss/") & dr2("idvalue")).Trim()
            Dim cmd3 As new SQLCommand
            cmd3.C
            cmd3.CommandText = "I nsert Into {nvccsvalue}(Valueid,timebegin,idvalue,idvalues)  Values ('" &  dr("Valueid") & "','" & Date.Now() & "','" & val(Rand.Next(100)) & "','" & str3 &"')"
            cmd3.ExecuteNonQuery
            
            Continue  For
        End If
    Next
End If

老师,换成i nsert Into 由于str3 还未生成 dr2("idvalue"),怎么改能实现。

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/20 7:20:00 [只看该作者]

难道是i nsert Into,立马U PDATE 一下,还是能直接写进去。

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2020/12/20 8:15:00 [只看该作者]

老师,
例子运行一段时间,就提示这个代码,是怎么意思呢?

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:自定义函数,nvcsvaluehost
详细错误信息:
调用的目标发生了异常。
连接未关闭。 连接的当前状态为正在连接。

nvcsvaluehost是放到计划任务执行如下
Functions.AsyncExecute("nvcsvaluehost","Archive","nvccsvalue")


Dim dstr As String=args(0)
Dim dstr1 As String=args(1)
Dim dt As DataTable=DataTables(dstr)
Dim dt2 As DataTable=DataTables(dstr1)
Dim drss As List (of DataRow)=dt.SQLSelect("ValueID<>0")
If drss.Count>0 Then
    For Each dr As DataRow In drss
        If dt2.sqlCompute("count(Valueid)","Valueid='"& dr("Valueid") &"'")>0 Then
            Dim dr1 As DataRow=dt2.sqlfind("Valueid='"& dr("Valueid") &"'","timebegin desc")
            If dr1 IsNot Nothing Then
                If Format(dr1("timebegin"),"yyyy-MM-dd")=Format(Date.Now(),"yyyy-MM-dd") Then
                    Dim str As String=(dr1("idvalues") & vbcrlf & Format(Date.Now(),"yyyy-MM-dd HH:mm:ss/") & dr1("idvalue")).Trim()
                    Dim cmd As new SQLCommand
                    cmd.C
                    Try
                        cmd.BeginTransaction() '开启事务
                        cmd.CommandText = "U PDATE {nvccsvalue} SET idvalues ='"& STR & "'" & " WHERE Valueid=" & dr("Valueid")
                        cmd.CommandText = "U PDATE {nvccsvalue} SET idvalue ='"& val(Rand.Next(100)) & "'" & " WHERE Valueid=" & dr("Valueid")
                        cmd.ExecuteNonQuery
                        cmd.Commit() '提交事务
                    Catch ex As Exception '如果出错
                        cmd.Rollback() '则回滚事务
                    End Try
                Else
                    Dim str2 As String=(Format(Date.Now(),"yyyy-MM-dd HH:mm:ss/") & dr1("idvalue")).Trim()
                    Dim cmd2 As new SQLCommand
                    cmd2.C
                    Try
                        cmd2.BeginTransaction() '开启事务
                        'cmd2.CommandText = "I nsert Into {nvccsvalue}(Valueid,timebegin,idvalue,idvalues)  Values (" &  dr1("Valueid") & "," & Date.Now() & "," & val(Rand.Next(100)) & "," & STR2 & ")"
                        cmd2.CommandText = "I nsert Into {nvccsvalue}(Valueid,timebegin,idvalue)  Values ('" &  dr1("Valueid") & "','" & Format(Date.Now(),"yyyy-MM-dd") & "','" & val(Rand.Next(100)) & "')"
                        cmd2.ExecuteNonQuery
                        cmd2.Commit() '提交事务
                    Catch ex As Exception '如果出错
                        cmd2.Rollback() '则回滚事务
                    End Try
                End If
            End If
        Else
            Dim cmd3 As new SQLCommand
            cmd3.C
            Try
                cmd3.BeginTransaction() '开启事务
                cmd3.CommandText = "I nsert Into {nvccsvalue}(Valueid,timebegin,idvalue)  Values ('" &  dr("Valueid") & "','" & Format(Date.Now(),"yyyy-MM-dd") & "','" & val(Rand.Next(100)) & "')"
                cmd3.ExecuteNonQuery
                cmd3.Commit() '提交事务
            Catch ex As Exception '如果出错
                cmd3.Rollback() '则回滚事务
            End Try
            Continue  For
        End If
    Next
End If
经过测试


Functions.AsyncExecute("nvcsvaluehost","Archive","nvccsvalue")

换成

Functions.Execute("nvcsvaluehost","Archive","nvccsvalue")
就不在出现提示,不知道为什么。
[此贴子已经被作者于2020/12/20 8:39:39编辑过]

 回到顶部
总数 28 上一页 1 2 3 下一页