关联表的问题,在线等待! (50分)

  • 主题发起人 goodcoder
  • 开始时间
G

goodcoder

Unregistered / Unconfirmed
GUEST, unregistred user!
想在表salary中录入工号workcode和工资sum后,点个按纽,将表中工号workcode
对应的姓名name更新(在表salary和employee中都有工号workcode和姓名name字段)
代码如下,请大侠们给看看
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.text:='UPDATE salary SET salary.name=employee.name
WHERE salary.workcode=employee.workcode' ;
adoquery1.ExecSQL;
提示字段employee.name没有默认值
 
你到底是要显示还是要更新?
 
什么数据库?
 
access!
出错提示参数employee.name没有默认值
 
你试着写成如下格式看看:
UPDATE A SET A.字段名=B.字段名 FROM %s A,%s B WHERE A.字段名=B.字段名
还有个可能是:
你建的两张表中salary表name字段不能为null而employee表的name字段值为null引起.
 
'UPDATE salary SET salary.name=(select name from employeee
WHERE workcode=salary.workcode)'
 
建议先在access内的查询里面新建一个查询,用他来检验你的sql语句是否有问题
一般他的提示更为详细
sql语句通过后,再写到delphi内
 
将UPDATE salary SET salary.name=(select name from employee
WHERE workcode=employee.workcode)放在SQL中执行,提示
操作必须使用一个可更新的查询,
还有ACCESS中不能使用FROM
 
adoquery1.SQL.text:='UPDATE salary SET (name=employee.name)
WHERE (workcode=employee.workcode)';
要加括号的,不加会提示你出错的
 
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.text:='UPDATE salary from employee SET salary.name=employee.name
WHERE salary.workcode=employee.workcode' ;
adoquery1.ExecSQL;
 
错误原因同意forsoft的说法,但是Access中的SQL语法,我还真没去研究.
 
同意goodcoder,他的做法是正确的。

你错误的原因是因为employee没有选择出来,系统不能识别。

我如果早来和Goodcoder的说法是一样的。
 
我也试了,goodcoder说得对,ACCESS中不能使用from,即不支持单次对多表查询
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
729
爱音乐的孩子是小白
I
回复
0
查看
570
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部