返回列表 回复 发帖

书中的错误

课本88页,7.12 在讲逻辑错误的时候举了个例子,如下:
Dim n As Integer
Dim s As Integer
n = 1
For n = 1 To 3
s = s + n
Next n
书中说运行该程序将出现假死状态,因为n将永远等于1,该语句在循环语句中缺少一个增加步长的赋值语句n = n+ 1。
    for循环在省略步长的时候变量不是自增1的吗?这个例子没有错误,可以正常运行。请看一下是不是书中的印刷错误。
本帖最后由 skyrising 于 2010-3-6 18:54 编辑

1# wpj0623


说法是错误的。但是该语句是正确的。每次运行for循环时自动运行n=n+1语句。所以该语句没有错误。如果有疑问,可以访问512858077或skyrising@163.com。该语句应该更改。您的答案是正确的。
人过三十天过午
对啊,我就认为该语句没错,但书上却说该语句错了,原话是”运行该程序将出现假死状态,因为n将永远等于1,该语句在循环语句中缺少一个增加步长的赋值语句n = n+ 1。“
我想告诉你一声,如果再印刷的时候把这个地方改过来。
请问你认识杨章伟吧?我也买了他的《VB从入门到精通》,但是书中有一些问题,我曾经给他发过邮件询问,也可能是他太忙了吧。回了几次就没信儿了,而且书中有个错误的地方我跟他说了,他却说那样是正确的,但那样程序不能正常运行,我把我给他发的信给你复制过来,您看一下,是不是他错了。如下:
这是他给我的回复(我的问题在最后边):你好,关于第一个问题,首先str=Dir(" & App.Path & "\data.xls)的写法才是正确的,我查看了该书的印刷版和电子版,书上301页代码写的都是str = Dir(" & APP.PATH &"\data.xls),你说的temp = Dir(App.Path & "\ Data.xls")写法是从哪看到的?我在印刷版和电子版中都没找到这种写法。
第二个问题,conn连接语句可以写在整个模块的开头,作为模块级变量定义。
第三个问题,两者无明显区别,可以混用。
杨章伟2009.12.15



------------------ 原始邮件 ------------------
发件人: "smartchen"<421410211@qq.com>;
发送时间: 2009年12月15日(星期二) 中午11:06
收件人: "杨章伟"<26945824@qq.com>;
主题: 转发: 三个问题


这是VB杜撰大问题,直接回复renfulin0623@163.com

------------------ 原始邮件 ------------------
发件人: "顼宇峰"<sxyufeng@263.net>;
发送时间: 2009年12月15日(星期二) 上午10:11
收件人: "421410211"<421410211@qq.com>;
主题: Fw: 三个问题


----- Original Message -----
From: renfulin0623
To: sxyufeng
Sent: Monday, December 14, 2009 11:06 PM
Subject: 三个问题


你好,我是《VB从入门到精通》的读者,首先感谢您前两次回答的问题。不过最近我又有了三个问题需要您来帮助解决,问题如下:
第一个问题:
这是我根据《VB从入门到精通》中第301页中的例子写的:
Private Sub Command1_Click()
Dim cn As New ADODB.Connection
Dim temp, i As String
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\student.mdb;Persist Security Info =False"
i = MsgBox("确实要备份数据库吗?", vbYesNo + vbquetion, "提示")
If i = vbYes Then
    temp = Dir(App.Path & "\ Data.xls")
   If temp = "" Then
        cn.Execute "select 学号,姓名,年龄,性别,系部 into [Excel 8.0;DataBase=" & App.Path & "\ Data.xls].sheet1 from t_user"
        MsgBox "备份成功,生成Excel文件在当前目录下"
    Else
        MsgBox "当前路径下已存在原数据文件", vbCritical, "警告"
    End If
End If
cn.Close
End Sub
这个程序可以运行通过。但用红字标出的地方书中是这么写的:str=Dir(" & App.Path & "\data.xls),我最开始按照书上写的,程序报错,我查了一下MSDN中关于Dir()的用法,就改成上面的了,程序就可以运行了。而且在第303页的例子中好像也犯了同样的错误,书上是这样写的:str=Dir(" & App.Path & "),
我在这里跟您说一下,您看看是不是书上写错了?
第二个问题:
在最后一章《图书管理系统》中,一直没讲怎样连接的数据库,只是在Module1标准模块中定义了一些公用的变量,如:Public conn As New ADODB.Connection,用conn连接数据库的语句应该写在哪?通用模块和标准模块不都只能定义一些公用的变量或过程吗?是把用conn连接数据库的语句写在每一个需要连接数据库的过程中吗?还是通过ado控件来连接?
第三个问题:
Dim rs As New ADODB.Recordset和Dim rs1 As ADODB.Recordset的区别,前者是recordset记录集对象的实例,可用于打开记录集,例如:rs.open sql,cn,1,1.后者是recordset记录集类型的变量,可用于存储记录集,例如:set rs1=conn.execute(sql),我想问的是它们两个能不能混用,具体有什么区别或是关系?



您看一下是不是他错了,如果按他说的那样根本运行不了,您遇见他的话麻烦跟他说一声。
请问你认识杨章伟吧?我也买了他的《VB从入门到精通》,但是书中有一些问题,我曾经给他发过邮件询问,也可能是他太忙了吧。回了几次就没信儿了,而且书中有个错误的地方我跟他说了,他却说那样是正确的,但那样程序 ...
wpj0623 发表于 2010-3-6 19:23
回复邮件中不是有他的QQ号吗?要么你加他的QQ号问一下。这样比较直接。
str=Dir(" & App.Path & "\data.xls)    《VB从入门到精通》301页代码,
修改为str=Dir(" & App.Path & ")
即可按照书上的代码运行。
6# www


对。
返回列表