想实现将指定的数据行上行一行,如果操作,排序完成后最后UpdateBatchvar ADOSetTmp: TADODataSet;
i:int64;
begin
i:=1;
ADOSetTmp := nil;
ADOSetTmp := TADODataSet.Create(ADOSetTmp);
ADOSetTmp.CommandText := 'select max(xh) as num from TBA_PZ where mc='''+zw_para1+''' and id<'+inttostr(ADOQuery1.FieldByName('id').AsInteger);
ADOSetTmp.Connection := data1.ADOConnection1;
ADOSetTmp.Open;
if ADOSetTmp.FieldByName('num').Value<>null then
begin
i:= ADOSetTmp.FieldByName('num').Value;
ADOQuery1.edit;
ADOQuery1.FieldByName('xh').Value:=i;
end;
ADOSetTmp.Free;实现了将指定行的排序号xh-1,但是如何将上一行的xh+1这样才正确呀
i:int64;
begin
i:=1;
ADOSetTmp := nil;
ADOSetTmp := TADODataSet.Create(ADOSetTmp);
ADOSetTmp.CommandText := 'select max(xh) as num from TBA_PZ where mc='''+zw_para1+''' and id<'+inttostr(ADOQuery1.FieldByName('id').AsInteger);
ADOSetTmp.Connection := data1.ADOConnection1;
ADOSetTmp.Open;
if ADOSetTmp.FieldByName('num').Value<>null then
begin
i:= ADOSetTmp.FieldByName('num').Value;
ADOQuery1.edit;
ADOQuery1.FieldByName('xh').Value:=i;
end;
ADOSetTmp.Free;实现了将指定行的排序号xh-1,但是如何将上一行的xh+1这样才正确呀
解决方案 »
- 文件透明加密之钩子问题请教
- 如何屏蔽图片中某一区域
- 如何将Excel表中内容导入数据库中
- 求一个dll的代码?
- 真金白银购买了Report Machine控件,但现在该控件的开发者王海丰不肯给予技术支持,只好来这里救助!请大侠们帮帮偶!谢谢!
- rauln
- 能不能用delphi开发dhtml的?请告诉一般的方法!谢了
- 为什么DevExpress中的TCxLookupcombobox在开发BPL插件系统中,其EditValue的返回值是NULL。其他ExpressEditors中的控件情况也是一样?
- 再问Delphi6和SQL Server的问题。
- 关于遍历读取硬盘文件的问题
- !!! 一个难题 !!!
- 关于查找字段的问题
四个变量 sID(原id),dID(目标id),sXH(原序号),dXH(目标序号):integer现分别取得 sID和dID,现在要将dID的数据和sID记录序号做交换
假如现在数据记录在dID上,取出dXH,数据上移Prior,取得sXH
DisableControls;
Edit;
FieldByName('xh').AsInteger := dXH;//修改sID记录序号为dXH
Post;下移
Next;
Edit;
FieldByName('xh').AsInteger := sXH;//修改dID记录序号为sXH
Post;
EnableControls;
ADOSetTmp.CommandText := 'select max(xh) as num from TBA_PZ where mc='''+zw_para1+''' and id <'''+ADOQuery1.FieldByName('id').AsString+'''';
//xh+1
ADOSetTmp.CommandText := 'select min(xh) as num from TBA_PZ where mc='''+zw_para1+''' and id >'''+ADOQuery1.FieldByName('id').AsString+'''';
i,j:int64;
begin
ADOQuery1.DisableControls;
i:=1;
j:=1;
ADOSetTmp := nil;
ADOSetTmp := TADODataSet.Create(ADOSetTmp);
ADOSetTmp.CommandText := 'select max(xh) as num from TBA_PZ where mc='''+zw_para1+''' and id<'+inttostr(ADOQuery1.FieldByName('id').AsInteger);
ADOSetTmp.Connection := data1.ADOConnection1;
ADOSetTmp.Open;
if ADOSetTmp.FieldByName('num').Value<>null then
begin
j:=ADOQuery1.FieldByName('xh').Value;
i:= ADOSetTmp.FieldByName('num').Value;
ADOQuery1.edit;
ADOQuery1.FieldByName('xh').Value:=i;
ADOQuery1.Prior;
ADOQuery1.edit;
ADOQuery1.FieldByName('xh').Value:=j;
end;
ADOQuery1.EnableControls;
ADOSetTmp.Free;
ADOQuery1.UpdateBatch;
ADOQuery1.Close;
ADOQuery1.Open;
end;
哪错了