我正在将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
答案 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表格相同的数据排列。