[#43103] 浮動小数点を比較するには — wada toshiki <wada-ts@...>

お世話になります。

21 messages 2007/01/11
[#43105] Re: 浮動小数点を比較するには — NISHIMATSU Takeshi <t_nissie@...> 2007/01/11

> Rubyレシピブック(P290)で 比較する数値の差を Float::EPSILON と比較する方法があり

[ruby-list:43118] Win32OLE のエラーを無視するには?

From: Tomo <iwasaiwasa2000@...>
Date: 2007-01-14 08:23:17 UTC
List: ruby-list #43118
はじめて、メーリングリストに参加させていただきます。
私は未熟者ですがよろしくお願いします。

現在Win32OLEでDAOを操作するスクリプトを作成しています。
OLEのエラーでスクリプトが止まってしまう箇所があります。
今回はこのエラーを無視して、処理を続行させたいのです。
たとえば、VBで言えば、「On Error Resume Next」のように
方法などありましたら、ご教授お願いします。

○ruby 使用バージョン
      ruby 1.8.5 (2006-08-25) [i386-mswin32]

○スクリプト内容
   mdbのテーブル定義(テーブル、フィールドのプロパティ
)を出力する

○スクリプト

require "win32ole"
require "jcode"

ap	= WIN32OLE.new("DAO.DBEngine.36")

db	= ap.OpenDatabase(filename)

# テーブル名
for td in db.TableDefs
	printf "\t%s\n", td.Name
end

# テーブル属性
for td in db.TableDefs
	printf "\n\t[%s]\n", td.Name
	for prop in td.Properties
		printf "\t\t%-20s%d\t\n" , prop.Name , prop.Type
	end
end

# フィールド、インデックス
for td in db.TableDefs
	for f in td.Fields
		printf "\n\t[ %s - %s ]\n", td.Name, f.Name
		for fp in f.Properties
			printf "\t\t%-20s%d\t" , fp.Name , fp.Type
			printf "%s" , fp.Value												←ここでエラーがで
ます
		end
	end
end
db.Close


○エラー内容
     D:/KNL/RubyScript/テーブル一覧作成2.rb:38:in
`method_missing': Value (WIN32OLERuntimeError)
        OLE error code:800A0C93 in DAO.Field
          無効な処理です。
       HRESULT error code:0x80020009
        例外が発生しました。      from D:/KNL/RubyScript/
テーブル一覧作成2.rb:38
          from
D:/KNL/RubyScript/テーブル一覧作成2.rb:36:in `each'
          from D:/KNL/RubyScript/テーブル一覧作成2.rb:36
          from
D:/KNL/RubyScript/テーブル一覧作成2.rb:34:in `each'
          from D:/KNL/RubyScript/テーブル一覧作成2.rb:34
          from
D:/KNL/RubyScript/テーブル一覧作成2.rb:33:in `each'
          from D:/KNL/RubyScript/テーブル一覧作成2.rb:33
          from
D:/KNL/RubyScript/テーブル一覧作成2.rb:13:in `each'
          from D:/KNL/RubyScript/テーブル一覧作成2.rb:13


In This Thread

Prev Next