能否定义一个通用过程建立查询
编号:QA004416
建立日期: 2001年9月18日 最后修改日期:2001年9月18日
所属类别:
wushx_ah:
问题1:能否定义一个通用过程建立查询?
我想定义一个通用过程来建立查询,以便从不同表中选取不同字段,但在引用该过程时总是出错,我该怎么办?(我已参阅过贵站相关问题:QA004332 "如何在存储过程中使用变量代替表名"。)
过程如下:
Private Sub OpenRecSet(xRec As Recordset, yRec As Recordset, _
xConn As Connection, xField As Field)
xRec.Open "select" & xField & "from " & yRec, xConn, _
adOpenStatic, adLockReadOnly
End Sub
我引用格式为如下(cn为模块级变量系主窗体中建立的活动连接,rs也是模块级变量):
OpenRecSet rs, projinfo, cn, projname '(引用1)
OpenRecSet rs, cn!projinfo, cn, projname '(引用2)
第一种引用方式提示说变量或with块变量未定义,projinfo高亮显示。我觉得projname作为变量是过程本身定义的,难道还得再次定义?但我在引用过程之前将projname声明为field也不行。
第二种引用方式提示说错误的参数号和无效的属性赋值,在cn!projinfo处高亮显示。
问题2:ADO连接数据库(不通过控件仅通过代码,ACCESS97)用数据库引擎jet.oledb 3.51时,查询结果可在datagrid(未使用DAO控件,下同)中正常显示,但改为4.0时不能显示在datagrid中,但可查到结果(能显示在flexgrid中),但我又不想用flexgrid,因其无记录选择器且查询结果无法更改(用text控件结合更改太麻烦)。我的问题是:
A:用3.51引擎制作安装程序后在其他机器上无法正常运行(ADO找不到提供者),我参考贵站错误信息中的相关解答,但不明白如何可以不带SP3制作安装程序(在哪里可找到相关设置,我从未下载过相关升级包)。
B:如果用4.0连接又该如何使查询结果正常显示?
C:在使用datagrid控件后制作安装程序时为什么与其相关的DLL有很多?可以去除一些吗?哪些DLL是win98系统本身就有的?
D:另在加载工程部件时部件对话框中许多控件后括弧中的SP3、SP4是何意思?
E:Flexgrid控件能否用代码在窗体载入时就设定某列的宽度?
回答:
关于第一个问题:我认为是可以这样用的,只是你的这个句字的写法好象有些不对,要注意“空格”的运用,你可以在调试窗口将你的这句话运行至此的结果打印出来看一下就明白了。这样写就比较好
xRec.Open " select " & xField & " from " & yRec, xConn, adOpenStatic, adLockReadOnly
第二个问题:请说得更清楚一点,这里我可以粗略说一下,DAO350.dll要正确运行还需要他的另外两个文件,并且要安装要自注册;E:Flexgrid控件能够用代码在窗体载入时就设定某列的宽度,请自己看一下控件参考手册(参考QA002429 "如何设置DBGrid列的宽度")。
主持人注:
问题C:因为DataGrid是基于ADO的,需要很多DLL支持,如果删除其中的某个DLL,可能会导致程序在某些系统中无法运行,所以最好不要去除DLL。
问题D请参考QA001156 "VB中的sp2,sp3,企业版这三种各代表什么含义"。
此问题由贺兴伟回答。
| |
|
|
| |
|
|