- PR -

98で配布ファイルが実行できない

投稿者投稿内容
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-09-07 15:20
98が無いので当方で確認が出来なくて申し訳ないのですが

98のAccess上で
コード:

Select 名前,場所,内容 from TSchedule where 日付 = "2005年9月7日";


などとして動作するでしょうか?
動作しないのであればJetのバージョンの差異によって起こる不具合ですので

コード:

oCommand.Parameters.Add(New OleDbParameter("@CalDate", OleDbType.Date, ?)
oCommand.Parameters("@CalDate").Value = Me.dtpDate.Text


な部分を

コード:

oCommand.Parameters.Add(New OleDbParameter("@CalDate", OleDbType.VarChar, ?)
oCommand.Parameters("@CalDate").Value=Date.Parse(Me.dtpDate.Text).toString("yyyy/MM/dd")


のような感じにしてDate型じゃなくてVarCharで渡してみたらどうですか?
※文法的に正しいかどうかは不明ですが....

あとはロケール情報を書き換えて yyyy/MM/dd型に変換が行われるようにするとかじゃないでしょうか?

[ メッセージ編集済み 編集者: jk 編集日時 2005-09-07 15:23 ]
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2005-09-07 17:23
テーブルの日付は日付/時刻型です。
なので、パラメーターをVarCharに変えてしまうと、XPでもエラーになります。

SQLを@CalDateを#9/6/2005#と替えたところ、XPでは動いたのに、やはり、98では同様のエラーで駄目でした。ってことは@CalDateの型は問題ないのでしょうか???

98のアクセス上で、select * from TSchedule where 日付 = #9/6/2005#;だと何もかえってこなかったのですが、
select * from TSchedule where 日付 = #2005/09/06#;だとちゃんと値がかえってきました。

だからと言って、分かったわけではないんですけど。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-09-07 19:16
98の方はJetのパッチとかW2Kパッチとかはあたっているのでしょうか?
Jetのとあるバージョンで日付型が認識できないとの書き込みを見かけたのですが、
検索キーワード等を失念してしまい、当該ページがどこかわからなくなりました。

内容的にはJetのパッチとW2Kのパッチをあてたら日付が認識できない不具合が解消される。との内容でした。

※ただし、パッチをあてると他に影響がでてしまう場合があるのでご注意。


あとは、プレースホルダを使用しないように変更するとかじゃないですかね?

strSelectSchedule =
"Select 名前,場所,内容 from TSchedule where 日付 = #" & strDate & "# and 公開 = 'all'" & _
"union select 名前,場所,内容 from TSchedule where 日付 = #" & strDate & "# and 名前 = @Name"
oCommand.CommandText = strSelectSchedule


[ メッセージ編集済み 編集者: jk 編集日時 2005-09-07 19:55 ]
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2005-09-07 22:14
JetのパッチとW2Kパッチですか。Webで探してみることにします。

あと、私事で非常に申し訳ないのですが、
明日、明後日と出張でして、98の環境でテストできるのが次週になってしまいます。
私もそれまでに調べておきますので、
jkさんにまたご相談させていただいてよいでしょうか?

スキルアップ/キャリアアップ(JOB@IT)