⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uwdm.pas

📁 本文件是一个CGI类型的WEB应用程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -