- - PR -
DAOでPostgreからデータをSELECT
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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 教えてください。よろしくお願いします。 | ||||
|
投稿日時: 2005-08-19 17:14
st_date と ed_date って DATE 型ですか? to_date('2006-08-19', 'YYYY-MM-DD') between ccc.st_date and ccc.ed_date としてもダメですか? エラー内容から見ると、はずしてそうですが。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-08-19 17:36
st_date, ed_dateは、timestamp型です。
to_date('2005-08-19', 'YYYY-MM-DD')で実行しても同じ結果でした。 ためしにADOと実行したら、成功しました。 DAOとADOでSQLの解析が違うことありますか? | ||||
|
投稿日時: 2005-08-19 22:39
たぶんDAOはJETデータベースエンジンを介してしまっているんじゃないでしょうかね。
そもそもDAOはあまりにも古いインターフェースなのでADOを利用することをお勧めします。 | ||||
|
投稿日時: 2005-08-20 20:28
DAOで日付型を使用する場合は、 to_date('2005-08-19', 'YYYY-MM-DD') ではなく #08-19-2005# の形で指定する必要があったような気がします。 | ||||
|
投稿日時: 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