Access支持这样的SQL语句吗?(100分)

  • 主题发起人 主题发起人 nbpj
  • 开始时间 开始时间
N

nbpj

Unregistered / Unconfirmed
GUEST, unregistred user!
1。用Delphi开发急于Access数据库的应用,但执行下面的SQL语句会提示“操作必须执行一个可执行的查询”的错误,
请问为什么,是因为Access不支持这样的SQL语句吗?

UPDATE Salary a SET Amount=(Select Salary_NR from Employee b where a.Employee_ID=b.Employee_ID)
where (a.Month_TX=:P_month)
and a.Employee_ID in (Select Employee_ID from Employee where Time_YN='Y')

2。Access数据库表的自动编号字段如何清零?
 
Time_YN='Y'
替换成Time_YN=#Y#
试下
 
Access执行的SQL语句标准是:SQLJ,具体请看看相关文档。
你的语句是否应该写成:
UPDATE Salary a SET Amount=(Select Salary_NR from Employee b,Salary c where c.Employee_ID=b.Employee_ID)
where (a.Month_TX=:P_month)
and a.Employee_ID in (Select Employee_ID from Employee where Time_YN='Y')
自动编号除非不要不就行了



 
第一个内嵌的select不支持
 
1、应该可以,可能是你的select语句返回了不止一条记录。
2、用SQL的truncate语句
 
请问你的SQL是用代码设置的呢,还是静态设置(在DELPHI的IDE下设置)的呢?
如果是代码设置则需把
Time_YN='Y'改为Time_YN=#145+'Y'+#146
 
把命令改成
UPDATE Salary as a SET Amount=(Select Salary_NR from Employee as b where
a.Employee_ID=b.Employee_ID)
where (a.Month_TX=:P_month)
and a.Employee_ID in (Select Employee_ID from Employee where Time_YN='Y')
试试看。
 
谢谢以上个位给的的帮助,可是以上建议我都试过,照样提示原来的错误,
可能是Access数据库不支持这样的语句吧。
 
并不是所有的SQL语句在每个驱动程序中都是可以使用的
driver={SQL server} 与 driver={microsoft access database(*.mdb)}这两种连接方法
有很多不同,第二种方法不能使用很复杂的查询语句,而且有一些可以在sql server上使用
的函数也是不可以用的,还有很多的区别,多留意各种书上的介绍吧,再自己多试试。
 
access 可能不支持超过2层的sql
 
老兄:
那是oracle的語法,試試這個:
UPDATE Salary inner join Employee on Salary.Employee_ID=Employee.Employee_ID
set Salary.Amount=Employee.Salary_NR
where (Salary.Month_TX=:P_month) and Salary.Employee_ID in (Select Employee_ID from
Employee where Time_YN='Y')

 
后退
顶部