- PR -

DAOでPostgreからデータをSELECT

1
投稿者投稿内容
935
会議室デビュー日: 2005/01/14
投稿数: 13
投稿日時: 2005-08-19 16:56
VBでODBC、DAO、PostgreからデータをSELECTしたいのですが、「式に未定義関数'to_date'があります」とエラーがでてしまいます。
SQLは以下です。
select
aaa.aid, aaa.name, bbb.bid,
ccc.cid, aaa.st_date, ddd.did
from aaa, bbb, ccc, ddd
where (ccc.cid between 'AAAAA' and 'AAAAA')
and aaa.aid = bbb.bid
and ccc.cid = aaa.aid
and ccc.cid = bbb.bid
and ddd.did = aaa.aid
and ddd.did = bbb.bid
and ccc.cid = ddd.did
and (to_date('20060819', 'YYYYMMDD') between ccc.st_date and ccc.ed_date )
環境は、
・Windows95
・VB5.0
・DAO 3.50.3602.0

教えてください。よろしくお願いします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-19 17:14
引用:

and (to_date('20060819', 'YYYYMMDD') between ccc.st_date and ccc.ed_date )


st_date と ed_date って DATE 型ですか?

 to_date('2006-08-19', 'YYYY-MM-DD') between ccc.st_date and ccc.ed_date

としてもダメですか?

エラー内容から見ると、はずしてそうですが。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
935
会議室デビュー日: 2005/01/14
投稿数: 13
投稿日時: 2005-08-19 17:36
st_date, ed_dateは、timestamp型です。
to_date('2005-08-19', 'YYYY-MM-DD')で実行しても同じ結果でした。
ためしにADOと実行したら、成功しました。
DAOとADOでSQLの解析が違うことありますか?
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-08-19 22:39
たぶんDAOはJETデータベースエンジンを介してしまっているんじゃないでしょうかね。
そもそもDAOはあまりにも古いインターフェースなのでADOを利用することをお勧めします。
マティ
会議室デビュー日: 2005/08/20
投稿数: 1
投稿日時: 2005-08-20 20:28

DAOで日付型を使用する場合は、
to_date('2005-08-19', 'YYYY-MM-DD')
ではなく
#08-19-2005#
の形で指定する必要があったような気がします。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-08-20 20:40
DAOをどうしても使いたいのであれば。
クエリーの実行時にdbSQLPassThroughを指定してみたらいかがですか?

リンクはストアドプロシージャについてですが、多少は参考になるのでは?

■このように書いてあります。
Jet エンジン( Visual Basic から Access データベースへの接続を可能にするデータベース エンジン)経由で SQL サーバーへ SQL 文を渡すには、dbSQLPassThrough オプションを使用します。このオプションを使うと、Jet に組み込まれている解析機能をオフにし、SQL 文字列の解析を行わないようにします。

http://support.microsoft.com/default.aspx?scid=kb;ja;154758
1

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