关于SQL语法

lxl 2000-08-09 09:32:00
请教如何用QUREY控件的SQL语句对*.dbf文件,作出类于:
if ....
begin
end
els
begin
end
这类条件判断的SQL语句?
我用的就是IF,但DELPHI报IF为无效的KEYWORD???
而用SQL SERVER中就可以???
...全文
254 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxl 2000-08-11
  • 打赏
  • 举报
回复
jackii:我想要实现的SQL查询比举的例子更为复杂:

if a>1
update table
else
insert into table
etc

        select t=je from tablea
select t1=je from talbeb
select t as a, t1 as b
其中的A和B为QUERY的个字段
如何能实现呢?
JackII 2000-08-10
  • 打赏
  • 举报
回复
只是dbf文件不支持.
在Delphi里加吧
query1.sql.text='select * from %s';
if a>1 then
format(sql,['tablea']
else
format(sql,['tableb'];
query1.open;

JackII 2000-08-10
  • 打赏
  • 举报
回复
为什么不用存储过程?
yijun2000 2000-08-10
  • 打赏
  • 举报
回复
if a>1 then s:='TableA'
else s:='TableB'

sql:='select * from :para'
tquery.parabyname('para').asstring:=s
tquery.open

大概是这个意思吧.具体语法可能有些问题.可以直接和我电子邮件联系.
lxl 2000-08-10
  • 打赏
  • 举报
回复
请教yijun2000:
能否说得具体点是用DELPHI中的语句来实现吗?
如果我的程序中的QUERY是:
if @a>1
begin
select * from TableA
end
els
begin
select * from tableB
end
这样若不用SUNNYWINTER的动态修改SQL的办法,如何实现?
lxl 2000-08-10
  • 打赏
  • 举报
回复
但是:
如果数据库是在SQL SERVER上的我用这样带IF的语句在QUERY控件中就可操作自如。
我只是不太明白为什么不可以用在本地的*。DBF数据库上,我现在有个很奇怪的情况:
要把SQL SERVER做服务端的程序改为本地数据库,所以不想对原来的一些QUERY和程序
进行太大修改
yijun2000 2000-08-10
  • 打赏
  • 举报
回复
利用query的参数功能,可以满足你变化的条件.
当然参数的值是什么,通过你自己的if语句来实现.
chenlh 2000-08-10
  • 打赏
  • 举报
回复
文件名做参数好象不行
sunnywinter 2000-08-09
  • 打赏
  • 举报
回复
在delphi 的Qurey控件中,只能使用Sql语句,不能使用结构语句,你需要对*.dbf进行操作,可在程序中使用IF,而不是在Qurey中具体使用看程序而定。以下给你一个例子:
...
query1.close;
query1.sql.clear;
query1.sql.add('select * from ''a.dbf'' where');
if edit1.text<>'' then
query1.sql.add('name='''+edit1.text+'''') {如果edit1不为空,则name字段等于其内容}
else if edit2.text<>'' then
query1.sql.add('no='''+edit2.text+'''');{如果edit1为空,而edit2不为空,则no字段等于edit2的内容}
query1.open;
...

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧