日期:2014-05-16  浏览次数:21114 次

50分求解 jBuilder中用控件操作数据库问题
我用QueryDataSet组件操作Access数据源,这条语句老是有问题。   num是ParameterRow的一个参数名字。  
SELECT   books.book_name,borrow.borrow_date,customer.cust_name   FROM   books,borrow,customer   WHERE   books.book_id=borrow.book_id     and   customer.cust_id   =   borrow.cust_id     and     DateDiff( "d ",borrow.borrow_date,date(   ))> :num

看提示,应该是DateDiff( "d ",borrow.borrow_date,date(   ))的问题,但这条语句在Access中运行没有问题

------解决方案--------------------
多表连接注意事项:


多个表连接时,每增加一个表,增加一对(),如下:


select
from ((A
inner join B on A.id=B.id)
inner join C on A.id=C.id)
inner join D on A.id=D.id


Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。


JET SQL 帮助(jet4 access2000)下载地址

http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
------解决方案--------------------
--参考VBA处理方式,把参数连接到SQL串中:


Dim strSQL As String
Dim intDays As Integer

intDays = 5

strSQL = " SELECT books.book_name,borrow.borrow_date,customer.cust_name " _
& " FROM books, borrow, customer " _
& " WHERE books.book_id = borrow.book_id " _
& " and customer.cust_id = borrow.cust_id " _
& " and DateDiff( 'd ',borrow.borrow_date,date())> " & intDays
------解决方案--------------------
估计是参数问题,到相应的语言版块去问吧。