****ActiveForm与数据库相连的问题(曙光已现)**** (200分)

D

ditdot

Unregistered / Unconfirmed
GUEST, unregistred user!
用ASP写一个B/S架构的软件,一些ASP网页中包含与数据库相关的ActiveForm(包含ADOConnection控件),我想问能不能在设计期不指定他的connectstring属性值的,
而是在运行期指定,我做了如下操作,但失败了,请高手指点。
对ActiveForm增加属性fmxstr,自动生成get_fmxstr及set_fmxstr,填写如下代码
function tActiveForm.get_fmxstr:widestring;
begin
Result:=fmxstr;
end;

procedure tActiveForm.set_fmxstr(value:widestring);
begin
fmxstr:=value;
end;

网页中写:
<OBJECT
id="numinfmX"
classid="clsid:280C9280-83D4-4553-8781-8A6F378F42F8"
codebase="http:///activex/activeform1.inf"
width=494
height=275
align=center
hspace=0
vspace=0>
</OBJECT>
.............
<SCRIPT language="VBScript">
numinfmX.fmxstr="Provider=SQLOLEDB.1;Password=admin;Persist Security Info=False;User ID=sa;Initial Catalog=myDB;Data Source=127.0.0.1/ZX"
</Script>
另外脚本中把numinfmX.fmxstr="...."写成numinfmX.set_fmxstr("....");也不行。
请指教。
 
你可以把那个属性值在
<object>中的<param>标记里赋值阿!
 
你可以在Activex libary中定義連接參數, 在<object></object>之間給參數值就行!
 
例如:
<PARAM NAME=fmxstr VALUE="Provider=SQLOLEDB.1;Password=admin;Persist
Security Info=False;User ID=sa;Initial Catalog=myDB;Data Source=127.0.0.1/ZX"
 
改写set方法:
procedure tActiveForm.set_fmxstr(value:widestring);
begin
fmxstr:=value;
if FADOConnection.Connected then
FADOConnection.Connected:=False;
FADOConnection.ConnectionSTring:=fmxstr
end;
 
>>LeeChange
又一次得到你的帮助,谢谢!我马上试,稍后回复。
>>P_W_Q, &amp
wqthai
在<object></object>之中使用参数也是我一直想作到的,
但如何在Activex libary中定义参数?是不是就是对ActiveForm增加一个属性?
 
>>LeeChange
我试了一下FADOConnection这里报错:Undeclared identifier:"FADOConnection".
?????????
 
哎呀,FADOConnection是我随便起的名字,你的程序里总有个ADOConnection控件吧,换成他的名字就可以了。
 
我试过。就是你在type library中声明的property阿!
然后在网页里的<param>标记里赋值即可阿!!!
 
昨天晚上和今天上午都在试,一直不行,浏览器中出现
一个报错的对话框,标题:“Iexplore”,
内容:“未找到提供程序,该程序可能未正确安装”。
以下是我的操作,请帮忙看一下,错在哪了
新增属性后,在*_TLB库文件中自动生成:
InuminfmX = interface(IDispatch)
['{9598EF5E-F1A5-4F04-97B6-7089F48F2348}']
...........
function Get_fmzconstr: WideString
safecall;
procedure Set_fmzconstr(const Value: WideString)
safecall;
.............
property fmzconstr: WideString read Get_fmzconstr write Set_fmzconstr;
............
.............
.............
property fmzconstr: WideString dispid 18;
............
published
property fmzconstr: WideString index 18 read GetWideStringProp write SetWideStringProp stored False;
在代码文件中输入:
function TnuminfmX.Get_fmzconstr: WideString;
begin
Result:=ADOConnection1.ConnectionString
//手动输入
end;

procedure TnuminfmX.Set_fmzconstr(const Value: WideString);
begin
if ADOConnection1.Connected then //手动输入
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:=Value;
end;
在网页文件中:
<OBJECT
classid="clsid:280C9280-83D4-4553-8781-8A6F378F42F8"
codebase="http://...../activex/numinfmProj1.ocx#version=1,0,0,0"
width=494
height=275
align=center
hspace=0
vspace=0>
<param name="fmzconstr" value="Provider=SQLOLEDB.1;Password=admin;Persist Security Info=True;User ID=sa;Initial
Catalog=mydb;Data Source=127.0.0.1/ZX">
</OBJECT>
错哪了?
新增属性是否错误?总觉得不象。
除了上述两个手动输入的地方,新增属性时是否还有其他需要手动输入代码的地方。
<param name="....."中是否是新增属性的名字?
 
好贴子,收藏先, LeeChange大哥是偶们的好榜样!
 
“未找到提供程序,该程序可能未正确安装”
看来是发布出了问题,你先把dll拷贝到目标机上手工注册后试试看.
 
>>LeeChange
是不是我错了,我这里生成的文件中只有*.ocx和*.htm,没有*.dll
另外我的程序在设计期中直接写connectionstring就没有问题,但在新增属性后用属性来做
就出问题了。
帮忙看一下上面我贴出的程序,哪错了?
 
本地注册*.ocx,试试,activeform技术是很神奇,一直不懂,
 
呵呵,ocx和dll都可以封装控件,你本地手工注册ocx试试.
 
原先*.ocx文件的注册的确出了点问题。
不过向activeform传递adoconnectionstring的障碍还是在于:
activeform总是先创建,再接受传入的参数。
所以用以上各位说的办法,传入一般的参数可以,但要打算传入adoconnectionstring则一定失败。
 
你分析一下传入的内容那里不对不就行了
 
>>wfzha
或许你没有看清我贴出的帖子,
问题的关键不在传入的内容、方法是否正确,而在于activeform总是先创建,
再接受传入的参数。
 
我就是用这种方式给连接串赋值的,没问题呀
不过我的ADOConnection在一个datamodule中
在Activeform创建时,先创建datamodule,
然后在属性中赋值的
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
817
SUNSTONE的Delphi笔记
S
顶部