用adoquery更新数据库时的问题
用adoquery更新数据库时,如果更新一个表,还可以,但如果同时更新两个表,就出现问题.可我明明已经分开更新了.还是没用. 问题点数:20、回复次数:13Top
1 楼goodfood(在天堂和地狱的入口为你疯狂,耶~~)回复于 2001-09-23 17:36:21 得分 0
说得不详细。
如果你确定你的操作是对的,而又没有安装过patch,
那就到Inprise网站上去下载BCB关于ado的补丁吧。
Top
2 楼bcboy(编程蜗牛)回复于 2001-09-23 19:30:50 得分 5
更新一般用的是ExecSQL(),你用的是不是Open()。
Top
3 楼Wingsun(孙春阳)回复于 2001-09-23 19:49:21 得分 0
对,希望你能详细描述你的问题。Top
4 楼mardatou(要做卓而不凡)回复于 2001-09-23 20:19:12 得分 0
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("select one from data1 where one='"+edit1->Text+"'");
Form1->ADOQuery1->Open();
Form1->ADOQuery1->Edit();
Form1->ADOQuery1->FieldValues["one"]=combobox1->Text;
Form1->ADOQuery1->Post();
dele();
myfuction();
oneok();
twook();
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("select firs from data2 where firs='"+edit1->Text+"'");
Form1->ADOQuery1->Open();
int findnumber;
findnumber=Form1->ADOQuery1->RecordCount;
if(findnumber!=0)
{
Form1->ADOQuery1->Edit();
for(int i=1;i<=findnumber;i++)
{
Form1->ADOQuery1->FieldValues["firs"]=combobox1->Text;
Form1->ADOQuery1->Post();
Form1->ADOQuery1->Next();
}
}
以上是代码,丑得很.Top
5 楼mardatou(要做卓而不凡)回复于 2001-09-24 08:05:43 得分 0
两个表里的数据是更新过来了,可运行时,会弹出error,显示"要更新的数据行太多,键列信息不足",可我的表里才仅有五条记录.Top
6 楼wilddragon(东瀛倭族自治州州长)回复于 2001-09-24 09:14:36 得分 5
支持一把Top
7 楼wilddragon(东瀛倭族自治州州长)回复于 2001-09-24 10:04:13 得分 0
值得注意Top
8 楼TR@SOE()回复于 2001-09-24 10:25:27 得分 10
这应该是你的表格中的索引或主键出了问题,ADO无法找到要更新的那个数据的位置在哪里。
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("select one from data1 where one='"+edit1->Text+"'");
Form1->ADOQuery1->Open();
Form1->ADOQuery1->Edit();
Form1->ADOQuery1->FieldValues["one"]=combobox1->Text;
Form1->ADOQuery1->Post();
以你的例子而言,应该使用一个update语句操作,而不是将记录先SELECT出来后再进行修改。SQL应该是这样的:
update data1 set (one=:newvalue) where (one = :oldvalue)
然后用ParamByName将新的/旧的值传进去。
Top
9 楼mardatou(要做卓而不凡)回复于 2001-09-24 11:28:30 得分 0
多谢上面的同志,update是可以用,但我上面的方法到底错在什么地方呢?Top
10 楼LuoGD(抢第一楼)回复于 2001-09-24 12:52:08 得分 0
在你的表上添加对字段One和first的索引。Top
11 楼yeqiufeng(叶秋枫)回复于 2001-09-24 13:48:20 得分 0
听副版主的
没错
UpTop
12 楼wilddragon(东瀛倭族自治州州长)回复于 2001-09-24 15:15:21 得分 0
期待答案Top
13 楼TR@SOE()回复于 2001-09-24 20:33:01 得分 0
To Mardatou:
一、应该用UPDATE的SQL;
二、问题就在于索引不唯一。SQL操作无法定位到唯一的一个记录。
所以,必须用UPDATE来做,同时也要重新建立索引,特别是唯一性索引,一个表格至少要有一个。Top




