数据库有Seat表,字段名idisplay Seat.iPCode
Person表,字段Person .iPCode查询Person表的iPCode字段,并从小到大排列
select Person .iPCode from Person
order by scardcode
假设查询结果为RSA:1,2,5,8,9查询Seat表的idisplay字段,并从小到大排列
select iDisplay from TABLE_Seat
where irow=:prow and idisplay>0 //每行的idisplay都从1开始
order by idisplay
假设查询结果为RSB:5 9 11 12 13
如何将RSA中的结果按小对小的关系插入到RSB的Seat.iPCode中
既按: RSA 对应 RSB
1 5
2 9
5 11
8 12
9 13
Person表,字段Person .iPCode查询Person表的iPCode字段,并从小到大排列
select Person .iPCode from Person
order by scardcode
假设查询结果为RSA:1,2,5,8,9查询Seat表的idisplay字段,并从小到大排列
select iDisplay from TABLE_Seat
where irow=:prow and idisplay>0 //每行的idisplay都从1开始
order by idisplay
假设查询结果为RSB:5 9 11 12 13
如何将RSA中的结果按小对小的关系插入到RSB的Seat.iPCode中
既按: RSA 对应 RSB
1 5
2 9
5 11
8 12
9 13
解决方案 »
- 我查询出几个记录,在cxgrid在显示出来,然后修改某行某更的值,当输出焦点出开这行时,如何能实时将修改后的值同步更新到数据库?
- 怎样显示那个被隐藏的主界面?
- 如何把停靠的那个两行的双击事件屏蔽掉呢
- 怎么设置把图标放到文字的上面呢?
- 请问在mdi窗口中,想修改当前子窗口某函数的值呢?如何编写呢?
- 启动数据库事务后,网络出现中断,如何终止事务?
- 又一个"Grid index out of range"提示......
- 如何在ACCESS插入图片,请大家帮忙!!!谢谢!!
- 请问Delphi怎样写代码把图片文件保存到SQL Server2000内呀
- 如何创建一个临时表!
- fastreport的报表自定义//
- 数据并发问题?
1:首先把RSB插入到Seat.iPCode中
2:With AdoQuery1 do
Begin
******order by //查询到你结果 SA:1,2,5,8,9
End;
while not AdoQuery1.eof do
Begin
select min(idisplay )as ** from Seat where iPCode='''' //获取最小的值并且没有跟新的iPCode等于空
update Seat set iPCode='''+Adoquery('')*****+'''where idisplay ='''+上面获取的最小值+'''//这里直接就跟新到系统
AdoQuery1.next;
End;
Showmessage('跟新成功');
update Seat set iPCode='''+Adoquery1.fieldbyname('Column').Asstring where idisplay=上面获取的最小值 ;//这里直接就跟新到系统
AdoQuery1.next;
End;
跟新成功
口述:思路
方法1 1:首先对RSA的结果排序从小到大
2:RSb的结果插入到Seat的idisplay (RSB:5 9 11 12 13 )
3:在利用RSA查询的结果循环(再找Seat的idisplay最小数并要求跟新的字段iPCode为空),接下来跟新
方法2:可以建立临时表Clientdataset 跟心到Seat
1:首先获取要跟新的表的行数count(*)
2:对得到RSA,RSB的顺序
2: 利用for循环分别付值
for i:=1 to Cont(*)
Begin
循环RSA;
循环RSB;
付值//思路和1的思路一样
End;
Person.iPCode在Seat表中字段名为Seat.iPCode,默认值为-1;RSB是从Seat表里查询得到的iDisplay的有序结果集(从大到小)
iDisplay在每行(irow)中均从1开始;//以下程序希望实现功能:
//if TABLE_Delegation.scardcode最小 &&TABLE_Seat.idisplay最小
TABLE_Delegation.scardcode插入到TABLE_Seat.iperson_ID中 procedure TFormSeatCreate.ButtonPersonClick(Sender: TObject);
var Row,MinRow,MaxRow,i,j:integer;
abc,def:string;
begin
with ADOQSeat do
begin
Close;
SQL.Clear;
SQL.Add('select min(iRow) MinRow ,max(iRow) MaxRow from TABLE_Seat');
open;
MinRow:=FieldValues['MinRow'];//查询行数
MaxRow:=FieldValues['MaxRow'];
end;
for Row:=MinRow to MaxRow do //从小到大依次执行所有行
begin
with ADOQSeat do
begin
Close;
SQL.Clear;
SQL.Add('select scardcode from TABLE_Delegation order by scardcode');
open;
end; //从人员信息表查询卡号,并排序
while ADOQSeat.Eof do
begin
ADOQSeat.Close;
ADOQSeat.SQL.Clear;
ADOQSeat.SQL.Add('select min(iDisplay) Display from TABLE_Seat where irow=:prow and idisplay>0');
ADOQSeat.Parameters.ParamByName('prow').Value:=Row; //每次循环的ROW
ADOQSeat.open;
abc:=ADOQSeat.FieldbyName('Display').AsString;
ADOQSeat.Close;
ADOQSeat.SQL.Clear;
ADOQSeat.SQL.Add('update TABLE_Seat iperson_ID=:pperson_ID where idisplay=:pdisplay');
ADOQSeat.Parameters.ParamByName('iperson_ID').Value:=ADOQSeat.FieldByName('scardcode').AsString; //每次循环的ROW
ADOQSeat.Parameters.ParamByName('pdisplay').Value:=abc; //每次循环的ROW
ADOQSeat.Next;
end;
end;
showmessage('OK');
end;
回寝室了小米+步枪请再帮看看谢谢~~~
方法1 1:首先对RSA的结果排序从小到大 RSA:1,2,5,8,9
2:RSb的结果插入到Seat的idisplay (RSB:5 9 11 12 13 )
3:在利用RSA查询的结果循环跟新 ,在找每次找Seat的idisplay最小数(min(idisplay))并要求跟新的字段iPCode为默认值为-1(这里一定要加上,以区别已经跟新
)
...........
while ADOQSeat.Eof do //ADOQSeat是跟新为RSA:1,2,5,8,9 结果的ADOQSeat
begin
withn ADOQSeat1 do
Begin
.......
sql.add('select min(idisplay) as idisplay_ from Seat where iPCode=''-1'' ');//查询最小RSB
........
End;
....
sql.addd('update set iPCode='''+ADOQSeat.Fieldbyname(iPCode_ ').Asstring+''' where idisplay='''+ADOQSeat1.Fieldbyname(idisplay_ ').Asstring+'''') //跟新
ADOQSeat.Next;
end;
showmessage( 'OK ');
end;
Cannot perform this operation on a closed datasetADOQSeat.Parameters.ParamByName( 'pdisplay ').Value:=abc; //每次循环的ROW
ADOQSeat.Next;
end;
提示:数据库没有处于编辑状态或已经关闭,,,
ADOQSeat.SQL.Add( 'update TABLE_Seat iperson_ID=:pperson_ID where idisplay=:pdisplay ');
------ ADOCommand1.CommandText:=‘跟新语句’;
少了ADOCommand1.Execute //ADOCommand1用这个控件更新,,
整个过程都是用一个ADOQSeat,晕,那样肯定是错的,,,还没有执行呢ADOQSeat的sql语句,又关闭执行另一个语句,,,,
-:建立表
Create table seat (
idisplay int ,
iPCode int )
--------------------
2:建立表
Create table Person (
iPCode int,
idisplay int )
3:select iPCode , idisplay from seat order by idisplay //付值和查询结果
结果为: -1,5
-1,9
-1,11
-1,12
-1,13
4: select iPCode from Person order by iPCode //付值和查询结果
结果为RSA 1,2,5,8,9
5:程序代码:把RSA跟新set表的iPCode 字段以小对小的关系procedure TForm1.Button4Click(Sender: TObject);
begin
With AdoQuery1 do
Begin
Close;
SQl.Clear ;
SQl.Add('select iPCode from Person order by iPCode'); //得到rsa结果
open;
end;
While Not AdoQuery1.Eof do
Begin
with AdoQuery2 do
Begin
Close;
SQl.Clear ;
SQl.Add('select min(idisplay) as idisplay from seat where iPCode=''-1'' order by idisplay '); //获取每次得到RSB的最小值 ;哪个-1是唯一区别
open;
End;
With adoQuery3 do
Begin
Close;
SQl.Clear ;
SQl.Add('update seat set iPCode='''+Adoquery1.fieldbyname('iPCode').AsString +''''
+' where idisplay='''+adoquery2.fieldbyname('idisplay').AsString +''' ');
ExecSQL ;
End;
AdoQuery1.Next ;
End;
end;
测试通过,,,我的QQ290843309如果在有什么问题QQ联系,,