请问如何用程序创建access 的mdb数据库和表

ben3 2007-06-05 08:53:07
我将一个a.mdb的a 表筛选后生成b.mdb 的b表,我用
ADOQuery->SQL(select * into b from a )为什么不成功.
select * into [c:\\b.mdb].b from [c:\\a.mdb].a 也不成功,为何?能提供正确代码马上给分.谢谢.
...全文
715 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
路过路人乙 2008-05-08
  • 打赏
  • 举报
回复
MARK
MEFULEU 2007-06-18
  • 打赏
  • 举报
回复
还没有搞定么?

苯方法:把相同的表结构当作资源来用;

另存时,把资源释放;然后分别使用两个连接,打开不同的数据库;

使用SQL语句,一条条把内容拷贝到新表;
大概代码如下;
Query-当前数据库连接表
mQuery-需要新保存的连接表
dbname-数据库表名称

fCount=DM->Query->Fields->Count;
dbsql="INSERT INTO "+dbname+ "(";
for (int f=0;f<fCount-1;f++)
dbsql=dbsql+DM->Query->Fields->Fields[f]->FieldName+",";

dbsql=dbsql+DM->Query->Fields->Fields[fCount-1]->FieldName+") VALUES(";

DM->Query->FindFirst();
for (int r=0;r<rCount;r++)
{
sql=dbsql;
for (int f=0;f<fCount-1;f++)
{
dsc= DM->Query->Fields->Fields[f]->AsString;
if (dsc!="")
sql=sql+"'"+dsc+"',";
else
sql=sql+"'0',";
}

dsc= DM->Query->Fields->Fields[fCount-1]->AsString;
if (dsc!="")
sql=sql+"'"+dsc+"')";
else
sql=sql+"'0')";

DoSql(mQuery,sql); //运行SQL语句,插入记录到新库

DM->Query->FindNext();
}
jacknes009 2007-06-11
  • 打赏
  • 举报
回复
学习,顶
ben3 2007-06-08
  • 打赏
  • 举报
回复
未解决,未解决.
MEFULEU 2007-06-07
  • 打赏
  • 举报
回复
SQL Explorer里边不知道为何可以~~~~~~~~~~~~
MEFULEU 2007-06-07
  • 打赏
  • 举报
回复
晕,试了试,ado,bde;好像都不支持这种语句~
MEFULEU 2007-06-07
  • 打赏
  • 举报
回复
SQL Explorer运行正确~~~~

bcb中应该也可以,你使用ado连接尝试一下~
ben3 2007-06-07
  • 打赏
  • 举报
回复
MEFULEU(没有作不到,只有想不到)

insert into [c:\tmp1.MDB;Uid=User;Pwd=Pass].a select * from [d:\tmp2.MDB;Uid=User;Pwd=Pass].a


在bcb的开发环境下成功吗?请提供详细代码,我用你的方法不成功。
MEFULEU 2007-06-07
  • 打赏
  • 举报
回复
insert into [c:\tmp1.MDB;Uid=User;Pwd=Pass].a select * from [d:\tmp2.MDB;Uid=User;Pwd=Pass].a
MEFULEU 2007-06-07
  • 打赏
  • 举报
回复
不同目录也行啊。你没有测试阿~~~~

我在SQL Explorer运行正确~~~~
ocen713 2007-06-06
  • 打赏
  • 举报
回复
如果可以的话
我建议你先建一个空表 b
结构和a的一样
如果不用了就可以清空表b
这样看上去就像新建的
再用 select * into b from a
应该就不会报错了
MEFULEU 2007-06-06
  • 打赏
  • 举报
回复
首先要有对应的mdb和对应的表才可以~~~~~~~~

insert into [d:\tmp1.MDB;Uid=User;Pwd=Pass].a select * from [d:\tmp2.MDB;Uid=User;Pwd=Pass].b
蒋晟 2007-06-06
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/en-us/library/bb208934.aspx
ben3 2007-06-06
  • 打赏
  • 举报
回复
我想将一个a.mdb的a 表筛选后生成b.mdb 的b表,a表与b表结构一样,只是不同的数据库.其实想实现从一个mdb的表中导入到另一个mdb的表中,想使用sql语句select * into b from a,但是使用"select * into [c:\\b.mdb].b from [d:\\a.mdb].a";会报"不正常地定义参数对象,提供了不一致或不完整的信息"的错误信息.我是想用select * into 语句实现.
xzlzrsl 2007-06-06
  • 打赏
  • 举报
回复
学习,顶
我不懂电脑 2007-06-06
  • 打赏
  • 举报
回复
创建生成表查询时,请指定:

新数据库表(目标表)的名称。
要从中复制行的一个或多个表(源表)。可以从单个表或联接表中进行复制。
要复制其内容的源表中的列。
排序次序(如果想以特定的次序复制行)。
定义要复制行的搜索条件。
“分组依据”选项(如果仅想复制汇总信息)。
例如,下列查询将创建称为 uk_customers 的新表并将信息从 customers 表复制到其中:

SELECT *
INTO uk_customers
FROM customers
WHERE country = 'UK'


为成功使用生成表查询,必须拥有在目标数据库中创建表的权限。

i_love_pc 2007-06-06
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20020327/16/604104.html
ben3 2007-06-06
  • 打赏
  • 举报
回复
to MEFULEU(没有作不到,只有想不到)

d:\tmp1.MDB 和d:\tmp2.MDB 同在d:目录下,路径一样,当然是可以,但我要的是不同目录的.
MEFULEU 2007-06-06
  • 打赏
  • 举报
回复
当然那是相对于两个mdb;

如果是其他的数据源

那只好使用select * into 语法~~
MEFULEU 2007-06-06
  • 打赏
  • 举报
回复
晕,原来都没有人用我的方法阿~

没有密码和用户把其中的

;Uid=User;Pwd=Pass

去掉就行~~
加载更多回复(1)

1,178

社区成员

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

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