我是用Columns的OnUpdateData事件响应用户的选择。ADOQuery,sql2000,DBGridEh。但调试时发现,在OnUpdateData事件响应的过程里,使用DBGridEh1.SelectedField.AsString获得的总是前次数据库里的值?因为这时还没有更新数据库? 请问用什么值可以返回用户选择的哪个值呢?不知道我说明白我的意思没?好象ComBox有一个OnUpdateData事件响应Text存放当前值,还有个SelText存放用户选择的值?在picklist里如何获得呢?谢谢了。
我是用Columns的OnUpdateData事件响应用户的选择。ADOQuery,sql2000,DBGridEh。但调试时发现,在OnUpdateData事件响应的过程里,使用DBGridEh1.SelectedField.AsString获得的总是前次数据库里的值?因为这时还没有更新数据库? 请问用什么值可以返回用户选择的哪个值呢?不知道我说明白我的意思没?好象ComBox有一个OnUpdateData事件响应Text存放当前值,还有个SelText存放用户选择的值?在picklist里如何获得呢?谢谢了。
if DBGrid1.Components[i] is TInplaceEdit then
Edit1.Text := TEdit(DBGrid1.Components[i]).Text;edit1.text的值就是你当前编辑单元格的值,而不是你前次数据库里的值
ADOQuery的dataset not edit or insert 错误 post前加adoquery.edit就可以了。
是不是ADOQuery.first,moveby,next等也要edit?我的完全代码如下,要求根据picklist下拉框的不同选择,改变不同数据格里的值,注意不是只改当前纪录行,是任意行的记录。中间涉及到当前记录行的切换。麻烦您了,帮我看看,眼看就要完成了,55555,急啊我调试是发现语句执行到post后,都没错,而且sql里看数据库表里的值也都存了!但在DBGridEh里的UpdateValues出错!!肯定不是控件的错,但不知道错哪里了。帮帮忙!!
procedure TForm_Bijiao.DBGridEh_BijiaoColumnsUpdateData(Sender: TObject;
var Text: String; var Value: Variant; var UseText, Handled: Boolean);
var
s:String;
m,n,i:integer;
begin
if DBGridEh_Bijiao.SelectedIndex > 0 then
begin for i:=0 to DBGridEh_Bijiao.ComponentCount-1 do
if DBGridEh_Bijiao.Components[i] is TInplaceEdit then
s:= TEdit(DBGridEh_Bijiao.Components[i]).Text; m:=DBGridEh_Bijiao.Row-1;
n:=DBGridEh_Bijiao.Col-1;
n:=(n-1) DIV 2; if s='极其重要' then
begin DBGridEh_Bijiao.SelectedField.Value:=s; //将当前编辑格的值写进库 if n=0 then
ADOQuery_Bijiao.First
else ADOQuery_Bijiao.MoveBy(n-m); //移动当前记录到指定行
ADOQuery_Bijiao.Fields[2*m+1].Value:='极其次要'; //写指定格的值 if not (ADOQuery_Bijiao.State in [dsEdit, dsInsert]) then ADOQuery_Bijiao.Edit;
ADOQuery_Bijiao.Post; end; end; {if DBGridEh_Bijiao.SelectedIndex > 0}
end;{procedure}