Foxtable(狐表)用户栏目专家坐堂 → 这个代码如何理解?


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

主题:这个代码如何理解?

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
这个代码如何理解?  发帖心情 Post By:2024/7/27 9:19:00 [显示全部帖子]

'不重复编号上传用,这里的用法比较简单,没有做复杂的编号规则处理'
Public Class BizCodeBuilder
    
    Private _codelock As New Object
    
    Public Sub New()
        
    End Sub
    
    Public Function GetNextCode(s_name As String, Optional s_prefix As String = Nothing) As String
        SyncLock _codelock '使用锁处理并发
        Dim db = HySql.DataBaseFactory.CreateDatabase("编号用户测试库")
        Dim Sql As String = CExp("select * from uSysBizCode where BizName='{0}'", s_name) '执行SQL
        Dim dt As system.data.DataTable = db.ExecuteDataSet(Sql).Tables(0)
        Dim dr As system.data.DataRow
        If dt.Rows.count = 0 Then
            dr = dt.NewRow()
            dr("BizName") = s_name 
            dr("MaxValue") = 1
            If String.IsNullOrEmpty(s_prefix) Then s_prefix = Date.now.ToString("mmss") & "BH"
            dr("Prefix") = s_prefix
            dr("Mark") = "yyyyMMdd"

问题一:s_name 和s_prefix是   Public Function GetNextCode(s_name As String, Optional s_prefix As String = Nothing) As String中变量?

 问题二:  Dim Sql As String = CExp("select * from uSysBizCode where BizName='{0}'", s_name) '
这个是动态查询, s_name是自定义?

问题三:在数据库调试select * from uSysBizCode有数据,select * from uSysBizCode where BizName='{0}查询无数据均空



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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 10:03:00 [显示全部帖子]

3、执行下面代码,把弹窗里的sql放到数据库里执行.
Dim Sql As String = CExp("select * from uSysBizCode where BizName='{0}'", s_name)
msgbox(sql)

问题一:在全局代码,执行没有弹窗信息,在命令窗口,提示没有s_name
问题二:在实例在运行,检查数据库、字段,没有发问题,就是报错,提示from错,能否请老师,帮调试?

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 10:54:00 [显示全部帖子]


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

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 11:03:00 [显示全部帖子]

问题1:客户端给服务端发送消息的代码不正确 ,1楼的代码,如何改或需补代码?
问题2:服务端和客户端,OpenQQ,在执行时,花时间比较长,是不是因有异常的原因?没有异常时,OpenQQ与不用OpenQQ速度一样?
[此贴子已经被作者于2024/7/27 11:07:38编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 11:26:00 [显示全部帖子]

 客户端代码
Dim db = HySq-l.DataBaseFactory.CreateDatabase("编号用户测试库")

Dim Sq-l = "selec-t * from 订单;" '
Dim dt As system.data.DataTable = db.ExecuteDataSet(Sq-l).Tables(0)
dt.TableName = "订单"
Dim t As Table = e.Form.Controls("Table1").Table
t.datasource = dt.Copy 

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 11:30:00 [显示全部帖子]

Sele-ct e.DataCol.Name
    Case "日期"
        If e.DataRow.IsNull("日期") Then
            e.DataRow("编号") = Nothing
        Else
            Dim dr As DataRow = DataTables("网络编号窗口_Table2").Find("编号 is not null and 表名='订单'", "编号")
           
        
            If dr IsNot Nothing Then
                e.DataRow("编号") = dr("编号")
                dr.Delete
                DataTables("号表").save
            Else
                Dim rt As String = QQClient.SendWait(":f" & e.DataTable.Name & "f:")
                e.DataRow("编号") = rt
            End If
        End If
        
    Case "编号"
        If e.NewValue Is Nothing AndAlso e.OldValue IsNot Nothing Then 
            Dim dr1 As DataRow = DataTables("网络编号窗口_Table2").Find("表名 ='订单' and 编号 ='" & e.OldValue & "'")
        
            If dr1 Is Nothing Then
                dr1 = DataTables("网络编号窗口_Table2").AddNew
                dr1("表名") = "订单" 
                dr1("编号") = e.OldValue
                dr1.save
            End If
        End If 
End Sele-ct

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 14:02:00 [显示全部帖子]


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


            If String.IsNullOrEmpty(s_prefix) Then s_prefix = Date.now.ToString("mmss") & "BH"
            dr("Prefix") = s_prefix
            dr("Mark") = "yyyyMMdd"
            dr("MarkValue") = Date.Today.ToString("yyyyMMdd")
            dr("Length") = 4
            dt.Rows.Add(dr)
        Else
            dr = dt.Rows(0)
            '这里的处理规则是按时间进行重新编号,至于是按年,月还是日,在掩码中体现'
            If dr("MarkValue") <> Date.Today.ToString(dr("Mark")) Then 是不是这个错,如何解决?
                dr("MaxValue") = 1
                dr("MarkValue") = Date.Today.ToString(dr("Mark"))
            Else
                dr("MaxValue") = dr("MaxValue") + 1
            End If
        End If
        db.UpdateDataTable(dt) 
        Return dr("Prefix") & dr("MarkValue") & Format(dr("MaxValue"), "0000") '顺序号只取4位'
        End SyncLock
    End Function
End Class

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 14:37:00 [显示全部帖子]

'UserLogging
e.Success = True '允许用户登录

'ReceivedMessage
Dim msg As String = e.Message
'这里处理编号生成-------------------------------------------------'
If msg.StartsWith(":f") AndAlso msg.EndsWith("f:") Then
    msg = msg.SubString(2, msg.Length - 4)
    e.ReturnValue = _BizCodeBuilder.GetNextCode(msg) '将编号返回给客户端
End If

是不是这个错,如何改?


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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 14:55:00 [显示全部帖子]

编号表格里的mark列没有数据,
在12楼图显示是数据?后台数据库也有数据?如何解决?

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


加好友 发短信
等级:六尾狐 帖子:1345 积分:8871 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/7/27 15:24:00 [显示全部帖子]

问题一:markvalue没有数据
加上17楼,执行报错
错误所在事件:项目,Server
详细错误信息:
参数“Prompt”无法转换为类型“String”。

问题二:用狐表ET模式,Mark",MarkValue,在客户端操作成功,服务端Mark",MarkValue都是系统生成,ADO是不行?

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