2

次のフィールドを使用して create db を修正する方法:

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.CatalogおよびDBTable as ADOX.Table

の追加の質問も参照してください#1。ありがとう!

4

2 に答える 2

2

Access のバージョンが 2000 以降の場合は、このReplace()関数を使用して、日付文字列のドットをダッシュ​​に置き換えることができます。次に、CDate()関数は文字列を日付/時刻値に変換できます。

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

これは、ロケール設定として US を使用するシステムのイミディエイト ウィンドウの例です。したがってCDate()、mm-dd-yyyy 形式の日付を含む文字列を受け入れることができます。ロケールが異なる場合は、必要なものを取得するためにさらに作業を行う必要があります。

于 2012-05-06T20:48:08.760 に答える
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"

それを日付に変換し、その後dbに挿入する方法は? (型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 + " ) "

PS 正常に動作します。コメントと回答に感謝します。

于 2012-05-06T20:43:11.247 に答える