2

Access データベースにアクセスするために win32ole モジュール/ライブラリを使用しています。しかし、データベース内のどのテーブルにも、Rails のように created_at または updated_at 列が見つかりません。では、更新された行をどのように見つけるのでしょうか?

ので、私は持っています

require 'win32ole'
connection = WIN32OLE.new('ADODB.Conneciton')
conneciton.Open('Provider = Microsoft.ACE.OlEDB.12.0; Data Source = c:\data.accdb')

recordset = WIN32OLE.new('ADODB.Recordset')
recordset.Open(some_sql, connection)

fields = []
recordset.Fields.each do |field|
 fields << field.name
end

data = recordset.GetRows.transpose

so data = [
['john', 'doe', 'author'],
['mick', 'jagger', 'singer'],
['woody', 'allen', 'direct'],
['pablo', 'picasso', 'painter'],
['homer', 'simpson', 'loser']
]

fields= ['first', 'last', 'occupation']

しかし、誰かが Homer のジョブを「Winner」に変更した場合、これを調べるにはどのような SQL クエリを使用すればよいでしょうか。おそらく、これを理解するために最後にチェックされたタイムスタンプがあります。それが提供されているとしましょう。

4

1 に答える 1

0

Rails (実際には ActiveRecord) モデルの created_at 列と updated_at 列は、デフォルトで、 から生成された移行スクリプトに自動的に追加されますscript/generate model。さらに、それらの存在を解読すると、ActiveRecord によって自動的に維持されます。それでも、AR をバイパスしてデータベースに直接アクセスすると、列はおそらく維持されません。

申し訳ありませんが、Access が自動的にそのようなことを行うわけではありません。機能をある程度複製することは可能であると確信していますが、それはおそらく簡単なことではありません。通常、トリガー (Access には実装されていません) を使用して変更を処理するか、テーブルを更新するコード (ActiveRecord が行うこと) で変更を処理する必要があります。

于 2010-02-08T23:38:36.167 に答える