query1.close; query2.close; query1.sql.clear; query2.sql.clear; query1.sql.add('select field1 from table1'); query2.sql.add('select field1 from table2'); query1.open; query2.open while not query1.eof do begin query2.insert; query2.fieldbyname('field1').asstring:=query1.fieldbyname('field1'); query1.next; end;
我按照笑哥哥的方法这样写, query1.close; query2.close; query2.sql.add('select bz from J__ZJGC'); query1.open; query2.open while not query1.eof do begin query2.insert; query2.fieldbyname('BZ').asstring:=query1.fieldbyname('备注'); query1.next; end;query1.sql.clear; query2.sql.clear; query1.sql.add('select 备注 from P__ZJGC'); 出现这样的问题: Server: Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'close'. Server: Msg 170, Level 15, State 1, Line 9 Line 9: Incorrect syntax near 'do'. 请解释一下笑哥哥的各条语句(尤其是query2.close;) 好吗? 我知道菜鸟是比较麻烦的了,不要见笑:)
首先您在目标库里面把表建好.我演示怎么把源库stock中的一个表userinfo的uname和psw字段的所有记录如何拷贝到目标库storemanagement 的一个表userinfo1中的 uname 和psw去.您可以根据需要适当改一下.我已经调试过了,没有问题.一下语句在查询分析器里面能够执行. use stock //stock 是源库 go declare @@uname char(10),@@psw char(10),@@countno integer,@@i integer select @@countno=count(*) from userinfo //userinfo 是源表 declare mycursor cursor for select uname,upsw from userinfo open mycursor fetch mycursor into @@uname ,@@psw set @@i=1 while @@i<=@@countno begin use storemanagement //storemanagement 是目标库
insert into userinfo1 values(@@uname,@@psw) //userinfo 是目标表 use stock
set @@i=@@i+1 fetch next from mycursor into @@uname ,@@psw end close mycursor DEALLOCATE mycursor
在sql server中运行sql 查询分析器,在里面输入 insert into 新表(新字段名)where select 想复制的字段名 from 数据库名.dbo.表名
query2.close;
query1.sql.clear;
query2.sql.clear;
query1.sql.add('select field1 from table1');
query2.sql.add('select field1 from table2');
query1.open;
query2.open
while not query1.eof do
begin
query2.insert;
query2.fieldbyname('field1').asstring:=query1.fieldbyname('field1');
query1.next;
end;
query1.close;
query2.close;
query2.sql.add('select bz from J__ZJGC');
query1.open;
query2.open
while not query1.eof do
begin
query2.insert;
query2.fieldbyname('BZ').asstring:=query1.fieldbyname('备注');
query1.next;
end;query1.sql.clear;
query2.sql.clear;
query1.sql.add('select 备注 from P__ZJGC');
出现这样的问题:
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'close'.
Server: Msg 170, Level 15, State 1, Line 9
Line 9: Incorrect syntax near 'do'.
请解释一下笑哥哥的各条语句(尤其是query2.close;)
好吗?
我知道菜鸟是比较麻烦的了,不要见笑:)
您的错误可能是没有连接到数据库吧.
考虑到你是使用ms SQL server,使用adoquery应该要方便一些.不用设置别名.
往窗体上添加两个adoquery,设置他们的connectionstring属性,连接到您的数据库服务器.然后就行了,按照我上面的方法做不会出问题的.
之所以要先close,是因为对query的sql进行操作的时候是不允许query是活动的.所以必须先close;
我想知道单独在sql sever里,不可以这样操作的啊?:(
use stock //stock 是源库
go
declare @@uname char(10),@@psw char(10),@@countno integer,@@i integer
select @@countno=count(*) from userinfo //userinfo 是源表
declare mycursor cursor for select uname,upsw from userinfo
open mycursor
fetch mycursor into @@uname ,@@psw
set @@i=1
while @@i<=@@countno
begin
use storemanagement //storemanagement 是目标库
insert into userinfo1 values(@@uname,@@psw) //userinfo 是目标表
use stock
set @@i=@@i+1
fetch next from mycursor into @@uname ,@@psw
end
close mycursor
DEALLOCATE mycursor
insert into 新表(新字段名)where select 想复制的字段名 from 数据库名.dbo.表名