Foxtable(狐表)用户栏目专家坐堂 → [求助]合并时缺少主键列怎么办?


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

主题:[求助]合并时缺少主键列怎么办?

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


加好友 发短信
等级:二尾狐 帖子:593 积分:5538 威望:0 精华:0 注册:2012/6/29 19:11:00
[求助]合并时缺少主键列怎么办?  发帖心情 Post By:2017/4/5 15:36:00 [只看该作者]

如下表关系,虽可以成功导入Excel文件,但是关联列没有数据,无法与主表关联,怎么办?

 

1、从A系统导出的Excel文件,但是此文件没有主键列(编号列),故将文件名用"编号"命名;

2、需要将Excel文件导入到Foxtable的B表中

3、B表在Foxtable中是与主表C以编号关联;

 

4、我增加了以下红色部分代码,用于弥补没有Excel中主键列的问题,但不是知这样做在系统上会不会有影响;

 

Dim dlg As New  OpenFileDialog
dlg.Filter = "Excel文件|*.xls|Excel2007文件|*.xlsx"
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK  Then
 Dim fn As String = FileSys.GetName(dlg.FileName)
 Dim srs() As String = fn.Split(".")
    Dim mg As New Merger
    mg.Format = "excel"
    mg.SourcePath = dlg.FileName
    mg.SourceTableName = "Sheet$"
    mg.DataTableName = "ProcessSchdule"
    mg.FieldMaps.Add("序号","ProcessNo")
    mg.FieldMaps.Add("办房部位","SamplePart")
    mg.FieldMaps.Add("工艺办房分配","ProcessTeam")
    mg.FieldMaps.Add("设备","ProcessMachine")
    mg.FieldMaps.Add("工艺名称","ProcessName")
    mg.Merge()
        For Each dr As DataRow In DataTables("ProcessSchdule").DataRows
        If dr.RowState = DataRowState.Added Then
            dr("SrsNo") = srs(0)
        End If
    Next
    DataTables("ProcessSchdule").Save()  

End If

 

 

[此贴子已经被作者于2017/4/5 16:24:21编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/5 17:33:00 [只看该作者]

那你导入的数据,编号列应该赋值什么?代码没问题。

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


加好友 发短信
等级:二尾狐 帖子:593 积分:5538 威望:0 精华:0 注册:2012/6/29 19:11:00
  发帖心情 Post By:2017/4/5 18:28:00 [只看该作者]

编号列为关联列,需要赋值,否则无法关联;


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/5 21:08:00 [只看该作者]

以下是引用xvkewen在2017/4/5 18:28:00的发言:

编号列为关联列,需要赋值,否则无法关联;

 

那你赋值为什么?逻辑是什么?你可以获取父表的当前行的值填入嘛。

 


 回到顶部