在一个GRID中根据某个条件,来修改多行记录(100分)

  • 主题发起人 主题发起人 600211
  • 开始时间 开始时间
6

600211

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个GRID中,显示如下记录
KMDM KMMC JHD --字段名(标题)
102 银行存款 借 --以下为显示的记录
10201 银行存款-工行 借
10202 银行存款-建行 借
10203 银行存款-中行 借

问题如下:
1、如果将科目代码为102的记录中 JHD字段 改为“贷”,怎样将其他科目代码以“102”开头
的记录的JHD也改为“贷”
2、此段程序应该写到哪个事件中,是否要用事务处理。
 
好像有一个SubString,可以取出字符串当中的子串!
 
用Update触发器!
写一条语句就成了!
Update Table Set JHD = '贷' where inserted.KMDM Like '102%'
 
觸發器中:
Update Table Set JHD = '贷' from inserted a where a.KMDM Like '102%' and table.kmdm=a.kmdm
 
能否在前端控制?
 
前端控制?
那你就控制每次修改时执行UPDATE好了!
具体如何做,看你的模式了!
可以做成接口,每次更新时就执行一下UPDATE,

只是一个想法而已!呵呵...
 
能否具体一点,在哪个事件中写
 
这得看你了,不一定要在事件里写!
要看你是如何提交数据,不同的提交方式,有不同的解决办法!
如果是一条一条数据提交,解决办法简单!只要在提交后马上执行UPDATE就可以,
如果是成批提交就麻烦些!但应该是可以解决的!
不过我不明白你为什么一定要在前端控制呢?
 
呵呵,原理应该差不多吧
procedure TInfoListForm.dxDBGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
I,ID: Integer;
Str: String;
adoQuery: TADOQUERY;
begin
if (dxDBGrid1.SelectedCount > 1) and (Button = mbRight) then
begin
if InputQuery('刊物名称输入','请输入新的刊物名称:',Str) then
with dxDBGrid1.DataSource.DataSet do
begin
adoQuery := TADOQUERY.Create(nil);

for I:=0 to dxDBGrid1.SelectedCount-1 do
begin
GoTobookmark(pointer(dxDBGrid1.SelectedRows));

ID := dxDBGrid1.DataSource.DataSet['ID'];
adoQuery.Close;
adoQuery.Connection := DMForm.adoconInfo;
adoQuery.SQL.Clear;
adoQuery.SQL.Add('Update info');
adoQuery.SQL.Add('set NewName ='''+Str+'''');
adoQuery.SQL.Add('Where ID='+IntToStr(ID));
adoQuery.ExecSQL;
end;
adoQuery.Free;
DisableControls;
Close;
Open;
EnableControls;
end;
end;
end;
 
后退
顶部