以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于异步加载,发现一个问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49263)

--  作者:blackzhu
--  发布时间:2014/4/15 11:12:00
--  关于异步加载,发现一个问题
Sql 远程数据源

原来我是这样写的,打开窗口没有问题

  DataTables("产品维护").LoadFilter = "[_Identify] Is Null"
  DataTables("产品维护").Load


但是我改成这样后,出现这个错误:

  DataTables("产品维护").LoadFilter = "[_Identify] Is Null"
  DataTables("产品维护").LoadAsync()

 
图片点击可在新窗口打开查看此主题相关图片如下:tt截图未命名.bmp
图片点击可在新窗口打开查看


 因为我找不到错误的原因,所以我这样加了两条验证的代码:

msgbox(1)
DataTables("产品维护").LoadFilter = "[_Identify] Is Null"
  DataTables("产品维护").LoadAsync()
msgbox(2)

 但是这样一加,不出任何错误提示了,我认为是不是因为延迟的原因呀!
[此贴子已经被作者于2014-4-15 11:13:42编辑过]

--  作者:Bin
--  发布时间:2014/4/15 11:15:00
--  
赋值你的代码,新建项目测试了一下.没发现问题.

上个例子看看.

--  作者:blackzhu
--  发布时间:2014/4/15 11:20:00
--  
我测试了 不是这个原因,我再找找. 
[此贴子已经被作者于2014-4-15 11:21:27编辑过]

--  作者:狐狸爸爸
--  发布时间:2014/4/15 11:24:00
--  
老朱,既然不加载数据,没有必要异步了。
--  作者:blackzhu
--  发布时间:2014/4/15 11:25:00
--  
奇了怪了,红字部分加了就不出错,不加就出现提示了:

  DataTables("产品维护").LoadFilter = "[_Identify] Is Null"
        DataTables("产品维护").LoadAsync()
msgbox(1)
        Dim dr As DataRow
        CType(e.Form.Controls("RecordGrid1").BaseControl, C1.Win.C1FlexGrid.C1FlexGrid).Styles.EmptyArea.BackColor = Drawing.Color.WhiteSmoke
        Dim ctl As WinForm.CheckedComboBox = e.Form.Controls("列表")
        ctl.Value = "类型,条码,元器件名称"
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "SELECT * From{产品维护}"
        dt = cmd.ExecuteReader()
        For Each cl As DataCol In dt.DataCols
            Select Case cl.Name
                Case "类型", "条码", "元器件名称", "型号", "封装", "供应商编号", "供应商名称"
                    ctl.Items.Add(cl.Name)
            End Select
        Next
        For Each c As WinForm.Control In Forms(FrmName).Controls
            If TypeOf c Is WinForm.Button Then \'判断控件是否是文本框
                Dim t As WinForm.Button = c \'使用特定类型的变量引用控件
                t.FlatStyle = FlatStyle.Standard
                dr = DataTables("系统设置表").SQLFind("类型=\'按钮风格\' And 用户ID=\'" & Vars("_UserID") & "\'")
                If dr IsNot Nothing Then
                    t.VisualStyle = CInt(dr("系统值"))
                Else
                    t.VisualStyle = 4
                End If
            End If
        Next
        MsgBox(4)
        Dim piv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1")
        Dim ftp As New FTPClient
        dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'服务器地址\'")
        If dr IsNot Nothing Then
            ftp.Host = dr("系统值")
        End If
        dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'用户名\'")
        If dr IsNot Nothing Then
            ftp.Account = dr("系统值")
        End If
        dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'密码\'")
        If dr IsNot Nothing Then
            ftp.Password = dr("系统值")
        End If
        dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'端口\'")
        If dr IsNot Nothing Then
            ftp.Port = dr("系统值")
        End If
        ftp.ChangeDir("\\产品图片")
        piv.FTPClient = ftp

--  作者:blackzhu
--  发布时间:2014/4/15 11:26:00
--  
我把这个异步改成同步 一点问题都没
--  作者:Bin
--  发布时间:2014/4/15 11:26:00
--  
  DataTables("产品维护").LoadAsync()

放到最后看看.

--  作者:blackzhu
--  发布时间:2014/4/15 11:31:00
--  
这个好奇怪 还是检查下 我把这代码

DataTables("产品维护").LoadFilter = "[_Identify] Is Null"
        DataTables("产品维护").LoadAsync()

放到最后来执行,就没有问题了.

--  作者:Bin
--  发布时间:2014/4/15 11:32:00
--  
那就证实了我的猜想,解析这个有点麻烦. 需要了解一定多线程专业知识.

能解决问题就好.

--  作者:lsy
--  发布时间:2014/4/15 11:34:00
--  
楼主为我等趟路。