|
▼mickeypapa さん:
こんばんは。
>
>>Sub DAO_read()
>> 'Microsoft DAO 3.6 Object Library 参照設定
>> Dim myDb As DAO.Database
>> Dim myRst As DAO.Recordset
>> Dim myFileName As String
>> Dim myTblsql As String
> Dim idx As Long'---------------------←追加
' ↑ちゃんと宣言する方がいいですね!!
>
>>Sub DAO_write()
>> myTblsql = "insert INTO 運送DATA select * FROM [Excel 8.0;Database=" & ThisWorkbook.Path & "\sqltest.xls]" & _
>> ".[" & ActiveSheet.Name & "$" & Range("a1", Cells(Rows.Count, 1).End(xlUp)).Resize(, 3).Address(False, flase) & "];"
>
>sqltest.xlsを運送test.xls
>Address(False, flase)をAddress(False, False)にしました。
' あらっ、ではたまたま動いていたんですねえ!!、失礼しました。
>
>そこで質問ですが、一度書込をしたあとに再度呼び出すとデータの並びがおかしくなってしまいます。
>このような状態です。
>
>#2004/10/1#の時 #2004/12/1#の時
>101 2004/10/1 101 2004/10/1
>102 2004/10/1 102 2004/10/1
>118 2004/10/7 103 2004/10/1
>119 2004/10/8 104 2004/10/2
>120 2004/10/9 120 2004/10/9
>121 2004/10/9 121 2004/10/9
>. .
>. .
>. .
>. .
>150 2004/11/30 240 2005/2/25
>103 2004/10/1 105 2004/10/2
>104 2004/10/2 106 2004/10/3
>105 2004/10/3 107 2004/10/3
>. .
>115 2004/10/6 .
>. .
>151 2004/11/30 119 2004/10/8
>. .
>240 2005/2/25
>Accessでデータを見ると順番に並んでいます。
Accでは、デフォルトで並べ替えを行ってくれますからねえ・・・。
読み込むときにA列で並べ替えをしましょう。
シートを並べ替えてもいいんですが、せっかくmdbからの読込みなのでSQLで・・。
DAO_readのSQLの箇所を以下のように変更して下さい。
myTblsql = "SELECT * FROM tbl1 WHERE [月 日] Between #2004/1/1# And date() order by [id];"
尚、上記の id は、シートのA列に対応するフィールド名です。
この id というフィールドは、数値型としてAccのテーブルは設定して確認しました。
>目下、日付の変数の代入に苦しんでおります。
あくまでもSQLは、文字列ですから・・。
dim 検索開始日 as string
検索開始日="2004/1/1"
myTblsql = "SELECT * FROM tbl1 WHERE [月 日] Between #" & _
検索開始日 & "# And date() order by [id];"
で良いと思いますが、別の事で悩んでおられたなら、余計なお世話でした。
|
|