📄 20010612001.htm
字号:
<table align=center width=620>
<tbody>
<tr>
<td class=a14>'访问计数器</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>dim Zcount</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>Zcount=RS_COUNT("Count")</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>Zcount = Zcount + 1</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>RS_COUNT("Count").Value=Zcount</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>RS_COUNT.Update</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>RS_COUNT.Close</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>开始怀疑这一段后面有写入操作,所以不能正确执行,但经过仔细比较和测试,发现问题不在是否写入上。这一段的代码主要是用了ASP访问Access数据库时直接填入数据库名的方法,而没有使用SQL语句,我们把打开数据库的地方改为“select
* from 表名”,程序遂工作正常。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>结论:编程时应该尽量使用通用性好的方法,这样对于系统的通用性、可移植性来说,还是很重要的。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14><b>四、ODBC的问题</b></td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>在C++Builder中有的地方要用到SQL查询,因此,有一段程序使用的是ADOQuery控件,本来这种用法在其他机器上用过,没有问题,可是在这里却不行。具体情况如下:放置一个ADOQuery,ConnectionString属性、TableName属性和前面的ADOTable属性设置一样,Active属性保持false,再添加一个DataSource控件和几个DBText控件,设置同前。然后在FormCreate(表单构造函数)中添加如下代码:</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->Active=false;</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->SQL->Clear();</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->SQL->Add("select * from Names order
by ID");</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->Active=true;</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>while (!ADOQuery1->Eof)</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>{</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>ComboBox1->Items->Add(ADOQuery1->FieldByName("Name")->AsString);</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->Next();</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>}</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>//后一段</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->Active=false;</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->SQL->Clear();</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->SQL->Add("select * from Dutys order
by ID");</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->Active=true;</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>while (!ADOQuery1->Eof)</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>{</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>ComboBox2->Items->Add(ADOQuery1->FieldByName("Duty")->AsString);</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>ADOQuery1->Next();</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>}</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>就这么一段代码,在该机器上怎么都不能运行,系统总是提示“BOF或EOF中有一个为真。。。。”的错误,将注释后面的一段删掉,系统可以运行,但退出程序时出现非法错误,说明是带故障运行。反复查看找不出程序的明显错误,把程序拿到其他机器上可以通过,两个机器的最主要差别就是ODBC的版本不同。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>于是想将ODBC降为2.5英文版,找到MDAC2.5版安装了几次都不行,只好手工删除了,在WINDOWS目录中搜索出所有前缀为ODBC的文件,然后删除program
files\common files中的system目录,再重新安装MDAC(Microsoft Data Access Component
2.5英文版),再运行该程序,一切正常。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>结论:不知道是MDAC2.6版本的问题,还是因为它是中文版的问题,总之,造成系统的兼容性不是很好,建议大家在编程时也应该尽量使用已经熟悉的环境,而不要总是去尝试太新的东东。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>当然,如果是我这一段代码有问题,还希望有高手能出来指导。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>以上是我们在一次数据库系统的移植开发过程中出现问题和解决方法的真实记录,虽然问题都很小,但是让我们在开发过程中走了不少弯路,所以把它记录下来,供大家参考,希望对朋友们的开发有所帮助。其中的问题也希望有朋友能够指出更好的解决办法。</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -