各位大侠,我用的是delphi5,数据库用的是vfp,我用bde连接数据库,用一个query来update一个字段的值,update语句我在vfp的命令窗口调试过,没有问题,但是在delphi中运行就提示出错:
key violation.
[microsoft][odbc visual foxpro driver]record is not locked.
请各位大侠帮忙解决问题,多谢多谢多谢多谢
key violation.
[microsoft][odbc visual foxpro driver]record is not locked.
请各位大侠帮忙解决问题,多谢多谢多谢多谢
解决方案 »
- CodeGear Delphi 中的编译错误"Undeclared identifier XXX"
- 请教关于QQ界面可以自由变色的问题!!!
- 如何在一个函数中传递一个对象参数?
- 想了解一下,delphi程序员的待遇和就业前景如何?
- 新年了,给大家散点分吧,分帖一
- 如何在SQL-SERVER2000中用命令方式附加数据库?
- 如何控制扫描仪一次扫描多张图片?
- 关于stringgrid的一个小问题
- 可以把文本文件也包含进去吗?
- 小妹?^_^?捉虫: 怎样使dbgrid等控件随窗体的变化而变化大小!
- 关于DLL的问题,超容易一时想不开又没时间去搜请大家帮忙.
- fastreport使用不同纸型的问题!不知各位有没有碰到过??
update cj set fenshu=:fenshu where kh=:kh and kmdm=(select kmdm from biaozhun where kmmc=:mingc);
参数传递:
with datamodule1.cjlrQuery3 do
begin
parambyname('fenshu').value:=strtofloat(form4.edit1.text);
parambyname('kh').value:=datamodule1.cjlrcxQuery3['kh'];
parambyname('mingc').value:=form3.edit4.text;
execsql;
end;
with datamodule1.cjlrQuery3 do
begin
parambyname('fenshu').value:=strtofloat(form4.edit1.text);
parambyname('kh').value:=datamodule1.cjlrcxQuery3['kh']; //datamodule1.cjlrQuery3 是打开的吗?在打开的数据集上怎么能执行sql!
parambyname('mingc').value:=form3.edit4.text;
execsql;
end;
上面的句子中=和:要有空格
1。=和:之间没有空格是可以的,有空格也不出错
2。我的数据库结构大致是这样的:
学生表我用了这样几个字段:学籍号,姓名,年级号,班级号。
成绩表用了这样几个字段:学籍号,考号,科目代码,分数,日期
课程表用了这样几个字段:科目代码,科目名称
所以,字段fenshu应该和其他表的字段没有关联,关键字也应该没有问题,因为在vfp的命令窗口我写了相同的update cj set fenshu=98 where kh='10101' and kmdm=(select kmdm from biaozhun where kmmc='语文');只不过把参数都换成了具体数据,可以执行成功,在delphi中,我在程序代码execsql;处设置断点,用debug看到三个参数的数据也都正确传进来了,但就是在execsql;处出错。
这个问题真的捆饶我太久了,如埂在喉,不吐不快,希望各位大侠帮忙帮忙,不胜感激,问题解决,马上结贴!
update cj set fenshu=:fenshu where kh=:kh and kmdm in (select kmdm from biaozhun where kmmc=:mingc);
可能在=(select kmdm from biaozhun where kmmc=:mingc);
这里出的问题,select kmdm from biaozhun where kmmc=:mingc 该语句查询出来的不唯一,
再检查看看
1。select kmdm from biaozhun where kmmc=:mingc 语句查出来的记录是唯一的,这点我可以肯定
2。update语句我在foxpro中执行了,没有问题
这两点我在前面的回复中已经确定了,不是问题所在,但是问题依旧,我现在简直怀疑是不是delphi5的bug ,,因为我之前发现了delphi5的ado控件的 bug,才转用的bde,但现在这个问题我确实不知道怎么回事,请高手提点啊,多谢多谢了,问题解决一定加分结贴