急切求助,帮忙看看这个SQL语句(insert into操作)为什么有错?(80分)

L

lnboy

Unregistered / Unconfirmed
GUEST, unregistred user!
明天就要要交课程设计了,但是我还剩个SQL语句没有搞定,请大家帮忙看看.
有两张表:一张是职工信息表(职工编号,姓名,职务,性别。(主码为:人员编号),
(表名:employee,字段名: empno, empname, empduty, empsex)。
另外一张是存放每个职工的工资标准的表.
工资标准表:职工编号,基本工资,岗位津贴,奖励,扣除。(主码为:人员编号),
(表名:wagecriterion,字段名:empno,basepay,subsidy,bonus,deduct)。
对在职工表里存在的职工,但在工资标准表力还没有工资标准的.
现在要在工资标准表里给它生成相应的工资标准.
Var SQLString:String;
begin
SQLString:='insert into wagecriterion'+
' (empno)'+
' values(select empno'+
' from employee'+
' where employee.empno<>wagecriterion.empno)';
ShowMessage(SQLString);
ADOQuery1.Active:=False; //对还没有工资标准的职工生成默认的工资标准
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(SQLString);
ADOQuery1.ExecSQL;
end;
运行的时候提示SQL语句有语法错误,
为什么有错?
正确的语句应该怎样写?

另外还有个问题:
Var dateString:String;
dateString:=copy(DatetoStr(Date),1,7);
在Win2000下datestring="2002-6-";
但是在win98下却成了"02-6-20",
这可怎么写是好啊?
 
1、应该为:
Var SQLString:String;
begin
SQLString:='insert into wagecriterion'+
' (empno)'+
' values(select empno'+
' from employee'+
' where empno not in (select empno from wagecriterion))';
2、用FormatDateTime函数可以解决。
 
1、应该为:
Var SQLString:String;
begin
SQLString:='insert into wagecriterion'+
' (empno)'+
' values(select empno'+
' from employee'+
' where empno not in (select empno from wagecriterion))';
2、用FormatDateTime函数可以解决。

 
SQL语句错误,使用Select语句插入是应该是
SQLString:='insert wagecriterion'+
' select empno'+
' from employee'+
' where employee.empno<>wagecriterion.empno';
 
1、也可:Var SQLString:String;
begin
SQLString:='insert into wagecriterion'+
' (empno)'+
' select empno from employee'+
' where empno not in (select empno from wagecriterion))';

2、
Var dateString:String;
dateString:=DatetoStr(FormatDateTime('YYYY-MM-DD', Date));
 
已经测试过了,
还是报语法错误啊:(
我的数据库是Access97格式的mdb文件.
另用FormatDateTime解决了第二个问题.
(dateString:=copy(FormatDateTime('yyyy-m-d',Date),1,7))
 
跟踪一下 sql.text 看是否有引号之类没写 或括号
 
我用ShowMessage(SQLString)看了:
insert into wagecriterion (empno)
values(select empno from employee where employee.empno not in
(select empno from wagecriterion)).
还是不明白为什么有错:(
 
不要value 还有多余的括号--给分吧

insert into wagecriterion (empno)
select empno from employee where employee.empno not in
(select empno from wagecriterion)
 
insert into wagecriterion (empno) select empno from employee
where employee.empno not in (select
empno from wagecriterion)

FROM 子句语法错误。.
---------------------------
确定
---------------------------
求大家再Help一下.
 
改成下面这样就可以了
SQLString:='insert into wagecriterion'+
' select employee.empno'+
' from employee,wagecriterion'+
' where employee.empno <> wagecriterion.empno';

但是当再次执行的时候,会提示:
---------------------------
工资管理系统
---------------------------
由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功

。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引

以允许重复的值并再试一次。.
---------------------------
确定
---------------------------
 
SQLString:='insert into wagecriterion'+
' (empno)'+
' select empno'+
' from employee'+
' where empno not in (select empno from wagecriterion)';
 
那是有重复的值啊。
 
多人接受答案了。
 
顶部