Foxtable(狐表)用户栏目专家坐堂 → 两个表部分字段同步的问题


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

主题:两个表部分字段同步的问题

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


加好友 发短信
等级:童狐 帖子:296 积分:2789 威望:0 精华:0 注册:2018/5/21 16:49:00
两个表部分字段同步的问题  发帖心情 Post By:2020/1/2 12:53:00 [显示全部帖子]

表一往来单位有五个字段,单位名称,单位编号,C1,D1,E1

表二GLOBJ有六个字段,FOBJNAME,FOBJID,G2,H2,I2,j2

 

 

 

表一,表二,都有可能录入新数据,但是数据录入多数时候都是在表一中录入。表一录入在FT中完成,表二的录入在KIS财务软件中完成。

表一和表二数据不一致时,以表二数据为准。

表二的表事件不准使用。只能用表一的表事件。

应该怎么办?

 

初步思路:

1.表一中先录入单位名称,然后自动生成单位编号。生成编号前先在GLOBJ中查找,找到就取过来。找不到就自动生成编号。录入保存前,BEFORESAVEDATAROW事件中

 

Dim dre  As  DataRow = e.DataRow
If dre.RowState <> DataRowState.Added  Then  '如果不是新增行
    Return '那么返回
ElseIf dre.IsNull("单位名称") Then  '如果没有输入单位名称
    e.Cancel =  True '取消保存此行
    MessageBox.Show("必须输入往来单位名称!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
Else     '------------------------如果往来单位里的单位名称有值
   
   
    'If e.DataRow.IsNull("单位编号") = True Then      '------------------------且单位编号为空,则自动生成FObjID---开始----------------------------
    Dim dr2 As DataRow
    dr2 =  DataTables("GLObj").sqlFind("[FObjName] = '" & e.DataRow("单位名称") &  "'")
    If dr2 IsNot Nothing Then   '如果在金碟KIS数据库的GLOBJ表里找到FOBJNAEM
        e.DataRow("单位编号") =  dr2("FObjID") '那就把GLOBJ里的FOBJid复制到往来单位里.
    Else
       
        Dim lb,pye,pya,pyt,pyz As String
        Dim kh As String = dre("单位名称")
        'Dim kh As String = al.Replace(" ","")
       
        '------------------------单位编号自动生成单位编号---开始----------------------------
        '如果找不到,就用下面的代码自动生成
        Dim fb As String = StrToNarrow(kh) '把kh转换成半角
        'If kh.Contains("省") = True Then
        ' kh = kh.Replace("省"," ")
        ' End If
        'MessageBox.show(fb)
       
       
        If fb.Contains("(") = True And fb.Contains(")") = True  Then '处理(,)等中文格式或者英文格式的字符
            pyt = fb.SubString(0,fb.IndexOf("(")) + fb.SubString(fb.IndexOf("(")+1, fb.IndexOf(")") - fb.IndexOf("(")-1) + fb.SubString(fb.IndexOf(")")+1,fb.length - fb.IndexOf(")")-1)
           
        Else
            pyt= fb.trim()
           
        End If
        'MessageBox.show(pyt)
        'MessageBox.Show(pye.IndexOf("("))
        ' If PY.IsHanzi(pyt) Then
        pya = PY.GetPY(pyt, True, 3)
        'Else
        'pya = pya
        ' End If
        Dim Len As Integer
        Len = pya.length
        ' MessageBox.show(pya)
        If Len < 5 Then
            LB =  pya.Substring(0,Len)
        Else
            LB =  pya.Substring(0,5)
        End If
       
        '  MessageBox.show(lb)
        Dim dr As DataRow
        dr =  DataTables("往来单位").sqlFind("[单位编号] = '" & lb &  "'")
        If dr Is Nothing Then               '如果单位编号在往来单位表里不存在
            dre("单位编号") = lb.ToUpper()
            '    MessageBox.show(2)
        Else
            Dim max,txt As String
            Dim idx As Integer
            max = e.DataTable.SQLCompute("Max(单位编号)","[单位编号]  like '% " & lb & " %' And [_Identify] <> " & dre("_Identify")) '取得该类别的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(5,2)) + 1 '获得最大编号的后2位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            dre("单位编号") = lb.ToUpper() & Format(idx,"00")
        End If
    End If
    '------------------------------------------自动生成单位编号---结束---------------------
 
 

End  If

 

 

2.每次保存后同步到金碟中,应该在哪儿写代码?是DATAROWADDED吗?

 

 

 

 

 

[此贴子已经被作者于2020/1/2 12:57:19编辑过]

 回到顶部