Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共19 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]列表项目及数据字典的BUG?

1楼
菜鸟foxtable 发表于:2008/11/25 15:33:00
列表项目及数据字典是否存在BUG?如
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.table


我做了个ABC三个表,分别使用列表项目/数据字典自/定义项目来进行快速录入,由于数据量巨大,似乎不是假死就是不能实现.

请问如何实现只输入输入码即可快速录入疾病名称?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2008-11-25 15:36:37编辑过]
2楼
don 发表于:2008/11/25 16:20:00
DataColChanged事件:

if e.Datacol.name = "疾病" Then
     Dim Da  As DataTable = DataTables("疾病")
       Dim dr As DataRow
        Dim T1,T2 As String
          T1=e.DataRow("疾病")
            T2="[输入码] = '" & T1 & "'"
     IF  "abcdefghijklmnopqrstuvwxyz".indexof(T1.Substring(0,1).ToLower())>-1 Then
           dr = Da.Find(T2)
           If dr IsNot Nothing Then
                e.DataRow("疾病") = dr("疾病名称")
            Else
                MessageBox.Show("『输入码』有誤!請檢查.", "提示")
            End If
     End If
End If
3楼
狐狸爸爸 发表于:2008/11/25 16:23:00
自动输入的实现

实现自动输入的基本原理是:

1、有一个基础数据表,输入所有的基础信息,例如订单管理系统中,产品表会输入所有的产品信息。
2、在另一个表输入某关键列的内容,然后自动从基础数据表提取其它列的内容输入到相关列中,例如在订单表输入产品编号,可以从产品表提取该产品的名称、型号、规格,自动输入到订单表的相关列中。

示例一

例如希望在订单表输入产品编号,能够从产品表提取该产品的名称、型号、规格,自动输入到订单表的相关列中。
为实现此目的,可在订单表的
DataColChanged事件中输入如下代码:

If e.DataCol.Name = "产品编号" Then '发生变化的是产品名称吗?
    '在产品表找出该产品
   
Dim dr As DataRow = DataTables("产品").Find("编号 = " & "'" & e.DataRow("产品编号") & "'" )
   
If dr IsNot Nothing '如果找到, 则设置各列内容
        e.
DataRow("品名")= dr("品名")
        e.
DataRow("型号")= dr("型号")
        e.
DataRow("规格")= dr("规格")
   
End If
End
If

示例二

假定项目中有一个名为“行政区域”的基础数据表,分别是省市、市县、区号、邮编,这个表已经输入了全国所有县级行政区域的资料;现在我们在客户表中输入数据,假定客户表也有这么四列,希望输入省市、县市两列的内容后,区号、邮编能够自动输入。

为实现此目的,可在客户表的DataColChanged事件中输入如下代码:

'如果刚刚输入的不是省市或县市列
If
e.DataCol.Name <> "省市" AndAlso e.DataCol.Name <> "县市" Then
    Return
'则返回
End
If
'如果省市或县市列的内容为空

If
e.DataRow.IsNull("省市") OrElse e.DataRow.IsNull("县市") Then
   
'则清除区号和邮编两列的内容
    e.
DataRow("区号") = Nothing
    e.
DataRow("邮编") = Nothing
    Return
'然后返回
End
If
Dim
dr As DataRow
'在行政区域表查找所输入省市?县市的行

dr =
DataTables("行政区域").Find("[省市] = '" & e.DataRow("省市") & "' And [县市] = '" & e.DataRow("县市") & "'")
If
dr IsNot Nothing Then '如果找到
    '将找到行的区号?邮编内容填入到正在输入的行中.

    e.
DataRow("区号") = dr("区号") '
    e.
DataRow("邮编") = dr("邮编")
End
If

代码有点长,但是逻辑很清晰,配合注释,你应该很容易理解。

4楼
菜鸟foxtable 发表于:2008/11/25 16:53:00
图片点击可在新窗口打开查看谢谢FOX老爹指点,但如此一来数据字典不是成鸡肋了?
5楼
狐狸爸爸 发表于:2008/11/25 17:09:00
以下是引用菜鸟foxtable在2008-11-25 16:53:00的发言:
图片点击可在新窗口打开查看谢谢FOX老爹指点,但如此一来数据字典不是成鸡肋了?


各有各的用途。

6楼
blackzhu 发表于:2008/11/25 17:13:00
以下是引用don在2008-11-25 16:20:00的发言:
DataColChanged事件:

if e.Datacol.name = "疾病" Then
     Dim Da  As DataTable = DataTables("疾病")
       Dim dr As DataRow
        Dim T1,T2 As String
          T1=e.DataRow("疾病")
            T2="[输入码] = '" & T1 & "'"
     IF  "abcdefghijklmnopqrstuvwxyz".indexof(T1.Substring(0,1).ToLower())>-1 Then
           dr = Da.Find(T2)
           If dr IsNot Nothing Then
                e.DataRow("疾病") = dr("疾病名称")
            Else
                MessageBox.Show("『输入码』有誤!請檢查.", "提示")
            End If
     End If
End If

  老大的代码总是简单实用,佩服。

7楼
菜鸟foxtable 发表于:2008/11/25 19:28:00
don老大的代码只能完全输入代码才能出现疾病名称,请问能否实现类似数据字典那样输入代码头几个字母就出现疾病名称选择吗?
8楼
don 发表于:2008/11/26 9:44:00
笨办法

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理.rar

9楼
菜鸟foxtable 发表于:2008/11/26 11:11:00
以下是引用don在2008-11-26 9:44:00的发言:
笨办法

 下载信息  [文件大小:248.8 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:管理.rar

图片点击可在新窗口打开查看办法真够笨的........只是把9000多列选择减少到9000/26=300多列选择....图片点击可在新窗口打开查看

还是前面的方法好,只是要完全输入代码才能出现名称,麻烦了点...

难道没有更好的方法?快速录入功能是比较普遍的应用啊........FOX老爹能不能加强一下这方面的功能?

[此贴子已经被作者于2008-11-26 11:14:57编辑过]
10楼
don 发表于:2008/11/26 11:48:00

凡事总有个度吧,你不可能要求十万八万行形成列表能飞快起来!要学会变通!

两者结合吧: Or 输入码首再选择列表 Or 在疾病列输入编码 Or 在疾病列输入疾病名称


if e.Datacol.name = "疾病" Then
     Dim Da  As DataTable = DataTables("疾病")
     Dim dr As DataRow
     Dim T1,T2 As String
     T1=e.DataRow("疾病")
     T2="[输入码] = '" & T1 & "'"

     IF  T1.indexof("→") >-1 Then
           e.DataRow("疾病") = T1.split("→")(1)

      ElseIF Asc(T1) > 64 And Asc(T1) < 91 and  Asc(Right(T1,2)) > 64 And Asc(Right(T1,2)) < 91 Then
           dr = Da.Find(T2)
           if dr IsNot Nothing Then
               e.DataRow("疾病") = dr("疾病名称")
           Else                   
                 MessageBox.Show("『输入码』输入有誤!請檢查.", "提示")
           End If

       ElseIF  Da.Find("[疾病名称] = '" & T1 & "'") is Nothing Then
             MessageBox.Show("『疾病名称』输入有誤!請檢查.", "提示")
          
       End If
End If

[此贴子已经被作者于2008-11-26 13:43:45编辑过]
共19 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .05859 s, 4 queries.