简体   繁体   English

MS Access VBA通​​过使用SQL和Schema.ini将csv导入新表-强制表的列名

[英]MS Access VBA import csv into new table by using SQL and Schema.ini - Force column names of table

In a folder C:\\Excel , I have these files: 在文件夹C:\\Excel ,我具有以下文件:

  • test.csv test.csv
  • Schema.ini 模式

Schema.ini contains: Schema.ini包含:

[test.csv] 
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=2
CharacterSet=ANSI
DecimalSymbol=, 

Col1=Lot Char
Col2=dateResa1 Date
Col3=PRIXLOG_IMMO Double
Col4=MONTANT_CA_ESTIME Double

And in MS Access, I have an export routine which loads csv file data into a created table : TEST 在MS Access中,我有一个导出例程,可将csv文件数据加载到创建的表中:TEST

Private Sub importCSV_Click()

Dim strSQL As String

On Error Resume Next: DoCmd.DeleteObject acTable, "TEST": On Error GoTo 0

strSQL = " SELECT CStr(t.lot), CDate(t.dateResa1), CDbl(t.PRIXLOG_IMMO), CDbl(t.MONTANT_CA_ESTIME) " & _
" INTO TEST  " & _
" FROM [Text;FMT=Delimited;HDR=YES;CharacterSet=ANSI;DATABASE=C:\Excel].[test.csv] t"
CurrentDb.Execute strSQL

End Sub

It works great but the column names of the table MS-Access TEST are named: 它很好用,但是表MS-Access TEST的列名被命名为:

  • Expr1001 Expr1001
  • Expr1002...and so on Expr1002 ...等等

Is there a way to force the name of columns table TEST by using only SQL and Schema.ini ? 有没有一种方法可以仅使用SQL和Schema.ini来强制列表TEST的名称?

Solution: 解:

Because I casted the fields with CStr, CDate..., field names must be redefined with an alias and Icing on the cake, alias can be as same as field name. 因为我使用CStr,CDate ...强制转换了字段,所以必须使用别名和蛋糕上的糖霜重新定义字段名称,别名可以与字段名称相同。 I tested it 我测试了

为了避免在Access SQL中强制转换字段,在Schema.ini中为每个列声明类型就足够了,并允许在Access查询中使用*!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM