问题一:
在SQL分析器中语句如下
Select * From  LendInf  B 
Inner Join BookTable C On B.BookCode=C.BookCode 
Inner Join ReaderTable A On A.ReaderCode=B.ReaderCode但是在Delphi中,却只能写成下面的形式
Select *
From ( LendInf  B 
Inner Join BookTable C On B.BookCode=C.BookCode )
Inner Join ReaderTable A On A.ReaderCode=B.ReaderCode
实在是不方便,假如有多个Join的表,那括号的结构就够让人心烦了
有什么办法能解决?
问题二:
将查询Query构件,比如ADOQuery与DBGrid结合,假如ADOQuery的SQL语句是Select形式,用Open命令,DBGrid可以返回结果;而用ExecSQL命令就不能返回结果。
假如我在ADOQuery使用其他不返回结果的命令,比如Delete ,Update 等,却只能使用ExecSQL命令;也就是说,我必须在执行之前要判断是用Open 还是ExecSQL命令。
有没有办法避免?一定要判断吗?

解决方案 »

  1.   

    1
    SQL只和数据库服务器有关,例如Oracle/MS SQL的语法不一样。
    delphi 中SQL只是文本,可以写成任何形式。如果太长的语句无法定义,可以动态从文本文件
    中加载。
    2
    当然要你自己判断!你的SQL是delete或Select什么时候该执行你自己都不知道,那Delphi为什么要知道呢?
      

  2.   

    对应,只要判断好了是select还是delete,对应的用open或者是exesql就可以
      

  3.   

    当然要自己判断啦,做完 update、insert 之后再进行一次查询结果不就出来了?
      

  4.   

    http://expert.csdn.net/Expert/topic/2921/2921602.xml?temp=.5679438