Foxtable(狐表)用户栏目专家坐堂 → 二表间光标对应?


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

主题:二表间光标对应?

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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/5 7:39:00 [只看该作者]

对不起,我没表达清楚,在我的软件中测试时发现点问题,具体是:
1、打开窗口时,发现鼠标已点在目录树的“显示所有行”上,造成“报销名单”全部加载,这个问题我反复检查对照,发现上传给您的示例不会有这个现象,
而只在我的软件中出现,不知何故?
图片点击可在新窗口打开查看此主题相关图片如下:之前.png
图片点击可在新窗口打开查看
2、示例中,按钮增加行,对已增加的行,在关联列相同的情况下,再点击按钮子表也不再增加行。若需要每点一次,则增加一行,代码如何写?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 9:20:00 [只看该作者]

1、你是想全部加载,还是不想全部加载?具体自己请看例子代码

 

2、代码

 

Dim cmd As new SQLCommand
'cmd.C '如果是外部数据源,就加上外部数据源的名字
cmd.CommandText = "select * from {报销名单}"
Dim dt1 As DataTable = cmd.ExecuteReader
cmd.CommandText = "select * from {基本资料}"
Dim dt2 As DataTable = cmd.ExecuteReader
For Each dr As Row In Tables(e.Form.Name & "_Tbl_Main").Rows
    'If DataTables("病案首页").Find("身份证号 = '" & dr("身份证号") & "' and 入院时间 = #" & dr("入院时间") & "#") Is Nothing Then
        Dim ndr As DataRow = DataTables("病案首页").AddNew
        ndr("身份证号") = dr("身份证号")
        ndr("入院时间") = dr("入院时间")
    'End If
Next
For Each dr As DataRow In DataTables("病案首页").DataRows
    Dim fdr1 As DataRow = dt1.Find("身份证号 = '" & dr("身份证号") & "' and 入院时间 = #" & dr("入院时间") & "# and 入院时间 Is not null")
    Dim fdr2 = dt2.Find("身份证号 = '" & dr("身份证号") & "'")
    If fdr1 IsNot Nothing Then
        dr("姓名") = fdr1("姓名")
    End If
    If fdr2 IsNot Nothing Then
        dr("性别") = fdr2("性别")
    End If
Next


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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/5 13:29:00 [只看该作者]

1、不想全部加载,最好打开窗口后,一点都不要加载,窗口中的"报销名单"是空的。然后依据目录树里的要求再加载,这个是不是窗口AfterLoad的代码要改下?达到打开窗口后初始不加载。
If DataTables.Contains("报销名单") = False
    DataTables.Load("报销名单")
    Tables(e.Form.Name & "_Tbl_Main").DataSource = DataTables("报销名单")
    Tables(e.Form.Name & "_Tbl_Main1").DataSource = DataTables("病案首页")
End If
With Tables(e.Form.Name & "_Tbl_Main")
    .EnterKeyActionDown = True
    .AutoSizeCols
    Dim Cmb_FilterCol As WinForm.CheckedComboBox = e.Form.Controls("Cmb_FilterCol")
    For Each C As Col In .Cols
        Cmb_FilterCol.Items.Add(C.Name)
    Next
    Cmb_FilterCol.Value = "标识,姓名"
End With
2、我希望增加行按钮,对同一"报销名单"的行,每按一下,子表增加一行, 按几下,增几行。
 Dim ndr As DataRow = DataTables("病案首页").AddNew
        ndr("身份证号") = dr("身份证号")
        ndr("入院时间") = dr("入院时间")
    'End If

For i As Integer = 0 To nmc.Length - 1

       ndr(fdr1(i)) = ndr(fdr2(i))

   Next

Next
[此贴子已经被作者于2014-8-5 13:32:12编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 14:05:00 [只看该作者]

1、 回复53楼,你不加载的话,你就在打开项目的时候,设置不加载表,也不加载任何数据。

 

2、请看52楼

 


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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/5 15:12:00 [只看该作者]

1、回复54楼,我在BeforeLoadOuterTable已设置
If e.DataTableName = "报销名单" Then
    e.SelectString = "Select * From {报销名单} Where [身份证号] Is Null"
End If

If e.DataTableName = "基本资料" Then
    e.SelectString = "Select * From {报销名单} Where [身份证号] Is Null"
End If

If e.DataTableName = "病案首页" Then
    e.SelectString = "Select * From {报销名单} Where [身份证号] Is Null"
End If
项目打开后,还要打开窗口“住院部病历”,如51楼,我认为,是打开窗口后执行的事件AfterLoad,这个代码有点问题,它总是将打开窗口时,发现鼠标已点在目录树的“显示所有行”上
造成“报销名单”全部加载,您帮我看看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 15:24:00 [只看该作者]

 回复55楼,如果是外部表,句设置BeforeLoadOuterTable事件

 

If e.DataTableName = "报销名单" Then
    e.SelectString = "Select * From {报销名单} Where [身份证号] Is Null"
End If

If e.DataTableName = "基本资料" Then
    e.SelectString = "Select * From {基本资料} Where [身份证号] Is Null"
End If

If e.DataTableName = "病案首页" Then
    e.SelectString = "Select * From {病案首页} Where [身份证号] Is Null"
End If

 

 如果是内部表就是设置BeforeLoadInnererTable事件

 

 

If e.DataTableName = "报销名单" Then
    e.Filter = "1=2"
End If

If e.DataTableName = "基本资料" Then
    e.Filter = "1=2"
End If

If e.DataTableName = "病案首页" Then
    e.Filter = "1=2"
End If

 


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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/5 15:49:00 [只看该作者]

我已设置外部表如56楼,打开项目初始不加载,只是窗口一打开,就触动AfterLoad,这个事件自动的打开窗口时,将鼠标已点在目录树的“显示所有行”上,造成51楼情况,也就是“报销名单”全加载,而这是和窗口打开同时发生的,不是我要的,所以AfterLoad事件代码,您再帮我看看,示例窗口3
 下载信息  [文件大小:220.0 KB  下载次数:5]
图片点击可在新窗口打开查看点击浏览该文件:qqge.rar


[此贴子已经被作者于2014-8-5 15:49:39编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 15:52:00 [只看该作者]

 测试没有问题啊,代码肯定是没有问题的,如果你要改,你就这样改。

 

If DataTables.Contains("报销名单") = False
    DataTables.Load("报销名单")
    DataTables("报销名单").LoadFilter = "1=2"
    DataTables("报销名单").Load
    Tables(e.Form.Name & "_Tbl_Main").DataSource = DataTables("报销名单")
    Tables(e.Form.Name & "_Tbl_Main1").DataSource = DataTables("病案首页")
End If
 
如果觉得不好,你就把你的外部数据库发上来,不然别人不知道你都做了写什么。

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


加好友 发短信
等级:版主 帖子:1693 积分:12123 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/8/5 17:00:00 [只看该作者]

你改一下Tab键顺序试试

 

把目录树tab序号改大


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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/5 23:20:00 [只看该作者]

把目录树tab序号改大有效,很好!谢谢!

 回到顶部
总数 60 上一页 1 2 3 4 5 6