没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2004-02-18 11:45:00.000|阅读 1089 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
由于Delphi在开发数据库应用系统中具有的强大的功能和极高的效率,所以笔者开发ASP组件较常用的是Delphi 5.0(当然也可采用Visual Basic或VC++开发ASP组件),Delphi本身在Internet和InternetExpress两个组件面板提供了众多的组件可以直接生成Web页面,但是这些组件都缺少网页中数据显示常见的分页功能。众所周知,ASP是通过建立ADO连接数据库后建立RecordSet对象,然后利用RecordSet的AbsolutePage进行页面定位,而在Delphi 5.0中,已提供了ADO组件封装了Microsoft的ADO库,所以同样具有页面定位功能。下面笔者将分步来开发一个通用的显示分页Web页面的ASP组件。
第一步:新建一个Activex Library,命名为PadoPage,然后再新建一个Active Server Object Class,命名为AdoPage,即建立了一个名为AdoPage的ASP组件,文件命名为Adopage.pas。
第二步:打开Type Library,新建一个方法Get_Page,然后在Get_Page加入一个参数Pconnandsgl,用于传递数据库连接语句和SQL语句,参数选择为BSTR类型。
第三步:新建一个DataModule,放入Adoconnection组件和AdoQuery组件,将Data Module命名为AdoDataModule。由于新建立的组件中的方法Get_Page要从DataModule中取得数据,所以需在Adopage.pas的Uses子句中加入AdoDataModule,然后声明一个数据模块的变量fadodm,同时加入Initialize和Destroy这两个方法,以便在ASP组作中生成数据模块。Adopage.pas具体代码如下所示:
unit Adopage;
interface
uses
ComObj, SysUtils, Classes, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule;
//将AdoDataModule加入USE子句
type
T Adopage = class(TASPObject, Ibasedata)
private
fadodm:TAdoDataModuleform;
protected
procedure OnEndPage; safecall;
procedure OnStartPage(const AScriptingContext: IUnknown); safecall;
procedure get_page(const pconnandsql: WideString); safecall;
public
procedure initialize;override;
destructor destroy;override;
end;
implementation
uses ComServ,forms;
destructor Tadopage.destroy;
begin
inherited;
fadodm.Destroy;
end;
procedure Tadopage.initialize;
begin
inherited;
fadodm:=tadodmform.Create(forms.application);
end;
第四步:建立通用的分页显示数据的方法get_page,具体代码如下:
procedure Tadopage.get_page(const pconnandsql: WideString);
var i,j,n:integer;
connstr,sqlstr:widestring;
rs:_recordset;
cur_url:widestring;
page_no:integer;
begin
//首先从传递过来的参数中分别取出连接串和SQL语句
pconnandsql:=uppercase(pconnandsql);
i:=pos('CONNSTR',pconnandsql);
j:=pos('SQLSTR',pconnandsql);
if i=0 or j=0 then
begin
response.write('数据库连接串或SQL语句错误!');
abort;
end;
for n:=I+8 to j-1 do
connstr:=connstr+pconnandsql[n];
for n:=j+7 to length(pconnandsql) do
sqlstr:=sqlstr+pconnandsql[n];
//将取得的连接串和SQL语句分别赋给ADOconnection和ADOQuery
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
//以下为打开数据库并进行分页的过程
try
fadodm.adoquery1.open;
//打开数据库
rs:=fadodm.adoquery1.recordset;
//取得当前打开页面的URL和页码
try
if request.servervariable['url'].count>0 then
cur_url:= request.servervariable.item['url'];
if request.querystring['page_no'].count>0 then
page_no:=request.querystring.item['page_no']
else
page_no:=1;
except
end;
rs.pagesize:=20;
//每页设为20行
rs.AbsolutePage:=page_no;
//页面定位
response.write('共'+inttostr(rs.pagecount)+'页& ');
response.write('第'+inttostr(page_no)+'页& ');
//对每个页码建立超链接
for i:=1 to rs.pagecount do
response.write('<a href="'+cur_url+'?page_no='+inttostr(i)+'">'
+inttostr(i)+'</a>');
//数据记录按表格显示
response.write('<table>');
//取得表格标题
response.write('<tr>');
for I:=0 to fadodm.adoquery1.fields.count-1 do
response.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');
response.write('</tr>');
j:=1
with fadodm.adoquery1 do
while (not eof) and j<=rs.pagesize do
begin
response.write('<tr>');
//取得表格内容
for i:=1 to fields.count do
response.write('<td>'+fields[i].asstring+'</td>');
response.write('</tr>');
next;
end;
response.write('</table>');
fadodm.adoquery1.close;
except
response.write('数据出错啦!');
end;
end;
以上即为取得通用分页数据的过程,需要注意的是编译时部分函数会出错,只需在USES子句中加入sysutils、classes和adodb单元即可。
第五步:编译并注册adopage组件,即可在ASP代码中调用,调用示例如下:
<%
dim webpageobj
set webpageobj=server.createobject("padopage.adopage")
webpageobj.get_page("conn=provider=SQLOLEDB.1;presist security info=false;
user id=sa;initical catalog=sale_data;data source=(local),
sqlstr=selectfrom customer")
%>
通过以上步骤,我们就顺利地利用Delphi开发出了具有分页功能的ASP组件了。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号