📄 uwdm.pas
字号:
unit uwdm;
interface
uses
SysUtils, Classes, HTTPApp, HTTPProd, DB, DBWeb, ADODB, DBTables,
DBClient;
type
TWebModule1 = class(TWebModule)
pplogin: TPageProducer;
ADOConnection1: TADOConnection;
Session1: TSession;
Tcategory: TADOTable;
tbooks: TADOTable;
qquerybooks: TADOQuery;
dstpquerybooks: TDataSetTableProducer;
qquerybooksbookid: TWideStringField;
qquerybookstitle: TWideStringField;
qquerybooksauthor: TWideStringField;
qquerybookspublisher: TWideStringField;
qquerybooksPubDate: TDateTimeField;
qquerybooksISBN: TWideStringField;
qquerybooksPrice: TBCDField;
qquerybooksversion: TWideStringField;
qquerybookscateid: TWideStringField;
qquerybooksbookseller: TWideStringField;
qquerybookscontent: TMemoField;
qquerybookscheck_tx: TStringField;
qselect: TADOQuery;
dstpselect: TDataSetTableProducer;
qpost: TADOQuery;
dstpqpost: TDataSetTableProducer;
ppselecting: TPageProducer;
pppost: TPageProducer;
ppqueryselect: TPageProducer;
query: TADOQuery;
ppmain: TPageProducer;
qselectDSDesigner: TAutoIncField;
qselectbookid: TWideStringField;
qselectuserid: TWideStringField;
qselectlink_tx: TStringField;
qpostDSDesigner: TAutoIncField;
qpostbookid: TWideStringField;
qpostuserid: TWideStringField;
qpostprodid_tx: TStringField;
qselectlpauthor: TStringField;
qselectlppublisher: TStringField;
qpostlpauthor: TStringField;
qpostlppublisher: TStringField;
qpostlptitle: TStringField;
qselectlptitle: TStringField;
querybookdetail: TADOQuery;
ppquerybookdetail: TPageProducer;
qquerybookshref_title: TStringField;
querybookdetailbookid: TWideStringField;
querybookdetailtitle: TWideStringField;
querybookdetailauthor: TWideStringField;
querybookdetailpublisher: TWideStringField;
querybookdetailPubDate: TDateTimeField;
querybookdetailISBN: TWideStringField;
querybookdetailPrice: TBCDField;
querybookdetailversion: TWideStringField;
querybookdetailcateid: TWideStringField;
querybookdetailbookseller: TWideStringField;
querybookdetailcontent: TMemoField;
cdsquerybooks: TClientDataSet;
cdsquerybookscdsQueryNewsField1: TDateTimeField;
cdsquerybookscdsQueryNewsField2: TStringField;
cdsquerybookscheck_tx: TStringField;
cdsquerybooksauthor_tx: TStringField;
cdsquerybookstitle_tx: TStringField;
cdsquerybookspublisher_tx: TStringField;
procedure ppselectingHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings;
var ReplaceText: String);
// procedure qqueryproductCalcFields(DataSet: TDataSet);
procedure ppqueryselectHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings;
var ReplaceText: String);
procedure qselectCalcFields(DataSet: TDataSet);
procedure pppostHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings;
var ReplaceText: String);
procedure qpostCalcFields(DataSet: TDataSet);
procedure WebModule1loginAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure qquerybooksCalcFields(DataSet: TDataSet);
procedure WebModule1postnewuserAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1selectingAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1querycategoryAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1selectbooksAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1queryselectAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1deleteitemAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1postbooksAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure WebModule1postallAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure ppquerybookdetailHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings;
var ReplaceText: String);
procedure WebModule1querybookdetailAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1booksAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure cdsquerybooksCalcFields(DataSet: TDataSet);
private
{ Private declarations }
ct,p:Integer;
USER_ID,CATE_ID:String;
ParamList:TStringList;
function GenCATEGORYSelectHTML: String; //产生图书分类查询组合框
function GenbooksGridHTML: String; //产生征订书目列表
public
{ Public declarations }
function Login(INPUT: OleVariant): OleVariant; safecall;//处理用户登录
function PostNewUser(INPUT: OleVariant): OleVariant; safecall;//用户注册
function selecting(INPUT: OleVariant): OleVariant; safecall; //返回选择书目列表页面
function selectbooks(INPUT1, INPUT2: OleVariant): OleVariant; safecall; //将用户选择的书目存入临时数据表中
function QuerybookDetails(INPUT: OleVariant): OleVariant; //查询每本书的详细情况
function Queryselect(INPUT: OleVariant): OleVariant; safecall; //查看图书单
function DeleteItem(INPUT: OleVariant): OleVariant; safecall;//删除图书单中的书目记录
function postbooks(INPUT: OleVariant): OleVariant; safecall;//返回最终提交数目给图书馆的页面
function Postall(INPUT,input1: OleVariant): OleVariant; safecall;//将所有选定的书目提交给图书馆
end;
var
WebModule1: TWebModule1;
input:olevariant;//保存客户端传递的所有信息
Const
PAGES_MAX=1; //分页后,每页显示的记录数目,为了演示,这里设置为1
URL_PATH='http://localhost/netbook/pCgiDemo.exe';
implementation
uses Variants;//引用VarArrayCreate方法
{$R *.dfm}
//查询书目详细信息
function Twebmodule1.QuerybookDetails(INPUT: OleVariant): OleVariant;
begin
with querybookdetail do
begin
Close;
parameters.ParamByName('book_id').Value:=INPUT;
Open;
end;
Result:=ppQuerybookdetail.Content;
end;
//==========================================
//用户登录程序
function TWebModule1.Login(INPUT: OleVariant): OleVariant;
begin
with Query do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM USERS ');
SQL.Add('WHERE USERID=:USER_ID');
Parameters.ParamByName('USER_ID').Value:=INPUT[0];
Open;
if RecordCount=0 then Result:=1 //不存在该用户
else if FieldByName('password').AsString<>INPUT[1] then Result:=2 //密码错误
else Result:=0; //都正确
end;
end;
// *********************** 用户注册 ***************************
// 把新用户注册数据写入数据库内
function TWebModule1.PostNewUser(INPUT: OleVariant): OleVariant;
var p:TStringList;
i:Integer;
begin
try
p:=TStringList.Create;
p.Text:=INPUT;
with Query do
begin
// 先判断代码是否重复
Close;
parameters.Clear;
SQL.Clear;
SQL.Add('SELECT USERID FROM USERS WHERE USERID=:USER_ID');
parameters.ParamByName('USER_ID').Value:=p.Values['USER_ID'];
Open;
if RecordCount>0 then
begin
Result:='您输入的用户代码已经被其它人使用,请回上一页重新输入!';
p.Free;
Exit;
end;
Close;
Parameters.Clear;
SQL.Clear;
SQL.Add('INSERT INTO USERS VALUES(:USER_ID,:NAME_TX,:PASS_TX,:SEX_TX,:PHONE_TX,:FAX_TX,:EMAIL_TX,:ADDR_TX)');
for i:=0 to p.Count-1 do
parameters.ParamByName(p.Names[i]).Value:=p.Values[p.Names[i]];
ExecSQL;
end;
p.Free;
Result:='注册成功,请登录!<P>'+ppLogin.Content;
except
on e:exception do
Result:='错误:<p>'+e.message+'<p>'+'注册失败,请重新注册!<P>'+ppLogin.Content;
end;
end;
// 产生「 图书分类 」字段的组合框HTML CODE
function TWebModule1.GenCATEGORYSelectHTML: String;
begin
Result:='<SELECT NAME="cate_ID">';
with tCATEGORY do
begin
Open;
First;
while not Eof do
begin
Result:=Result+'<OPTION VALUE="'+
FieldByName('CATeID').AsString+
'">'+FieldByName('CATEtext').AsString+
'</OPTION>';
Next;
end;
Close;
end;
end;
// 产生[征订书目列表]的 HTML CODE
function TWebModule1.GenbooksGridHTML: String;
var
currentpage,i,pages,r:integer;
t1,t2:string;
begin
currentpage:=p;
with qQuerybooks do
begin
Close;
parameters.ParamByName('CATE_ID').Value:=CATE_ID;
Open;
first;
pages:=recordcount div pages_max;
if (recordcount mod pages_max)>0 then inc(pages);
r:=( currentpage-1)*pages_max;
moveby(r);
//============将当前的pages_max条记录存入临时表中=========
cdsquerybooks.Close;
cdsquerybooks.CreateDataSet;
for i:=1 to pages_max do
begin
if not eof then
begin
cdsquerybooks.Insert;
cdsquerybooks.Fields[1].Value:=fieldbyname('bookid').Value;
cdsquerybooks.Fields[0].Value:=now;
end;
next;
end;
cdsquerybooks.First;
//产生分页链接
t2:='<center>';
t2:=t2+' 共有'+inttostr(qQuerybooks.recordcount)+'条 页次:';
for i:=1 to pages do
begin
if i=currentpage then t1:='<b><I>'+inttostr(i)+'</I></B>'
else t1:=inttostr(i);
t2:=t2+'<a href="'+url_path+'/books?p='+inttostr(i)+'">'
+t1+'</a> ';
end;
t2:=t2+'</center>';
end;
Result:=dstpQuerybooks.Content+t2;
end;
//产生进入征询图书默认页面
function TWebModule1.selecting(INPUT: OleVariant): OleVariant;
begin
CATE_ID:=INPUT;
Result:=ppselecting.Content;
end;
// 把用户选中的书目写入图书单中,也就是存入临时数据表中
function TWebModule1.selectbooks(INPUT1, INPUT2: OleVariant): OleVariant;
var i:Integer;
begin
ParamList:=TStringList.Create;
ParamList.Text:=INPUT2;
with Query do
begin
Close;
parameters.Clear;
SQL.Clear;
SQL.Add('INSERT INTO TEMPbooks (USERID,bookID)');
SQL.Add(' VALUES(:USER_ID,:PROD_ID)');
for i:=0 to ParamList.Count-2 do
begin
parameters.ParamByName('USER_ID').value:=INPUT1;
parameters.ParamByName('PROD_ID').value:=ParamList.Values[ParamList.Names[i]];
ExecSQL;
end;
end;
ParamList.Free;
end;
// 查询图书单
function TWebModule1.Queryselect(INPUT: OleVariant): OleVariant;
begin
tbooks.Open;
with qselect do
begin
Close;
parameters.ParamByName('USER_ID').Value:=INPUT;
Open;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -