⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 43.asp

📁 ASPWeb数据库范例总览
💻 ASP
📖 第 1 页 / 共 3 页
字号:
<FONT COLOR="#000099">   I = 9.8    ' 9.8 先四舍五入转换成 10,再指定给
I</FONT> </P>

<P><FONT COLOR="#000099">   Dim S As String</FONT> <BR>
<FONT COLOR="#000099">   S = 123   ' 123 先转换成 &quot;123&quot; 再指定给
S</FONT> </P>

<P><FONT COLOR="#000099">   Dim D As Date</FONT> <BR>
<FONT COLOR="#000099">   D = &quot;1997/7/1&quot; ' &quot;1997/7/1&quot;
先转换成 #1997/7/1# 再指定给 D</FONT> </P>

<P>当 然 , 我 们 也 经 常 遇 到 转 换 失 败 的 例 子 : </P>

<P><FONT COLOR="#000099">   Dim I As Integer</FONT> <BR>
<FONT COLOR="#000099">   I = &quot;123A&quot;   ' &quot;123A&quot;
无法转换成整数,将产生错误</FONT> <BR>
<FONT COLOR="#000099">   I = 99999    ' 99999 超过整数的最大值 32767,也會产生错误</FONT>
</P>

<P>在 此 笔 者 想 说 明 几 个 因 为 「 值 」 转 换 所 产 生 的 陷 阱 :
</P>

<P><FONT COLOR="#CC0000">◆ 值转换之陷阱一</FONT> </P>

<P><FONT COLOR="#000099">   Dim L As Long, I As Integer, J As Integer</FONT>
<BR>
<FONT COLOR="#000099">   L = I * J</FONT> </P>

<P>以 上 的 「 L = I*J」 , 乍 看 之 下 并 没 有 问 题 , 因 为 I 及 J
为 整 数 , 均 占 有 2 bytes, 而 L 为 长 整 数 , 占 有 4 bytes, 因 此
I*J 怎 样 也 不 會 超 过 L 的 数 值 范 围 , 但 实 际 上 , 当  I*J>32767
或 I*J<-32768 时 , 就 會 产 生 「 溢 位 」 , 这 是 怎 麼 一 回 事 呢
? </P>

<P>L=I*J 虽 然 只 是 一 个 简 单 的 运 算 式 , 但 对 电 脑 而 言 , 却
至 少 包 含 以 下 的 运 算 过 程 : <BR>
</P>

<UL>
<P><FONT COLOR="#990000">(1) I*J, 然 後 将 结 果 储 存 於 「 暂 存 记 忆
体 」 中 。</FONT> <BR>
<FONT COLOR="#990000">(2) 将 「 暂 存 记 忆 体 」 的 值 指 定 给 L。</FONT></P>
</UL>

<P>由 於 I 及 J 均 为 整 数 型 别 , 因 此 在 以 上 的 运 算 过 程 中 ,
系 统 也 會 配 置 与 整 数 型 别 等 大 小 的 「 暂 存 记 忆 体 」 来 储
存 I*J 的 结 果 , 而 如 果 I*J 超 出 整 数 型 别 的 范 围 (-32768 ̄ 32767),
则 暂 存 於 「 暂 存 记 忆 体 」 时 就 會 产 生 「 溢 位 」 的 错 误 。
解 决 的 方 法 十 分 简 单 , 只 要 将 I 或 J 的 数 值 强 制 转 换 成 长
整 数 , 再 作 运 算 即 可 , 例 如 : </P>

<UL>
<P><FONT COLOR="#000099">L = CLng(I) * J</FONT> </P>
</UL>

<P>以 上 的 CLng 函 数 就 是 将 数 值 强 制 转 换 成 Long(长 整 数 )型
别 的 函 数 , 由 於 CLng(I) 为 一 长 整 数 , 因 此 系 统 进 行  CLng(I)*J
运 算 时 , 會 配 置 与 长 整 数 型 别 等 大 小 的 「 暂 存 记 忆 体 」
来 储 存 CLng(I)*J 运 算 的 结 果 , 如 此 一 来 , 就 不 會 产 生 「 溢
位 」 的 错 误 了 。 除 了 CLng 函 数 之 外 , 常 用 的 数 值 型 别 资
料 转 换 函 数 还 有 : <BR>
</P>

<CENTER><TABLE BORDER=1 CELLSPACING=0 >
<TR>
<TD>CByte</TD>

<TD>强制转换成 Byte 型别</TD>
</TR>

<TR>
<TD>CCur</TD>

<TD>强制转换成 Currency 型别</TD>
</TR>

<TR>
<TD>CDbl</TD>

<TD>强制转换成 Double 型别</TD>
</TR>

<TR>
<TD>CDec</TD>

<TD>强制转换成 Decimal 型别</TD>
</TR>

<TR>
<TD>CInt</TD>

<TD>强制转换成 Integer 型别</TD>
</TR>

<TR>
<TD>CSng</TD>

<TD>强制转换成 Single 型别</TD>
</TR>
</TABLE></CENTER>

<P><FONT COLOR="#CC0000">◆ 值转换之陷阱二</FONT> </P>

<P> <FONT COLOR="#000099">  Dim X1, X2, X3</FONT> </P>

<P><FONT COLOR="#000099">   X1 = &quot;12&quot;</FONT> <BR>
<FONT COLOR="#000099">   X2 = &quot;34&quot;</FONT> <BR>
<FONT COLOR="#000099">   X3 = 34</FONT> <BR>
<FONT COLOR="#000099">   Print X1 + X2 ' 结果等於 &quot;1234&quot;</FONT>
<BR>
<FONT COLOR="#000099">   Print X1 + X3 ' 结果等於 46</FONT> </P>

<P>以 上 的 X1、 X2、 及 X3 都 是 「 不 定 型 」 变 数 , 而 执 行 前 三
个 叙 述 之 後 , 它 们 的 「 资 料 型 别 」 元 素 分 别 等 於 : </P>

<P><FONT COLOR="#000099">   X1:字串</FONT> <BR>
<FONT COLOR="#000099">   X2:字串</FONT> <BR>
<FONT COLOR="#000099">   X3:整数</FONT> </P>

<P>因 此 接 下 来 的 X1+X2 将 被 视 为 字 串 的 串 接 , 所 以 结 果 等
於 &quot;1234&quot;, 但 X1+X3, 由 於 X3 等 於 34, 为 一 整 数 , 所
以 X1 的 值 會 由 &quot;12&quot; 转 换 成 12 再 与 34 相 加 , 所 以 得
到 46 的 结 果 。 </P>

<P>此 一 陷 阱 虽 然 很 容 易 识 破 , 但 也 很 容 易 疏 忽 , 如 何 防
止 这 种 错 误 , 笔 者 倒 有 个 简 单 的 方 法 : 「 资 料 的 『 串 接
』 一 律 使 用 '&amp;' 号 , 而 不 使 用 '+' 号 , 『 数 值 』 的 运 算
须 先 确 认 被 运 算 的 资 料 是 否 为 数 值 型 别 , 若 不 是 数 值 型
别 , 则 利 用 Val 函 数 将 资 料 转 换 成 数 值 」 , 例 如 : </P>

<UL>
<P><FONT COLOR="#000099">X1 = &quot;12&quot;</FONT> <BR>
<FONT COLOR="#000099">X2 = &quot;34&quot;</FONT> <BR>
<FONT COLOR="#000099">X3 = 34</FONT> <BR>
<FONT COLOR="#000099">Print X1 &amp; X3 ' 资料串接,结果等於 &quot;1234&quot;</FONT>
<BR>
<FONT COLOR="#000099">Print Val(X1) + Val(X2) ' 数值相加,结果等於 46</FONT>
<BR>
 </P>
</UL>
</UL>

<H3><U>复合式资料</U></H3>

<UL>
<P>复 合 式 资 料 指 的 是 由 多 笔 或 多 项 基 本 资 料 所 组 成 的 资
料 , 典 型 的 代 表 有 「 阵 列 」 及 「 结 构 型 资 料 」 。 如 果 以
变 数 的 四 个 组 成 元 素 来 解 析 阵 列 , 则 可 以 表 示 成 图 -6:</P>

<CENTER><P><A HREF="43-6.gif">图-6 阵列与变数的四个组成元素</A> </P></CENTER>

<P>阵 列 其 实 是 很 简 单 的 资 料 结 构 , 以 上 面 的 X 阵 列 为 例
, 我 们 可 以 将 它 视 为 X(1)、 X(2)… 、 X(N) 等 变 数 的 集 合 体 。
</P>

<P>接 著 让 我 们 来 看 结 构 型 的 资 料 , 假 设 有 一 结 构 型 变 数 
X 其 结 构 如 下 : </P>

<P><FONT COLOR="#000099">   Type StructX</FONT> <BR>
<FONT COLOR="#000099">       I As Integer</FONT> <BR>
<FONT COLOR="#000099">       S As String</FONT> <BR>
<FONT COLOR="#000099">       D As Date</FONT> <BR>
<FONT COLOR="#000099">   End Type</FONT> <BR>
<FONT COLOR="#000099">   Dim X As StructX</FONT> </P>

<P>若 表 示 成 「 变 数 的 四 个 组 成 元 素 」 , 则 如 图 -7:</P>

<CENTER><P><A HREF="43-7.gif">图-7 结构型变数与变数的四个元素</A> </P></CENTER>

<P>在 以 上 的 结 构 型 变 数 中 , 一 共 含 有 4 个 「 名 称 」 元 素 
─ X、 X.I、 X.S、 及 X.D, 值 得 注 意 的 是 I、 S、 D 为 X 的 资 料 成
员 , 因 此 不 能 直 接 使 用 I、 S、 D 的 名 称 来 存 取  I、 S、 D。
<BR>
 </P>
</UL>

<H2><A NAME="S1"></A><FONT COLOR="#0000FF">物 件</FONT></H2>

<UL>
<P>笔 者 过 去 经 常 在 Run!PC 讨 论 物 件 导 向 技 术 , 也 许 您 已 经
听 过 资 讯 隐 藏 (information hiding)、 资 料 萃 取 (data abstraction)、
继 承 (inheritance)、 多 型 (polymorphism)… 等 技 术 名 词 , 今 天 笔
者 想 抛 开 这 些 名 词 , 从 变 数 的 四 个 组 成 元 素 来 看 物 件 。
</P>

<P>首 先 请 看 以 下 叙 述 : </P>

<P><FONT COLOR="#000099">   Dim X As Integer</FONT> <BR>
<FONT COLOR="#000099">   Dim OX As Object</FONT> </P>

<P>以 上 的 X 变 数 与 OX 变 数 有 何 区 别 呢 ? 如 果 我 们 利 用  VB
内 建 的 函 数 IsObject 来 检 验 以 上 两 个 变 数 , 结 果 IsObject(X)
传 回 False, 而 IsObject(OX) 则 传 回 True, 这 表 示 OX 为 一 「 物 件
」 变 数 , 而 X 只 是 普 通 变 数 。 但 笔 者 必 须 特 别 强 调 一 点
, 物 件 变 数 也 是 由 变 数 的 四 个 元 素 所 组 成 的 , 如 图 -8:
</P>

<CENTER><P><A HREF="43-8.gif">图-8 即使是「物件」变数,也一样含有变数的四个元素</A>
</P></CENTER>

<P>物 件 变 数 最 特 别 的 地 方 在 於 「 值 」 元 素 , 对 一 般 变 数
而 言 , 「 值 」 元 素 會 纪 录 著 该 变 数 的 值 , 但 对 物 件 变 数
而 言 , 却 记 录 著 「 具 体 物 件 」 之 位 址 , 如 图 -9:</P>

<CENTER><P><A HREF="43-9.gif">图-9 物件变数的「值」元素是用来记录具体物件的位址</A>
</P></CENTER>

<P>而 特 别 值 得 注 意 的 是 , 当 我 们 利 用 「 Dim OX As Object」 宣
告 一 个 物 件 变 数 时 , OX 并 不 包 含 图 -9中 的 「 具 体 物 件 」
。 <BR>
 </P>
</UL>

<H3><U>建立具体物件的几个方法</U></H3>

<UL>
<P>在 VB 程 式 中 有 以 下 几 种 方 法 可 以 让 物 件 变 数 含 有 「 具
体 物 件 」 :<BR>
</P>

<TABLE BORDER=1 CELLSPACING=0 >
<TR VALIGN=TOP>
<TD>方法一:</TD>

<TD>Dim OX1 As Object     <BR>
Set OX1 = New ClassName</TD>
</TR>

<TR>
<TD>方法二:</TD>

<TD>Dim OX1 As New ClassName</TD>
</TR>

<TR VALIGN=TOP>
<TD>方法三:</TD>

<TD>Dim OX2 As Object     <BR>
Set OX2 = OX1</TD>
</TR>

<TR VALIGN=TOP>
<TD>方法四:</TD>

<TD>Dim OX3 As Object     <BR>
Set OX3 = 建立具体物件的函数 </TD>
</TR>
</TABLE>

<P><BR>
<BR>
兹 说 明 如 下 : </P>

<P><FONT COLOR="#CC0000">◆ 建立具体物件方法一</FONT> </P>

<P>方 法 一 的 两 个 叙 述 可 分 解 如 图 -10:</P>

<CENTER><P><A HREF="43-10.gif">图-10 建立具体物件〈方法一〉解析图</A> </P></CENTER>

<P>在 方 法 一 之 中 , 比 较 值 得 注 意 的 是 New 保 留 字 , 此 一 保
留 字 的 作 用 是 建 立 一 个 ClassName 类 型 的 具 体 物 件 , 而  ClassName
必 须 是 已 存 在 之 「 物 件 类 别 」 (class), 举 例 来 说 , Collection

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -