急急急急!!!!怎么样把DELPHI做的COM中得到的数据集返回到ASP中 !高手救我 (200分)

  • 主题发起人 主题发起人 一剑封喉
  • 开始时间 开始时间

一剑封喉

Unregistered / Unconfirmed
GUEST, unregistred user!
例如 :
COM中的语句这样写 :
function TASP_WebServ1.QueryTable(const TableName: WideString): WideString;
begin
if (TableName <> '') then
try
FDM.QR1.Close;
FDM.QR1.SQL.Add('Select * from '+TableName);
FDM.QR1.Open;
//将数据表中的内容返回为HTML表格代码
FDM.DSTP1.Columns.Clear;
FDM.DSTP1.DataSet := FDM.QR1;
Result := FDM.DSTP1.Content;
except
on E:Exception do
Response.Write(E.Message);
end;
end;

在ASP中
Set DelphiASPObj = Server.CreateObject("Project1.ASP_WebServ1")

问题 :DelphiASPObj 在创建之后,得到了从COM中的返回数据,可是我怎么能够象
处理ASP中例如set rs=server.createobject("adodb.recordset")这样的处理方法
最后对DelphiASPObj 进行循环呀,判断呀的处理呢?
 
怎么没有人知道呢?是不明白还是不会呀 !
 
你定义一个记录集,然后返回记录集才可以吧,看见你用WideString返回?
 
是呀,我也是这样想的,那在COM中到底定义成什么样的类型呢?
 
* VARIANT类型;
你可以返回一个自己写的类,该类封装了对TDATASET的几个主要的操作。
 
能不能详细点,比如说我查询了一个数据集用* VARIANT
返回了,那么在ASP中怎么写,才能把这些数据按照一定条件显示出来呢?
 
首先我也没这么写过!
你自己写个对象,ASP中返回这个对象。这个对象有什么方法就调用什么方法。
比如你可以写一个
mydata=classs
procedure readdata
procedure writedata
end;
asp中:
tmpobj=server.create("project1.mydata")
tmpobj.readdata;
tmpobj.writedata;
老兄,这东西不会复杂的,你在看看AUTOMATION的内容吧!打字没办法把所有的内容说清楚的

 
ReallyFail 兄,谢谢了,可是我还不明白,比如,如果不用COM 在ASP中可以这样写
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
set rs=server.createobject("adodb.recordset")
sql="SELECT * FROM tablename WHERE name = '"+name+"'"
rs.open sql,conn,1,1
可是现在我把SQL的操作都放到了COM 里,在ASP中只得到了这个数据集
我要对这个数据集进行处理比如FOR循环,比如查看它的个数,条件的显示它的数据
要求就象处理上面的RS那样可以做到这些操作,所以,您说的我还是不太明白
能不能给我个例子,或者发到我的邮箱里ld001@fun.21cn.com非常感谢,因为实在是太
急了!
 
你可以在你的Project1.ASP_WebServ1定义一个特性(Property):
MyDataSet,类型为Variant;
然后在访问它的方法中如下实现:
var
FADODateSet:TADODataset;
.....
function Tmytest.Get_MyDataset: OleVariant;
begin
Result := FADODateSet.Recordset;
end;
这样你就相当返回了一个ADODB.Recordset型的接口,
与createobject("adodb.recordset")得到的接口是一样的,可以进行操作了.
 
rs他也是种AUTOMATION对象!你的数据集如果不以对象返回的话你打算以什么形式返回?
既然以一个ATUOMATION对象的形式返回给ASP调用,那你可以写一个操作TDATASET的的
对象!然后在ASP中操作这个东东,其实真的不复杂的,你把几个概念搞清楚以后就很简单了。
你既然能写COM来操作SQL,那就表示你完全没问题的。
你在考虑考虑这个语句
rs=conn.execute(asql)//RS这个对象就是由CONNECTION的一个方法返回的,不用CREATEOBJ了
你要做的可能就是根据需要来写一个操作TDATASET的RS!!!

5:30以后我才下班!我的QQ是15266553;
 
xeen大虾说的也很有道理!按他那样做更简单!!
 
xeen,ReallyFail两位大侠,多谢帮助,其实很简单,呵呵,只是没有想明白
我用的是ADOQUERY返回的adoquery.recordset其实就是和rs=createobject("adodb.recordset")
的RS是一样的,真的有点愚了,不用做任何特殊的处理的。希望大家别象我这样!
再次感谢!
 
多人接受答案了。
 
后退
顶部