复制表报错: “from子句语法错误”“当前提供程序不支持从单一执行返回多个记录集”

protossback 2018-07-26 05:30:18
目的是将其它数据库中的两个表直接拷贝到新数据库。
开始的时候,只复制一个表,没有错误,也确实成功复制了。
procedure TFormManuf.BitBtn1Click(Sender: TObject);
var
TTo,TFrom,PTo,PFrom,VTo,VFrom:string;
begin
DataModule1.ADOQuery4.Close;
DataModule1.ADOQuery4.SQL.Clear;

TTo:='[c:\==db test\manuf blank.accdb].Process_T';
TFrom:='[c:\==db test\process blank.accdb].Process_T';

DataModule1.ADOQuery4.SQL.Add('select * into ' + TTo + ' from ' + TFrom);
DataModule1.ADOQuery4.Open;
end;


后来复制第二个表,就开始报“ from子句语法错误”


DataModule1.ADOQuery4.Close;
DataModule1.ADOQuery4.SQL.Clear;

DataModule1.ADOQuery4.SQL.Add('select * into ' + TTo + ' from ' + TFrom);
DataModule1.ADOQuery4.SQL.Add('select * into ' + PTo + ' from ' + PFrom);

DataModule1.ADOQuery4.Open;




如果按下面写的话,就开始报“当前提供程序不支持从单一执行返回多个记录集”


DataModule1.ADOQuery4.Close;
DataModule1.ADOQuery4.SQL.Clear;
DataModule1.ADOQuery4.SQL.Add('select * into ' + TTo + ' from ' + TFrom);
DataModule1.ADOQuery4.Open;

DataModule1.ADOQuery4.Close;
DataModule1.ADOQuery4.SQL.Clear;
DataModule1.ADOQuery4.SQL.Add('select * into ' + PTo + ' from ' + PFrom);
DataModule1.ADOQuery4.Open;

...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 2018-07-27
  • 打赏
  • 举报
回复
更正:要用ADOQuery4.ExecSQL来代替ADOQuery4.Open
BlueStorm 2018-07-27
  • 打赏
  • 举报
回复
要用ADOQuery3.ExecSQL来代替ADOQuery4.Open
有返回数据集的用Open方法,没有返回数据集的要用ExecSQL。
很明显,select * into 语句并没有返回数据集。
无聊的猪 2018-07-27
  • 打赏
  • 举报
回复
要多条sql一起执行的话,可以试试在每条sql结束的地方加分号';'
秋天之落叶 2018-07-27
  • 打赏
  • 举报
回复
1.你的PTo和PFrom在什么位置?
2.将其中的一个ADOQuery4换成ADOQuery5试一试
3.将要导入的表和文件做成对应关系,或者用对话框的形式两次导入试试
protossback 2018-07-27
  • 打赏
  • 举报
回复
引用 4 楼 BlueStorm 的回复:
更正:要用ADOQuery4.ExecSQL来代替ADOQuery4.Open

It's working.thx

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧