以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]合并时缺少主键列怎么办?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98708)

--  作者:xvkewen
--  发布时间: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编辑过]

--  作者:有点色
--  发布时间:2017/4/5 17:33:00
--  
那你导入的数据,编号列应该赋值什么?代码没问题。
--  作者:xvkewen
--  发布时间:2017/4/5 18:28:00
--  

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


--  作者:有点色
--  发布时间:2017/4/5 21:08:00
--  
以下是引用xvkewen在2017/4/5 18:28:00的发言:

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

 

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