谁来帮我解决这个cgi问题?(50分)

  • 主题发起人 主题发起人 elan
  • 开始时间 开始时间
E

elan

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在cgi中实现数据库功能,但只要我在webmodule中放置了table控件,甚至还没有编写关于数据库的代码,这样编译的cgi程序就使怎么也不能运行。服务器报告运行出错。但我一把table控件删掉就有运行正常了。这是怎么回事?
 
我想在cgi中实现数据库功能,但只要我在webmodule中放置了table控件,甚至还
没有编写关于数据库的代码,这样编译的cgi程序就使怎么也不能运行。服务器报
告运行出错。但我一把table控件删掉就有运行正常了。这是怎么回事?

不好意思,忘了换行了
 
我已经找到问题了,只要把table的active属性设为false就行了。但是这也说明
数据库打开失败了。我使用下面的语句:

procedure TWebModule1.WebModule1WebDefaultAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.Content:='<HTML><HEAD><BODY>hELLO</BODY></HEAD></HTML>';

Table1.Active := False;
try
Table1.DatabaseName := 'memdb';
{或者 Table1.DatabaseName := 'e:/dadatsets'; }
Table1.TableName := 'memdata.db';
Table1.open;
Table1.Active := True;
except
on EDatabaseError do
begin
Response.Content:='<HTML><HEAD><BODY>open failed</BODY></HEAD></HTML>';
end;
end;

在浏览器中总是返回open failed,但是如果我直接运行的话则返回"hello",这
是怎么回事?我的数据库什么地方设错了?
 
这里虽然不是错误原因,但是可能有问题:
Table1.open;
Table1.Active := True;

为什么打开两次?


 
建议你在webmodule中加一个TDatabase,用TDatabase连接你的数据库试一把。
 
to cAkk:
Table1.open; 或
Table1.Active := True; 的效果都是一样的。

to DJ:
我用:
Database1.DatabaseName := 'memdata.db';
Database1.AliasName := 'memdb';
Database1.Connected := True;
Table1.DatabaseName := Database1.DatabaseName;
Table1.TableName := 'memdata.db';
Table1.Active := True;
还是得到同样的结果;会不会跟服务器的设置有关系?我的这个数据库是放在 scripts 目录下的。
 
在98下用pws就好了,我faint!
 
后退
顶部