A表的
第一列的值给第二列
应该如何做啊??
想糊涂了,请各位指教~~
19 个解决方案
#1
update table a set a1=a2
#2
UPDATE a SET a1=a2
a是表名,a1第一列,a2,第二列,使用Query.execsql执行就可以了
a是表名,a1第一列,a2,第二列,使用Query.execsql执行就可以了
#3
反了.
update table a set a2=a1
update table a set a2=a1
#4
同意
#5
update a set a2=a1
#6
update table a set a1=a2
#7
如果两列的值完全相同,可能也没意义了,在此基础上可以计算
update a set a2=convert(str,a1) 把数值转换成字符串再给a2
update a set a2=a1+? 把a1经过运算后的值方到a2
update a set a2=a1 ...
update a set a2=convert(str,a1) 把数值转换成字符串再给a2
update a set a2=a1+? 把a1经过运算后的值方到a2
update a set a2=a1 ...
#8
update a set a2=a1
#9
我说的不太清楚是这个样子的啊
我要
with query1 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit1.text)+'''');
open;
end;
with query2 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit2.text)+'''');
open;
end;
while not query1.eof and query2.eof do
begin
edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
post;
query1.next;
query2.next;
end;
我是这么处理的啊
问题来了关键是执行到edit;
的地方的时候就说QUERY1是一个只读的数据集
但是我用ADOQUERY代替QUERY1就不会出现这中情况??
你们有没有遇到过或者有什么其它的办法来解决我的这个问题啊????
我要
with query1 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit1.text)+'''');
open;
end;
with query2 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit2.text)+'''');
open;
end;
while not query1.eof and query2.eof do
begin
edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
post;
query1.next;
query2.next;
end;
我是这么处理的啊
问题来了关键是执行到edit;
的地方的时候就说QUERY1是一个只读的数据集
但是我用ADOQUERY代替QUERY1就不会出现这中情况??
你们有没有遇到过或者有什么其它的办法来解决我的这个问题啊????
#10
设置Query1的RequestLive为True;
#11
while not query1.eof and query2.eof do
begin
query1.edit; //
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post; //
query1.next;
query2.next;
end;
begin
query1.edit; //
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post; //
query1.next;
query2.next;
end;
#12
那不是一样的道理!
#13
关注
#14
1、query1的sql语句 Select * from ... 是不是能更新?要不要逐个列出字段?requestLive属性要设为true。
2、query加sql语句之前要加:
query.close;
query.sql.clear;
3、
query1.first;
query2.first;
while not query1.eof and query2.eof do
begin
query1.edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post;
query1.next;
query2.next;
end;
2、query加sql语句之前要加:
query.close;
query.sql.clear;
3、
query1.first;
query2.first;
while not query1.eof and query2.eof do
begin
query1.edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post;
query1.next;
query2.next;
end;
#15
query1.close;
query1.sql.clear;
query1.sql.add('update tablename set values2=values1');
query1.execsql;
query1.sql.clear;
query1.sql.add('update tablename set values2=values1');
query1.execsql;
#16
query1.close;
query1.sql.clear;
query1.edit;
query1.sql.add('update yourtablename set vales2:=values1);
query1.execsql;
query1.sql.clear;
query1.edit;
query1.sql.add('update yourtablename set vales2:=values1);
query1.execsql;
#17
你们所说的SQL语句都只能解决一正列完成的复制还是可以的
但是如果我要实现下面这种情况怎么办??
A B C
1 5
1 5
2 4
2 9
我要把A=1的B列赋给A¡2的C列,应该怎么做??
with queryBatchCopyHl do
begin
close;
sql.clear;
sql.add('select * from hlcsdict');
sql.add('where jx='''+Trim(Edtjx.text)+'''');
open;
query1.Close;
query1.sql.clear;
query1.SQL.add('select * from hlcsdict');
query1.sql.add('where jx='''+Trim(Edtjx1.text)+'''');
query1.open;
query1.Edit ;
query1.first;
querybatchcopyhl.First ;
try
try
while not querybatchcopyhl.eof do
begin
query1.edit;
query1.FieldByName(quduan1).asstring:=querybatchcopyhl.fieldbyname(quduan).asstring;
query1.FieldByName(xs1).asstring:=querybatchcopyhl.fieldbyname(xs).asstring;
query1.Post;
querybatchcopyhl.next;
query1.Next;
end;
query1.first;
querybatchcopyhl.First ;
except
showmessage('异常数据产生');
end;
我的程序是这么写的,不过效率不太好,A相同的时候执行正确,不相同的时候
就有点问题,好象是把一些把应该更新的字段也修改了,晕~~
大家帮忙看看吧~~,谢谢,分不够再加~~
但是如果我要实现下面这种情况怎么办??
A B C
1 5
1 5
2 4
2 9
我要把A=1的B列赋给A¡2的C列,应该怎么做??
with queryBatchCopyHl do
begin
close;
sql.clear;
sql.add('select * from hlcsdict');
sql.add('where jx='''+Trim(Edtjx.text)+'''');
open;
query1.Close;
query1.sql.clear;
query1.SQL.add('select * from hlcsdict');
query1.sql.add('where jx='''+Trim(Edtjx1.text)+'''');
query1.open;
query1.Edit ;
query1.first;
querybatchcopyhl.First ;
try
try
while not querybatchcopyhl.eof do
begin
query1.edit;
query1.FieldByName(quduan1).asstring:=querybatchcopyhl.fieldbyname(quduan).asstring;
query1.FieldByName(xs1).asstring:=querybatchcopyhl.fieldbyname(xs).asstring;
query1.Post;
querybatchcopyhl.next;
query1.Next;
end;
query1.first;
querybatchcopyhl.First ;
except
showmessage('异常数据产生');
end;
我的程序是这么写的,不过效率不太好,A相同的时候执行正确,不相同的时候
就有点问题,好象是把一些把应该更新的字段也修改了,晕~~
大家帮忙看看吧~~,谢谢,分不够再加~~
#18
如果是用SP的话应该怎么做??
我不太清楚,谁愿意指点一二~
我不太清楚,谁愿意指点一二~
#19
var
vFieldNames: string;
vFieldValues: Variant;
begin
vFieldNames := StringReplace(Trim(Table1.FieldList.Text), #13#10, ';', [rfReplaceAll]);
vFieldValues := Table1[vFieldNames];
Table1.Next;
Table1.Edit;
Table1[vFieldNames] := vFieldValues;
end;
vFieldNames: string;
vFieldValues: Variant;
begin
vFieldNames := StringReplace(Trim(Table1.FieldList.Text), #13#10, ';', [rfReplaceAll]);
vFieldValues := Table1[vFieldNames];
Table1.Next;
Table1.Edit;
Table1[vFieldNames] := vFieldValues;
end;
#20
#1
update table a set a1=a2
#2
UPDATE a SET a1=a2
a是表名,a1第一列,a2,第二列,使用Query.execsql执行就可以了
a是表名,a1第一列,a2,第二列,使用Query.execsql执行就可以了
#3
反了.
update table a set a2=a1
update table a set a2=a1
#4
同意
#5
update a set a2=a1
#6
update table a set a1=a2
#7
如果两列的值完全相同,可能也没意义了,在此基础上可以计算
update a set a2=convert(str,a1) 把数值转换成字符串再给a2
update a set a2=a1+? 把a1经过运算后的值方到a2
update a set a2=a1 ...
update a set a2=convert(str,a1) 把数值转换成字符串再给a2
update a set a2=a1+? 把a1经过运算后的值方到a2
update a set a2=a1 ...
#8
update a set a2=a1
#9
我说的不太清楚是这个样子的啊
我要
with query1 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit1.text)+'''');
open;
end;
with query2 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit2.text)+'''');
open;
end;
while not query1.eof and query2.eof do
begin
edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
post;
query1.next;
query2.next;
end;
我是这么处理的啊
问题来了关键是执行到edit;
的地方的时候就说QUERY1是一个只读的数据集
但是我用ADOQUERY代替QUERY1就不会出现这中情况??
你们有没有遇到过或者有什么其它的办法来解决我的这个问题啊????
我要
with query1 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit1.text)+'''');
open;
end;
with query2 do
begin
sql.add('select * from hlcsdict');
sql.add('where jx='''+trim(edit2.text)+'''');
open;
end;
while not query1.eof and query2.eof do
begin
edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
post;
query1.next;
query2.next;
end;
我是这么处理的啊
问题来了关键是执行到edit;
的地方的时候就说QUERY1是一个只读的数据集
但是我用ADOQUERY代替QUERY1就不会出现这中情况??
你们有没有遇到过或者有什么其它的办法来解决我的这个问题啊????
#10
设置Query1的RequestLive为True;
#11
while not query1.eof and query2.eof do
begin
query1.edit; //
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post; //
query1.next;
query2.next;
end;
begin
query1.edit; //
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post; //
query1.next;
query2.next;
end;
#12
那不是一样的道理!
#13
关注
#14
1、query1的sql语句 Select * from ... 是不是能更新?要不要逐个列出字段?requestLive属性要设为true。
2、query加sql语句之前要加:
query.close;
query.sql.clear;
3、
query1.first;
query2.first;
while not query1.eof and query2.eof do
begin
query1.edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post;
query1.next;
query2.next;
end;
2、query加sql语句之前要加:
query.close;
query.sql.clear;
3、
query1.first;
query2.first;
while not query1.eof and query2.eof do
begin
query1.edit;
query1.fieldbyname('a').asstring:=query2.fieldbyname('b)'.asstring;
query1.post;
query1.next;
query2.next;
end;
#15
query1.close;
query1.sql.clear;
query1.sql.add('update tablename set values2=values1');
query1.execsql;
query1.sql.clear;
query1.sql.add('update tablename set values2=values1');
query1.execsql;
#16
query1.close;
query1.sql.clear;
query1.edit;
query1.sql.add('update yourtablename set vales2:=values1);
query1.execsql;
query1.sql.clear;
query1.edit;
query1.sql.add('update yourtablename set vales2:=values1);
query1.execsql;
#17
你们所说的SQL语句都只能解决一正列完成的复制还是可以的
但是如果我要实现下面这种情况怎么办??
A B C
1 5
1 5
2 4
2 9
我要把A=1的B列赋给A¡2的C列,应该怎么做??
with queryBatchCopyHl do
begin
close;
sql.clear;
sql.add('select * from hlcsdict');
sql.add('where jx='''+Trim(Edtjx.text)+'''');
open;
query1.Close;
query1.sql.clear;
query1.SQL.add('select * from hlcsdict');
query1.sql.add('where jx='''+Trim(Edtjx1.text)+'''');
query1.open;
query1.Edit ;
query1.first;
querybatchcopyhl.First ;
try
try
while not querybatchcopyhl.eof do
begin
query1.edit;
query1.FieldByName(quduan1).asstring:=querybatchcopyhl.fieldbyname(quduan).asstring;
query1.FieldByName(xs1).asstring:=querybatchcopyhl.fieldbyname(xs).asstring;
query1.Post;
querybatchcopyhl.next;
query1.Next;
end;
query1.first;
querybatchcopyhl.First ;
except
showmessage('异常数据产生');
end;
我的程序是这么写的,不过效率不太好,A相同的时候执行正确,不相同的时候
就有点问题,好象是把一些把应该更新的字段也修改了,晕~~
大家帮忙看看吧~~,谢谢,分不够再加~~
但是如果我要实现下面这种情况怎么办??
A B C
1 5
1 5
2 4
2 9
我要把A=1的B列赋给A¡2的C列,应该怎么做??
with queryBatchCopyHl do
begin
close;
sql.clear;
sql.add('select * from hlcsdict');
sql.add('where jx='''+Trim(Edtjx.text)+'''');
open;
query1.Close;
query1.sql.clear;
query1.SQL.add('select * from hlcsdict');
query1.sql.add('where jx='''+Trim(Edtjx1.text)+'''');
query1.open;
query1.Edit ;
query1.first;
querybatchcopyhl.First ;
try
try
while not querybatchcopyhl.eof do
begin
query1.edit;
query1.FieldByName(quduan1).asstring:=querybatchcopyhl.fieldbyname(quduan).asstring;
query1.FieldByName(xs1).asstring:=querybatchcopyhl.fieldbyname(xs).asstring;
query1.Post;
querybatchcopyhl.next;
query1.Next;
end;
query1.first;
querybatchcopyhl.First ;
except
showmessage('异常数据产生');
end;
我的程序是这么写的,不过效率不太好,A相同的时候执行正确,不相同的时候
就有点问题,好象是把一些把应该更新的字段也修改了,晕~~
大家帮忙看看吧~~,谢谢,分不够再加~~
#18
如果是用SP的话应该怎么做??
我不太清楚,谁愿意指点一二~
我不太清楚,谁愿意指点一二~
#19
var
vFieldNames: string;
vFieldValues: Variant;
begin
vFieldNames := StringReplace(Trim(Table1.FieldList.Text), #13#10, ';', [rfReplaceAll]);
vFieldValues := Table1[vFieldNames];
Table1.Next;
Table1.Edit;
Table1[vFieldNames] := vFieldValues;
end;
vFieldNames: string;
vFieldValues: Variant;
begin
vFieldNames := StringReplace(Trim(Table1.FieldList.Text), #13#10, ';', [rfReplaceAll]);
vFieldValues := Table1[vFieldNames];
Table1.Next;
Table1.Edit;
Table1[vFieldNames] := vFieldValues;
end;