Foxtable(狐表)用户栏目专家坐堂 → 保存外部数据的小问题


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

主题:保存外部数据的小问题

帅哥哟,离线,有人找我吗?
大红袍
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/9 21:09:00 [只看该作者]

 

vars("ls") = new List(of String)

 

-------------

 

Dim RowQty As Integer
RowQty = DataTables("个人基本信息").DataRows.Count  '当前表的总行数

Dim ls = vars("ls")
If Forms("提示").Opened Then    '事先必须建立【提示】窗体
    Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,开始保存......"  

    Dim txt As Winform.TextBox = Forms("提示").Controls("TextBox1")  
     ls.add( "第" & e.DataRow("编号") & "条记录: " & e.DataRow("姓名") & "......." & Format( val(e.DataRow("编号"))/RowQty,"0.0%") & " ......保存完毕")
    If ls.count > 22 Then
        ls.RemoveAt(0)      '删除ls的第一个值
    End If
    Dim str As String = String.Join(vbcrlf, ls.ToArray)
    txt.Text = str
    Application.DoEvents()
    Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,向服务器保存数据完毕,准备关闭......"
End If


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


加好友 发短信
等级:二尾狐 帖子:551 积分:5001 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/10/9 21:59:00 [只看该作者]

运行时,提示:未定义变量 ls ,不好意思,实在不知道怎么修改,请大红袍老师见谅,

上楼提到的 vars("ls") = new List(of String) 是放在 save之前的吗?

[此贴子已经被作者于2015/10/9 22:00:27编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/9 22:04:00 [只看该作者]

放在for each的循环之前

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


加好友 发短信
等级:二尾狐 帖子:551 积分:5001 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/10/10 0:33:00 [只看该作者]

还是出现没有定义的信息,能否恳请大红袍老师帮我修改(附上所有的代码),另外还有一个问题是,若是所有表内记录没有改变,save便不执行,如果改变了部分记录,则save时则仅显示改变了的记录的姓名,如何能获得被改变或的记录条数呢?(若修改的记录数i=0,则不打开【提示】窗口了,若i>0,则在【提示】窗口里显示相关i的信息
或是改变了

1、保存按钮的代码:

forms("提示").open
For Each dr As DataRow In DataTables("个人基本信息").DataRows
    dr.save
Next
2、表属性beforeSaveDataRow事件代码:

Dim RowQty As Integer
RowQty = DataTables("个人基本信息").DataRows.Count  '当前表的总行数

static ls As new List(of String)
If Forms("提示").Opened Then    '事先必须建立【提示】窗体
    Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,开始保存......"  
    Dim txt As Winform.TextBox = Forms("提示").Controls("TextBox1")   
    ls.add( "第" & e.DataRow("编号") & "条记录: " & e.DataRow("姓名") & "......." & Format( val(e.DataRow("编号"))/RowQty,"0.0%") & " ......保存完毕")
    If ls.count > 22 Then
        ls.RemoveAt(0)      '删除ls的第一个值
    End If
    Dim str As String = String.Join(vbcrlf, ls.ToArray)
    txt.Text = str
    Application.DoEvents()
    Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,向服务器保存数据完毕,准备关闭......"
End If

[此贴子已经被作者于2015/10/10 22:23:29编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/11 9:47:00 [只看该作者]

vars("ls") = new List(of String)

forms("提示").open
vars("count") = 0
For Each dr As DataRow In DataTables("个人基本信息").DataRows
    If dr.RowState <> DataRowState.Unchanged Then
        vars("count") += 1
    End If
Next
For Each dr As DataRow In DataTables("个人基本信息").DataRows
    If dr.RowState <> DataRowState.Unchanged Then
        dr.save
    End If
Next

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/11 9:48:00 [只看该作者]

Dim RowQty As Integer = vars("count")

Dim ls = vars("ls")
If Forms("提示").Opened Then    '事先必须建立【提示】窗体
    Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,开始保存......"  

    Dim txt As Winform.TextBox = Forms("提示").Controls("TextBox1")  
     ls.add( "第" & e.DataRow("编号") & "条记录: " & e.DataRow("姓名") & "......." & Format( val(e.DataRow("编号"))/RowQty,"0.0%") & " ......保存完毕")
    If ls.count > 22 Then
        ls.RemoveAt(0)      '删除ls的第一个值
    End If
    Dim str As String = String.Join(vbcrlf, ls.ToArray)
    txt.Text = str
    Application.DoEvents()
    Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,向服务器保存数据完毕,准备关闭......"
End If


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


加好友 发短信
等级:二尾狐 帖子:551 积分:5001 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/10/11 13:44:00 [只看该作者]

十分感谢大红袍老师为我细致指导,还写了代码,
请问大红袍老师:
25楼中 提到的变量 ls 和 count ,在运行时,都提示”未定义变量ls"和 “未定义变量count”,怎么办呢?我定义了一下全局变量也未能解决问题。
[此贴子已经被作者于2015/10/11 14:14:45编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/11 15:07:00 [只看该作者]

1、你用的什么版本的foxtable,请更新最新版。

 

2、要不你就这样写

 

vars.add("ls", Gettype(List(of String)))

forms("提示").open
vars.add("count", Gettype(Integer),0)
For Each dr As DataRow In DataTables("个人基本信息").DataRows
    If dr.RowState <> DataRowState.Unchanged Then
        vars("count") += 1
    End If
Next
For Each dr As DataRow In DataTables("个人基本信息").DataRows
    If dr.RowState <> DataRowState.Unchanged Then
        dr.save
    End If
Next


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


加好友 发短信
等级:二尾狐 帖子:551 积分:5001 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/10/11 16:08:00 [只看该作者]

大红袍老师,28楼的代码是没有问题了

我用的旧版本,26楼里的代码
Dim RowQty As Integer = vars("count")
Dim ls = vars("ls")
If Forms("提示").Opened Then '事先必须建立【提示】窗体
Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,开始保存......"
Dim txt As Winform.TextBox = Forms("提示").Controls("TextBox1")
ls.add( "第" & e.DataRow("编号") & "条记录: " & e.DataRow("姓名") & "......." & Format( val(e.DataRow("编号"))/RowQty,"0.0%") & " ......保存完毕")
If ls.count > 22 Then
ls.RemoveAt(0) '删除ls的第一个值
End If
Dim str As String = String.Join(vbcrlf, ls.ToArray)
txt.Text = str
Application.DoEvents()
Forms("提示").Controls("Label1").Text = "共" & RowQty & "条记录,向服务器保存数据完毕,准备关闭......"
End If
也请老师修改一下
(是不是就修改一下 Dim ls = vars("ls") 这一句?) 
(再次感谢一下大红袍老师,在老师看来是一个很小的问题,但您都十分耐心的指导,也是因为我刚刚学习,水平只限于模仿阶段)

[此贴子已经被作者于2015/10/11 16:10:54编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/11 16:16:00 [只看该作者]

26楼代码不用改

 回到顶部
总数 46 上一页 1 2 3 4 5 下一页