Access的视图问题!(30分)

  • 主题发起人 主题发起人 HHSH
  • 开始时间 开始时间
H

HHSH

Unregistered / Unconfirmed
GUEST, unregistred user!
刚用Access,竟发现它不支持视图?!象create view test as select * from table1
都不能执行!是它根本没有还是我不会用?
请问当您在Access中需要使用视图时是怎样解决的?从前用惯了视图,现在很别扭。
 
自己把视图的select ..代码写在query.sql中

-----
http://www.8421.org
 
用select * into viewname from tablename where ...
可以创建一个名为viewname视图
 
to sallay:
这种“视图”,每次使用都要重新创建。用完之后再删除,是吧?
挺麻烦,不是真正的视图。
 
Access里面有个叫“查询”的东西,应该是你想要的。不过,好象只是类似视图。
 
to Micro Whaight:
这个“查询”在delphi中怎样用呢?
请举个例子。
 
Access里面的“查询”,就是一个SELECT语句。如果是一个简单的SELECT,比如
SELECT * FROM tabMain之类的,在Delphi里面,它实际上就当做一个逻辑的表来用;
如果是其他性质的SQL,比如DELETE、INSERT什么之类的(Access里面叫做“操作查询”),
在Delphi里面好象是显示不出来(是指用TTable之类的组件)。不过,我想那也不叫“视
图”。 :)
实际要使用,和标准的操作过程一样,放个TADOConnection连接MDB,然后是个
TADOTable连接到那个Connection上,随后就可以从TADOTable里面的TableName里面看到
那些个简单的查询了。

不知道这是不是你想要的。
 
可以用Create View aaa As Select * From Table1创建Access中的查询
其功能相当于SQLServer中的视图或简单的存储过程
 
to Micro Whaight:
这样的”查询"是在哪里创建?在Access中创建?保存后怎么会出现在Tadotable的tablename
中呢?不可能,你试试。说来说去,你还是说创建表吧。
to LGXing:
我在第一贴中就提出,create veiw aaa as select * from table1在access中无效。
你老兄看也没看就发贴了吧。你用过吗?成功了吗?请指教。


 
access2000中创建视图的帮助不对,明天我帮你查查XP的帮助。。
 
Access当然可以创建视图,左边的对象列中有创建表和查询(即视图)的选择。
你还是自己试试先再提问吧。
 
:)
我用的是Access97(2000有点差不多,只是位置换了一下)
在Access中打开数据库后,里面有个“查询”的页标签(TabSheet),选中它,这样就
到了建立/修改查询的地方。随后用“新建”按钮,就进入查询设计器……做完后,
保存这个查询。随后,在Delphi里面用TADOConnection/TADOTable连接,就可以看到
那个查询了。(Access的帮助很全面,而且也有一个叫做Northwind的示范数据库)

也就是说,建立查询,一般是在Access中建立的;使用则在Delphi里面。只是,它的
“查询”和视图,好象有点不一样。
 
当然看了题目才回答的了,如果没有用过,怎么会如此回答
 
感谢大家回答!这两天很忙,没来及时回贴,抱歉!
to xiao_q654321:
我当然知道access能创建查询,但问题是这个查询保存后怎样让delphi使用,就象使用
大型数据库的view一样。
to Micro Whaight:
真奇怪,这样的查询在delphi中能看到?我的就是不能!只能看到表!难道
access2000不行吗?
to LGXing:
请问create view table1 as.... 这样的语句你是在access下执行的,还是在delphi下用控件执行的?
问了不少人,都说access不支持视图,怎么会支持create view这样的语句呢?请指教!

 
可以在Delphi中用ADO控件看到Access中的简单查询,也就是说类似于所谓的
SELECT-SQL,如果是其他的所谓的操作查询,比如INSERT/UPDATE之类的,应
该是看不到的。Access97和Access2000应该没有区别吧?

实在不行,你用TADOConnection的一个叫做GetTableNames的方法试一试,把
可以看到的表名都取出来,里面应该有简单查询的。
 
我是用在Delphi中用ADO控件执行SQL语句做到的
 
查询保存后,delphi的使用方法和大型数据库的view一样啊,也是建立ADOConnection,
ADOTable/ADOQuery/ADODataSet,一样可以在ADOTable的表名中选择,在ADOQuery的SQL
中使用,没啥不同的。
 
直接像操作表一样操作“查询”就行了
Query1.SQL.add('select * from 查询1')
ok
 
to Expert:
的确可以!

to LGXing:
我试了一下,果然可以!原来我太想当然了,不好意思。
但有一点很奇怪:这样创建的视图(查询)为什么在access中看不到呢?你的能吗?

to Micro Whaight,xiao_q654321等使用过查询的朋友:
事先在access中建好的"查询",怎么也不能出现在表名列表中!用函数GetTableNames
也得不到它们的名字,但又确实可以调用,真奇怪!也不知你们是怎么看到的。
我用的是access2000+delphi+ado,驱动为:Microsoft Jet 4.0 OLE DB Provider
 
HHSH:
我也被你问糊涂了?为什么你那什么都看不见呢?
先用Access进行操作,建立一个简单查询,然后在Delphi当中,按照前面的顺
序,TADOConnection-->TADOTable,然后就可以在Object Inspector中的TableName
中看到了嘛?不知道你说的“调用”是什么意思?是指可以用在SQL语句里面?应
该也没问题。
或者,按照LGXing兄说的,直接用一个TADOQuery之类的自己建立一个查询,也
是可以的,我可以在Access中看到用ADOQuery建立起来的View,当然,不是程序一
执行马上就可以看到的,要过一会。可能Jet要通知-->刷新之类的吧。
Access97和2000应该没有多少区别吧?这点小小的查询,不应该有区别的。不会
是2000多了什么选项?直接隐藏新建的查询而不是象97那样需要设置?(不太可能)
有点怀疑你建立的查询是不是所谓的简单查询? :) 在我这,查询要想能够在
Delphi的TADOTable的TableName中“被看到”,这个查询必须是Access中的所谓的
“选择查询”,就是SELECT * FROM TableName之类的,而且还必须是正确
的,我做了个测试,在一个存在的查询中,写了个错误的SQL(用了不存在的表名),
结果在Delphi中就看不到了。会不会是这种情况所造成的?
------------------------------
LXGing:
又学了一手,谢谢。 :)
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部