怎么通过Query修改数据库的值?
Query->FieldByName("ID1")->AsString = "0";
报告
Project ColorControl.exe raised exception class EDatabaseError with message 'Query: Dataset not in edit or insert mode'. Process stopped. Use Step or Run to continue.
如果加上了Query->Edit();
就会报告
Project ColorControl.exe raised exception class EDatabaseError with message 'Query: Cannot modify a read-only dataset'. Process stopped. Use Step or Run to continue.
何解?
---------------------------------------------------------------
你有没有修改的权限啊?
Cannot modify a read-only dataset
Query->Edit();
Query->FieldByName("ID1")->AsString = "0";
Query->Post();
就应该没事的
---------------------------------------------------------------
用SQL语句好了
update
---------------------------------------------------------------
mQuery->Edit();
TBlobField * pField=(TBlobField *)mQuery->FieldByName(mFieldName);
TBlobStream *pmem=new TBlobStream(pField,bmWrite);
pmem->Seek(0,soFromBeginning);
mPms->SaveToStream(pmem);
delete pmem;
mQuery->Post();
---------------------------------------------------------------
Query->RequestLive=true;
---------------------------------------------------------------
Query1->RequestLive = true;
Query1->Open();
Query1->Edit();
Query1->FieldByName("字段")->AsString = "dfasdflsdjf";
Query1->Post();
Query1->Close();
---------------------------------------------------------------
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("Update "+库名+"set ID1=0 where "+你的条件);
Query->Active=true;
---------------------------------------------------------------
可能原因:
1、你没有修改权限
2、数据库重读;可以通过sp_dboption查看信息
---------------------------------------------------------------
采用Query和TTABLE不一样,使用TTable时对查询的数据可以用Edit(); 方法来修改,而Query查询出的数据集只读,因此不能修改,要修改就需要重写UPDATE语句。
如:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->("update yourtab set ID1='0' where 你的条件");
Query1->ExecSQL();
---------------------------------------------------------------
最好使用SQL语句更新记录,上面已经有人说了。如果楼主非要用你说的方法修改的话,
在执行Query->Active = true;之前,设定Query->RequestLive=true;就可以了。但是
需要注意的是,不是所有的数据库都支持RequestLive这个属性的。
Query->RequestLive = true;
try {
Query->Active = true;
//......
Query->Edit();
Query->FieldByName("ID1")->AsString = "0";
Query->Post();
}
catch(EDatabaseError& e) {
ShowMEssage(e.Message);
}
怎么通过Query修改数据库的值?
最新推荐文章于 2021-01-18 19:32:38 发布