QWER
カタマリの王様!?
オフライン
投稿: 164
SolidWorks2011 SP5 x64
|
|
EnterprisePDM内の半透明ファイルについて
« 投稿日: 2011/10/20 - 10:10:15 » |
|
お世話になっております、QWERです。
EnterprisePDM上で、 “ローカル上には存在するが、Vault上には存在しない”状態のフォルダ/ファイルは 半透明化されて表示されますが、半透明化したファイルをVB.NETの 「System.IO.Directory.GetFiles」 メソッドで取得しようとするとエラーが発生するようです。 「ローカルキャッシュをクリア」や「最新バージョンの取得」を起動しても、半透明ファイルは消えないので困っております。
(1).このエラーを回避したいのですが、良い方法はありますでしょうか?
また、“ローカル上には存在するが、Vault上には存在しない”状態の フォルダ/ファイルを削除するプログラムの作成を検討しているのですが、 これらのIndex(?)がどこに保存されているのか分かりません。 試しに"コントロールパネル"-->"インデックスのオプション"-->"詳細設定"-->"再構築" 上記の手順を行ってみましたが、半透明ファイルは消えませんでした。
(2).Indexを削除する方法 (2).半透明ファイルを判別/削除する方法 等ありましたらご教示願います。
以上(1)と(2)について、よろしくお願い致します。
なお、当方の環境は下記の通りです。 ------------------------------ Windows7 64Bit SolidWorks2010 x64 EnterprisePDM 2011 SP3.1 VisualBasic2008 Express Edition ------------------------------
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:EnterprisePDM内の半透明ファイルについて
« 返信 #1 投稿日: 2011/10/20 - 20:20:38 » |
|
QWERさん、こんにちは。
引用:EnterprisePDM上で、 “ローカル上には存在するが、Vault上には存在しない”状態のフォルダ/ファイルは 半透明化されて表示されますが、半透明化したファイルをVB.NETの 「System.IO.Directory.GetFiles」 メソッドで取得しようとするとエラーが発生するようです。 「ローカルキャッシュをクリア」や「最新バージョンの取得」を起動しても、半透明ファイルは消えないので困っております。 |
試しにテストプログラムを作って確認したところ System.IO.Directory.GetFiles でファイル名を取得する事が出来ました。 (ボルトへログインしていなくても問題なくファイル名を取得できます。) 何か別の部分でエラーになっているかもしれませんね。 (フォルダパスが間違っているとか・・・) ちなみに、コマンドプロンプトでフォルダをDirで表示するとファイルは見えるでしょうか?
引用:(1).このエラーを回避したいのですが、良い方法はありますでしょうか?
また、“ローカル上には存在するが、Vault上には存在しない”状態の フォルダ/ファイルを削除するプログラムの作成を検討しているのですが、 これらのIndex(?)がどこに保存されているのか分かりません。 試しに"コントロールパネル"-->"インデックスのオプション"-->"詳細設定"-->"再構築" 上記の手順を行ってみましたが、半透明ファイルは消えませんでした。 |
ローカルファイルだからというエラーは発生しないと思うので、別の部分での問題として解決しないといけないと思います。 また、ローカルファイルだからと言って、インデックスの様なものは存在しないですね。 (完全なWindowsファイルシステムを利用しています。) 極端に言うと、コマンドプロンプトでDEL [ファイルパス]とすれば削除する事が可能です。 ただし、ローカルファイルか、そうでないかの判断は、EPDMのデータベースにファイルが登録されているかの確認を行わなければわかりません。
逆に言うと、System.IOクラスのメソッドや、コマンドプロンプトのコマンドではローカルファイルを識別する事が不可能です。 (一応、ローカルキャッシュをクリアしてからであれば、見つかったファイルがローカルファイルです。)
と、ここまで書いて質問です。 なぜ、ローカルファイルが気になるほど存在しているのでしょうか?
もしかすると、EPDMアドミンツールのユーザーを右クリックして「設定」ので、 「エクスプローラ」タブにある「ファイルボルトの一部でない読み取り専用ファイルを自動的に削除」がOFFになっていませんか? これがOFFになっていると、ローカルキャッシュを取得しいて、他のPCでそのファイルを消すとローカルファイルになってしまいます。
引用:(2).Indexを削除する方法 (2).半透明ファイルを判別/削除する方法 等ありましたらご教示願います。 |
判別するには、EPDMのAPIでボルト上にファイルが存在するかの確認を行う必要があります。 一応、サンプルのコードを書いておきます。 (参照で「PDMWorks Enterprise 2011 Type Library」を追加する必要があります。) (Form1にButton1とListView1を追加してください。) (APIでローカルファイルを取得するメソッド等があるかもしれませんが、サンプルでは単純にファイル取得で確認しています。) 環境は、 WindowsXP 32Bit SolidWorks2009 EnterprisePDM 2011 SP4.0 VisualBasic2005 Express Edition
Code: Public Class Form1
'ボルト名とフォルダパス【利用する環境に書き換えてください】 Private Const VAULT_NAME As String = "TestVault" Private Const TARGET_FOLDER_PATH As String = "C:TestVaultTest"
'ボルトオブジェクト Private pdmVault As EdmLib.IEdmVault11
' フォーム起動時 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ボルトオブジェクトの構築 pdmVault = New EdmLib.EdmVault5 If pdmVault.IsLoggedIn = False Then Try 'ログイン pdmVault.LoginAuto(VAULT_NAME, Me.Handle) Catch ex As Exception MessageBox.Show("ERROR!") ' End End Try End If End Sub
'ボタンを押したとき Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Folder As New System.IO.DirectoryInfo(TARGET_FOLDER_PATH) Dim Files() As System.IO.FileInfo = Folder.GetFiles
ListView1.Items.Clear() For Each File As System.IO.FileInfo In Files Dim FilePath As String = File.FullName
' ボルトに存在するかの確認 Dim IsInVault As Boolean = True Dim pdmFile As EdmLib.IEdmFile5 pdmFile = pdmVault.GetFileFromPath(FilePath) If pdmFile Is Nothing Then IsInVault = False End If
' 隠しファイルの確認(PDMに関係の無いファイルを消さないため) Dim IsHidden As Boolean = False If CBool(File.Attributes And IO.FileAttributes.Hidden) Then IsHidden = True End If
' ローカルファイルのリストアップ If IsInVault = False And IsHidden = False Then ListView1.Items.Add(File.Name) End If Next End Sub
End Class
|
|
|
|
|
QWER
カタマリの王様!?
オフライン
投稿: 164
SolidWorks2011 SP5 x64
|
|
Re:EnterprisePDM内の半透明ファイルについて
« 返信 #2 投稿日: 2011/10/20 - 23:29:43 » |
|
Makaronさん、詳細な解説とアドバイス有難うございます。 都合により当方の使用環境でのテストが出来るのは月曜日以降となりますが、 取り急ぎこちらの状況等につきまして返信させて頂きます。
まず、<System.IO.Directory.GetFiles でのファイル名取得のエラーについて>ですが、以下の手順で発生しました。 1.私のPCからEPDMにファイルをチェックイン 2.他のPCでチェックインしたファイルのファイル名を変更 3.私のPC上では半透明化して見えるようになる 4.System.IO.Directory.GetFilesでファイル取得 --> エラー発生 5.「ローカルキャッシュをクリア」「最新バージョンの取得」を行うが同じエラーが発生 6.手動で半透明化したファイルを削除して再び同メソッドでファイル取得 --> エラー発生せず
フォルダの有無を確認するメソッドを介しているので、パスの間違いは無いかと思われます。
>ちなみに、コマンドプロンプトでフォルダをDirで表示するとファイルは見えるでしょうか? 上記については、月曜日以降に確認したいと思います。
>なぜ、ローカルファイルが気になるほど存在しているのでしょうか? 上記の質問についてですが、まだEPDMを導入して間もないため、一部のフォルダ構成が管理者権限を有する者の判断で変更される場合があります。 また、ユーザー間でもファイル単位で保存先フォルダを変更する場合があるので、稀ではありますが半透明化ファイルが発生します。 今後、フォルダ構成等を確定していく予定ですが、現状ではEPDMの図面番号検索に頼っている部分があります(汗)
>もしかすると、EPDMアドミンツールのユーザーを右クリックして「設定」ので、 「エクスプローラ」タブにある「ファイルボルトの一部でない読み取り専用ファイルを自動的に削除」がOFFになっていませんか? これがOFFになっていると、ローカルキャッシュを取得しいて、他のPCでそのファイルを消すとローカルファイルになってしまいます。 これは良いことを教えて頂きました! これで解決できるかもしれませんね。さっそく、管理者に確認してみます!
また、サンプルコードの作成有難うございます。 このようなサンプルコードをパパッと書いてしまうなんて… 頭が下がりますm(u_u)m テスト環境を用意し、試用してみます。
取り急ぎになりますが、お礼申し上げます。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:EnterprisePDM内の半透明ファイルについて
« 返信 #3 投稿日: 2011/10/21 - 09:43:17 » |
|
QWERさん、おはようございます。
書いていただいた手順からすると、「ファイルボルトの一部でない読み取り専用ファイルを自動的に削除」で 解決できる現象だと思います。
引用:また、サンプルコードの作成有難うございます。 このようなサンプルコードをパパッと書いてしまうなんて… 頭が下がりますm(u_u)m |
どういたしまして 実は「パパッ」と書いているのではなくて、過去に作成したプログラムからコードをコピッてるので、わりと早くつくれるのです。 最初から作ろうとするとAPIヘルプのにらめっこ&トライアンドエラーで時間がかかってしまいますよ。
|
|
|
|
QWER
カタマリの王様!?
オフライン
投稿: 164
SolidWorks2011 SP5 x64
|
|
Re:EnterprisePDM内の半透明ファイルについて
« 返信 #4 投稿日: 2011/10/24 - 18:44:44 » |
|
Makaronさんへ
お世話になっております、QWERです。 EPDM内の半透明ファイルについて、ご教示頂いた点を確認しましたので報告いたします。
まず、EPDMの設定「ファイルボルトの一部でない読み取り専用ファイルを自動的に削除」 ですが、管理者に確認したところOFFになっておりました。 しかし、「自動的に削除」という点で、若干不安があるようで、 「ONにするのはEPDMの構成が安定したタイミングで行いたい」とのことで、 ONにすることで消えるかどうかの確認までは行えませんでした。 しかし、その他にも有用な設定がいくつか有りましたので、今後、機会を見て検証を行いたいと思います。
また、「コマンドプロンプトでフォルダをDirで表示するとファイルは見えるか?」 上記についてですが、「<フルパス>は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というメッセージが出たため、取得出来ませんでした。
記載頂きましたサンプルコードは正常に使うことが出来、半透明ファイルのみをリストアップ出来ました。
管理者より『「ファイルボルトの一部でない読み取り専用ファイルを自動的に削除」をONに出来るまでの間は、半透明ファイルは手動で削除して欲しい』との事でしたので、ひとまずはそのように対処したいと思います。
色々とご指導頂き有難うございました。 取り急ぎ、報告とお礼まで。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:EnterprisePDM内の半透明ファイルについて
« 返信 #5 投稿日: 2011/10/24 - 19:34:01 » |
|
引用:しかし、「自動的に削除」という点で、若干不安があるようで、 「ONにするのはEPDMの構成が安定したタイミングで行いたい」とのことで、 ONにすることで消えるかどうかの確認までは行えませんでした。 |
そうですね、確かに不安と感じるかもしれませんね。 ただ、PDMの仕組みを考えると、データ自身はサーバーに保存されていて、 今回のオプションは、クライアントのキャッシュ部分に関しての削除となるので、 安心してもいいと思います。
それでも、私からの助言だけで不安要素をなくすことは出来ないと思います。 管理者の方に、代理店のサポートの方へ確認をとってもらうと良いのではないでしょうか?
|
|
|
|
QWER
カタマリの王様!?
オフライン
投稿: 164
SolidWorks2011 SP5 x64
|
|
Re:EnterprisePDM内の半透明ファイルについて
« 返信 #6 投稿日: 2011/10/25 - 15:27:05 » |
|
>>ただ、PDMの仕組みを考えると、データ自身はサーバーに保存されていて、 今回のオプションは、クライアントのキャッシュ部分に関しての削除となるので、安心してもいいと思います。
個人的には透明ファイルのが作成される意義を、 「フォルダやファイルが移動、もしくは削除されましたよ」という目印程度と考えているのですが、 管理者としては、責任も大きいので慎重に考えているようです。
>>管理者の方に、代理店のサポートの方へ確認をとってもらうと良いのではないでしょうか?
ちょうど、今週中に代理店の方が別件で来られるので確認してみたいと思います。アドバイス有難うございます。
|
|
|
|