如何阻止Access在导入时自动对数据进行排序?

时间:2015-05-13 15:00:45

标签: excel sorting ms-access import ms-access-2010

我正在将Excel电子表格导入Access 2010.我创建了一个“保存导入”,它将故意导入数据列。我创建的查询需要获取此数据的确切顺序,从我们公司的数据库中的主表返回与之关联的值,然后允许我将这两个字段导出到Excel。我需要这样做,因为我需要将导出复制并粘贴到另一个电子表格的值之上。

问题是当我导入Access时,FG列按A-Z排序。这可以在表导入和查询结果中看到。如何在整个过程中将数据保持在混合顺序中?

准备好的导入表

FG
D
B
E
A
C

导入后

FG
A
B
C
D
E

查询

FG         Description
A          descript of A
B          descript of B
C          descript of C
D          descript of D
E          descript of E

3 个答案:

答案 0 :(得分:1)

要解决此问题,我必须在导入时使用“让我为我创建主键”选项。这样就可以使用与导入电子表格中相同的顺序填充表格。为了确保查询也保持相同的顺序,我必须在结果中包含新的“ID”字段。

最终SQL代码

SELECT FGImport.ID, FGImport.FG, dbo_Active_Part_Number_List_Syteline.description
FROM dbo_Active_Part_Number_List_Syteline RIGHT JOIN FGImport ON dbo_Active_Part_Number_List_Syteline.item = FGImport.FG
GROUP BY FGImport.ID, FGImport.FG, dbo_Active_Part_Number_List_Syteline.description;

答案 1 :(得分:1)

这可能是一篇旧帖子,但我建议打开Excel并创建一个简单的宏来枚举记录,然后再导入Access;一旦你导入了文件,这个enumartion(我们称之为“MacroField”)将成为你导入的数据集的一部分(我们将这个表称为“Table1”)。您仍将通过查询记录并按Table1.MacroField asc / desc排序来保留记录的原始格式。必须有更好的方法来做到这一点,但如果你处在紧要关头,这就可以了。

Sub liminal()

对于i = 1到ThisWorkbook.Sheets.Count

If Sheets(i).Name <> "PrimaryTab" Then
    ct = 0
    Sheets(i).Activate
    Range("B1000000").Select
    Selection.End(xlUp).Select
    en = ActiveCell.Row

        For p = 1 To en
            ct = ct + 1
            Sheets(i).Range("A" & p).Value = ct
        Next p

End If

接下来我 表( “PrimaryTab”),范围( “A1”)。选择 MsgBox“数据集,请打开并加载到MS ACCDB” 结束子

答案 2 :(得分:0)

如果您要导入Excel表(假设有三列),并且希望Access表的第一行(要将数据导入到其中)具有“列标题”,则可以创建和访问表“ myTable ”,其中包含以下字段:

F1 (Data Type: whatever)
F2 (Data Type: whatever)
F3 (Data Type: whatever)
Order (Data Type: AutoNumber)

在Access VBA中,您将使用以下命令:

ImportFile = "C:\myExcelFile"

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "myTable", ImporteFile, False

导入Excel文件时,数据将按第一列的字母顺序排序;但是“订单”字段具有与Excel文件相同的数据顺序。您可以在表格上使用查询以按“订单”字段对数据进行排序,从而获得与Excel表格相同的数据排列。