中华网校

系列网站: 中华网校 | www.网校.com | 3D模型 | 中华网校教育

电脑网校 | 业界新闻 | 职业网校 | 网校宝典 | 软件下载 | 网校论坛 | 网校联盟

电脑入门 | 网页设计 | 网络编程 | 图形图象 | 三维空间 | 多媒体 | 程序语言 | 操作系统 | 系统专题 | 办公应用 | 软件宝典 | 硬件天下 | 

 

您的位置:首页 >> 程序语言 >> VB/VB.NET >> 新闻正文

VB 6 问答  

作者:_  时间:2002-1-31  来自:中华网校  责任编辑:  阅读次数:

 我用ADO访问ACCESS数据库时用AddNew方法往里添加一条纪录,但当输入不符要求的数据时,ado会引发一个异常,这时我应该在异常处理中废弃当前纪录,重新加入新的记录;可实际上,我发现什么也做不了了,任何操作(如cancleUpdate,update,move,AddNew)都返回错误或引发异常.我可以确定权限和共享都正确,怀疑是ado的缓冲机制有bug,请哪位高手指点。
  答:在操纵记录时应对各种可能出现的错误做相应的陷阱处理。根据错误号代表的含义来改正错误,如:
  on error goto ErrorCode
  rst001.AddNew 或 rst001.Update ....
  …
  exit Sub
  ErrorCode:
  Select case Err.Number
  Case 94
  Msgbox ″Null无效错误″
  Case 461
  MsgBox ″指定的格式与数据格式不匹配″
  Case ErrNumber
  …
  End Select
  问题2(难度系数:初级)
  如何打开加密的数据库(access)?
  答:打开加密的ACCESS采用如下命令:
  Set Db = WS.OpenDatabases (″MyDBFile.mdb″,False,False,″;PWD=密码″) (记住前面有个分号。)
  问题3(难度系数:中级)
  如何使用MSCOMM32.OCX发送大于80H的字符,可否给个示例程序?
  答:该接发方式为
  MSComm1.InputMode=comInputModeBinary
  如发一个A0H
  Dim TxData(0) As Byte
  TxData(0)=&HA0
  MSComm1.Output=TxData
  这是接收方寄存器为8位的情况,如为16位,则:
  Dim TxData(1) As Byte
  TxData(0)=&HA0
  TxData(1)=&H0
  MSComm1.Output=TxData
  问题4(难度系数:中级)
  我有一程序,将生成一个数据文件,生成之后要将该文件以附件的方式发到指定的信箱。现在我要在程序上直接提供发送按钮,调用默认的邮件处理程序将附件发送,并附上主题和简单的内容。不知如何实现?
  答:可使用MAPISESSION、MAPIMESSAGES控件实现调用默认的支持MAPI的电子邮件如OUTLOOK EXPRESS、EXCHANGE。其中MAPISESSION实现登录、MAPIMESSAGES实现信息操作。
  MAPISession1.signon
  MAPIMessages1.SessionID = MAPISession1.SessionID
  MAPIMessages1.Compose ′创建一封新的消息
  MAPIMessages1.RecipAddress = ″xxx@aaa.com″
  MAPIMessages1.AddressResolveUI = True
  MAPIMessages1.ResolveName
  MAPIMessages1.MsgSubject = Trim(txtSubject)
  MAPIMessages1.MsgNoteText = Trim(txtText)
  MAPIMessages1.AttachmentPathName = ″c:Detlog.txt″ ′attach file location
  MAPIMessages1.Send′发送
  MAPISession1.SignOff
  详见vb5.0 onlinebook。(由lsh提供答案)
  问题5(难度系数:中级)
  用VB生成EXE文件后,如何在后面加上参数?这个参数怎样传给VB?(就像:notepad c:vb.txt 一样)
  答:对于使用 Visual Basic 开发并编译为 .exe 文件的应用程序,VB提供了一个Command 对象,该对象返回出现在命令行中应用程序名之后的任何参数。下面函数演示了如何获取参数的所有技术细节。
  Function GetCommandLine(Optional MaxArgs)
  ′声明变量。
  Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs
  ′检查是否提供了 MaxArgs 参数。
  If IsMissing(MaxArgs) Then MaxArgs = 10
  ′ 使数组的大小合适。
  ReDim ArgArray(MaxArgs)
  NumArgs = 0: InArg = False
  ′取得命令行参数。
  CmdLine = Command()
  CmdLnLen = Len(CmdLine)
  ′以一次一个字符的方式取出命令行参数。
  For I = 1 To CmdLnLen
  C = Mid(CmdLine, I, 1) ′检测是否为 space 或 tab。
  If (C <> ″ ″ And C <> vbTab) Then
  ′若既不是 space 键,也不是 tab 键,则检测是否为参数内含之字符。
  If Not InArg Then
  ′新的参数。检测参数是否过多。
  If NumArgs = MaxArgs Then Exit For
  NumArgs = NumArgs + 1
  InArg = True
  End If
  ′将字符加到当前参数中。
  ArgArray(NumArgs) = ArgArray(NumArgs) + C
  Else
  ′找到 space 或 tab。将 InArg 标志设置成 False。
  InArg = False
  End If
  Next I
  ReDim Preserve ArgArray(NumArgs) ′调整数组大小使其刚好符合参数个数。
  GetCommandLine = ArgArray() ′将数组返回。
  End Function
  问题6:(难度系数:高级)
  我现在编了一个屏幕保护程序,但不能拦截″ctrl+alt+del″的操作,不知如何处理?
  答:需要调用API函数″SystemParametersInfo″拦截″ctrl+alt+del″,″ctrl+esc″,″alt+tab″三组热键。将以下代码加入你的一般模块:
  Option Explicit
  Public Declare Function SystemParametersInfo Lib ″user32″ Alias ″SystemParametersInfoA″ _
  (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByValfuWinIni As Long) As Long
  Public Const SPL_SCREENSAVERRUNNING = 97
  以下加入你的窗体
  Option Explicit
  ′读取窗体时使热键失效
  Private Sub Form_Load()
  SystemParametersInfo SPL_SCREENSAVERRUNNING, True, ByVal 1&, 0
  End Sub
  ′程序退出时使热键有效
  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  SystemParametersInfo SPL_SCREENSAVERRUNNING, False, ByVal 1&, 0
  End Sub
  切记:一定要一起使用,否则使热键失效后,只有重新启动Windows热键才会恢复。(由HBG提供解答)

相关文章 最新文章 推荐文章
RC4经典加密算法VB版本代码
VB 6 问答
优化VB程序
vb开发人员操作规程
用VB编屏幕保护快速设定程序
VB的座标系统
VB:开发CAI软件的小经验
用VB编写网络寻呼机

  中华网校依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们 联系, 注明网址及文章,我们会即时处理或删除,感谢您的合作!中华网校email
  中华网校由广州市中六电脑城智锐计算机专业培训学院及中华网校技术中心提供网络支持未经本站许可任何个人网站、书刊报社一律不得私自复制,转载本站内容!

关于中华网校 | 广告服务 | 版权声明 | 投稿指南 | 网站合作 | 友情链接 | 网站地图

 

版权所有 中华网校 & 智锐网校 1999-2004 COPYRIGHT (C) 1999-2004 www.ZhiRui.com ALL RIGHTS RESERVED