设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: lwwvb
打印 上一主题 下一主题

MDB的十宗罪.

[复制链接]
11#
发表于 2005-8-31 20:08:00 | 只看该作者
請教﹕如何使以下存儲過程返回值, 為什么臨時表需要?Alter PROCEDURE dbo.Identi

AS

SELECT   IDENTITY (int, 1, 1) AS AA,*

INTO         #tempA

FROM            sales
12#
 楼主| 发表于 2005-9-1 00:50:00 | 只看该作者
你上面的这个东西是用来干什么的?而且,你是想把数据返回客户端吧,对不对?
13#
发表于 2005-9-1 23:43:00 | 只看该作者
是想返回客戶端﹐在Query Analyze中是可以得到值的﹐但在ADP中就不行。有時不一定是臨時表﹐也一樣無法返回﹐用ADO也不行﹐但MDB中的通過查詢就可以。不知所以然﹐煩請指點.謝謝!
14#
 楼主| 发表于 2005-9-2 06:12:00 | 只看该作者
嘿嘿,你的ADO还是菜了点.存储过程改为这样:Alter PROCEDURE dbo.Identi

ASbeginSELECT   IDENTITY (int, 1, 1) AS AA,*

INTO         #tempA

FROM           ABCselect * from #tempAendADO求#tempA的内容  Dim r As Recordset

  



  Set r = GetTSQLProc(".....")    ''''执行存储过程,返回记录集到r

  



  Set r = r.NextRecordset()



  Debug.Print r.GetString()      ''''可以看到#tempA的内容[em05]
15#
发表于 2005-9-2 18:28:00 | 只看该作者
謝謝指點.ADO 使用了 .nextRecord 是可以返回數據(不用增加begin end)﹐ 但我的ACCESS 2000 ADP中 點擊修改后的存儲過程(增加begin end)仍然無法返回數據。另請指點 為什么要用.nextRecord? 不用他為什么會報錯? 是否真的存在兩個記錄集?
16#
 楼主| 发表于 2005-9-2 18:54:00 | 只看该作者
.nextRecord是求下一个记录集。当你的存储过程有N个select语句时,你就要用到这个求得下一个,下两个记录集...不用.nextrecord不是报错,而是你的第一个select语句的是不会返回记录的,它的记录集是关闭的。还有一点,当你双击ADP的存储过程时,只是默认显示第一个记录集。如果你在SQL 2K的查询分析器去运行存储过程,就会发现N个记录集。最后一点,如果真的是想提高自己,请放弃ACCESS。向delphi或.net发展。
17#
发表于 2005-9-2 20:50:00 | 只看该作者
謝謝!我當時沒有看查询分析器的Messages, 只是發現通過查詢可以﹐而存儲過程及ADO(當然就沒用.nextrecordset)都不行﹐索性就用在MDB中用通過查詢算了。現在我的MDB在轉ADP或其他開發工具時就又解決了一個基本問題了。Access的數據庫應用開發功能上有很多方面方便過VB , Delphi,及.net. 但就是感覺控件少了些﹐而且調用了API 窗體效果又很不穩定. Access如不解決這些問題﹐我肯定要向其他開發工具發展。現在我的方法是用總結我VBA中的經驗, 盡可能將現有的程序都轉為類﹐為我向任何其他面向對象的開發工具轉移打下基礎。轉類工作我已完成過半, 并已有部分轉為了vb.net。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-28 03:59 , Processed in 0.107480 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表