大家好,新鸟来了,带个问题= =
哈哈,终于找到组织拉,刚进公司不到一个月哦。工作要求用C++builder做事0.0,然后今天遇到个小问题,顺便求教下牛人哦。问题就是:我用的是c++builder 2007和sql server2000,然后用ADOConnection、ADOQuery、DataSource、DBGrid这几个控件连接好数据库,并且用ADOQuery1->Close(); ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlstr); ADOQuery1->Open();显示数据库内容在DBGrid上。之后我就直接用鼠标和键盘去修改DBGrid里面的内容,但是修改结果只是DBGrid上面变化了,数据库的内容没改变(以上组件的属性都是按照默认属性,没修改),请教牛人,如何实现用鼠标,键盘直接修改DBGrid,进而实现数据库内容也变化(数据库是本地的),谢谢!
[解决办法]
一般情况下为按行提交。
DataSet是按记录提交的,对应DBGRID是按行显示记录的。
DBgrid在一行中修改时,不会提交到数据库,当离开该行时,会切换到其他记录,此时会触发提交。
ADO支持批量提交模式:
对于ADO如果设定为 ltBatchOptimistic 批量提交模式,则不会每行提交到数据,必须等到执行批量提交命令时,才一次性将所有的修改提交至数据库。
如果需要每个字段修改后就立即提交至数据库,那么就在所有字段的 OnChange事件中加上 Post语句。