2012-05-06 60 views
2

如何正确创建分贝以下字段:接入+ VBA:正确创建数据库

Dim F As String 
Dim S As Long 
Dim T As Integer 
Dim C As Double //Currency 
Dim D As String //Date 


F = "ABC" 
S = 88869045 
T = 9 
C = 30.4493 // currency, but can be double 
D = "06.08.2010" // date (how to correct convert to date?) //#1 

DBTable.Name = "TestTable" 
DBTable.Columns.Append "First", adVarWChar, 40 
DBTable.Columns.Append 1, adBigInt, 20 
DBTable.Columns.Append 0, adInteger 
DBTable.Columns.Append 0, adCurrency 
DBTable.Columns.Append 0, adDate 

DBCatalog.Tables.Append DBTable 

DBCatalog as ADOX.CatalogDBTable as ADOX.Table

另请参阅#1。 谢谢!

回答

2

如果您的Access版本是2000或更高版本,则可以使用Replace()函数用短划线替换日期字符串中的点。然后CDate()函数将能够将字符串转换为日期/时间值。

Debug.Print CDate(Replace("06.08.2010",".","-")) 
6/8/2010 

这是我系统上使用US作为区域设置的立即窗口的一个例子。因此CDate()可以接受包含mm-dd-yyyy格式日期的字符串。如果您的语言环境不同,则需要投入更多工作才能获得所需内容。

+0

谢谢:)'D = CDate(“20/12/2010”)'为我工作:)和'MsgBox D'显示'20.12.2010' :) – gaussblurinc

1

一切工作正常与此:

//create database 
DBTable.Name = "TestTable" 
DBTable.Columns.Append "First", adVarWChar, 40 
DBTable.Columns.Append "Second", adDouble, 40 
DBTable.Columns.Append "Third", adInteger 
DBTable.Columns.Append "Forth", adCurrency 
DBTable.Columns.Append "Fifth", adDate 

但是关于皈依串的问题至今仍然是开放:

Dim D as String //must be date 
D = "06.10.2010" 

如何将其转换为日期,之后插入到数据库? (类型adDate和日期是兼容的?)

因此,表现出的代码最后一个版本:

// after this: insert data into datatable (not in question, but part of creation db (usage is necessary)) 
Dim F As String 
Dim S As Double 
Dim T As Integer 
Dim C As Double 
Dim D As Date 

Dim SS As String 
Dim TS As String 
Dim CS As String 
Dim DS As String 

F = "'" + "ABC ABD ACS" + "'" //use of single (') quote 
S = 88869045 
T = 9 
C = 30.4493 
D = CDate("20/12/2010") // for any data type! don't forget about it 

SS = "'" + Str(S) + "'" 
TS = "'" + Str(T) + "'" 
CS = "'" + Str(C) + "'" 
DS = "'" + Str(D) + "'" 

DBConnection.Execute "INSERT INTO TestTable VALUES (" + F + "," + SS + "," + TS + "," + CS + "," + DS + ") " 

附:它工作正常,感谢您的意见和答案。

+0

谢谢!把它改为我的问题的完整答案,@HasnUP。也许不是最佳,但工作 – gaussblurinc

+0

没有你的答案我不能做出这个答案。:)谢谢! – gaussblurinc