请教大家,下面这些程序都是用的都是什么语言?共三段
第一篇 com.txt
××××××××××××××××××
unit BuildExcel_Unit;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, ActiveX, Classes, ComObj, BuildExcel_TLB, StdVcl,IniFiles,AdoDB,DB,
Variants,Sysutils;
type
TUpdateExcel = class(TTypedComObject, IUpdateExcel)
private
function WriteExcel(TableName, xlsName: String): String;
protected
function UpdateExcel(const TableName, ExcelName: WideString;
out v_Err: WideString): HResult; stdcall;
{Declare IUpdateExcel methods here}
end;
implementation
uses ComServ;
function TUpdateExcel.UpdateExcel(const TableName, ExcelName: WideString;
out v_Err: WideString): HResult;
begin
v_Err:=WriteExcel(TableName,ExcelName);
Result:=0;
end;
function TUpdateExcel.WriteExcel(TableName, xlsName: String): String;
Var
Excel:OleVariant;
RowNo:Integer;
ColNo:Integer;
FileName:String;
Buf:Array[0..Max_Path] Of Char;
Ret:Integer;
Ini:TIniFile;
Query:TAdoQuery;
IDeasPath:String;
begin
Query:=TAdoQuery.Create(nil);
Ret:=GetSystemDirectory(Buf,MAX_PATH);
FileName:=Copy(Buf,1,Ret)+'\cscw.ini';
Ini:=TIniFile.Create(FileName);
Query.ConnectionString:=Ini.ReadString('Agent','DBConnect','');
IDeasPath:=Ini.ReadString('Agent','IdeasPath','c:\');
Ini.Free;
Query.Close;
Query.SQL.Text:='Select * From '+TableName;
Try
Query.Active:=True;
Except
On E:Exception Do
Begin
Result:=E.Message;
Exit;
End;
End;
Try
Excel:=CreateOleObject('Excel.Application');
Except
On E:Exception Do
Begin
Result:='创建Excel对象错误:'+E.Message;
Exit;
End;
End;
Try
Result:='写入Excel失败';
If (Length(IDeasPath)>0) Then
Begin
If Copy(IDeasPath,Length(IDeasPath),1)<>'\' Then
IDeasPath:=IDeasPath+'\';
End;
Excel.WorkBooks.Open(IDeasPath+xlsName);
Excel.ActiveWorkBook.Sheets[1].Select;
RowNo:=3;
While Not Query.Eof Do
Begin
For ColNo:=2 To Query.FieldCount-1 Do
Excel.ActiveSheet.Cells[RowNo,ColNo+1]:=Query.Fields[ColNo].AsString;
Query.Next;
Inc(RowNo);
End;
Excel.ActiveWorkBook.Save;
Excel.Visible:=True;
Result:='';
Finally
Excel.Quit;
Excel:=Null;
Query.Close;
Query.Free;
Result:='';
End;
end;
initialization
TTypedComObjectFactory.Create(ComServer, TUpdateExcel, Class_UpdateExcel,
ciMultiInstance, tmApartment);
end.
××××××××××××××××××××××××
第二段ISAPI.txt
unit DM_Unit;
interface
uses
SysUtils, Classes, HTTPApp,WinSock,Windows, ADODB, DB,BuildExcel_TLB,IniFiles;
type
TSStatus=(SSBUSY,SSFREE,SSLOCK);
TWebMD = class(TWebModule)
PubConn: TADOConnection;
Query: TADOQuery;
AdoCmd: TADOCommand;
procedure WebMDFormCommitAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure WebModuleCreate(Sender: TObject);
procedure WebModuleException(Sender: TObject; E: Exception;
var Handled: Boolean);
private
{ Private declarations }
v_UserName:String;
v_Remark:String;
function StartSocket(Addr:String;Port:Word): Boolean;
Function SCloseSocket():Boolean;
Function CheckStatus:TSStatus;
Function UpdatePDM(TableName:String;Var Err:String):Boolean;
Function UpdateDB(Request: TWebRequest;Var TableName:String):Boolean;
Procedure MakeResponse(Response:TWebResponse;v_ErrData:String);
public
{ Public declarations }
end;
var
WebMD: TWebMD;
sClient:TSocket;
ServerIP:String;
ServerPort:Word;
TimeOut:Integer;
IDeasPath:String;
VrmlPath:String;
implementation
{$R *.dfm}
{ TWebMD }
Function SendData(Addr:String;Port:Word;Data:String):String; //socket 数据发送
Var
Ret,Times:Integer;
Buf:Array[0..511] Of Char;
Begin
Try
Ret:=Send(SClient,PChar(Data)^,Length(Data),0);
If Ret<>Length(Data) Then
Begin
Result:='';
CloseSocket(SClient);
WSACleanup;
Exit;
End;
Ret:=0;
Times:=0;
While Ret=0 Do
Begin
Ret:=Recv(SClient,Buf,SizeOf(Buf),0);
Sleep(10);
Inc(Times);
If Times=TimeOut Then Break;
End;
If Times=TimeOut Then
Result:=''
Else
Result:=Copy(Buf,1,Ret);
Except
On E:Exception Do
Result:=E.Message;
End;
End;
function TWebMD.CheckStatus: TSStatus;
Var
Ret:String;
begin
Result:=SSBUSY;
Ret:=SendData(ServerIP,ServerPort,'C'+#13);
If SameText(Copy(Ret,1,1),'F') Then Result:=SSFREE;
If SameText(Copy(Ret,1,1),'B') Then Result:=SSLOCK;
end;
procedure TWebMD.MakeResponse(Response: TWebResponse; v_ErrData: String);
begin
Response.Content:=v_ErrData;
end;
function TWebMD.SCloseSocket: Boolean;
begin
Try
CloseSocket(SClient);
WSACleanup;
Result:=True;
Except
Result:=False;
End;
end;
function TWebMD.StartSocket(Addr: String; Port: Word): Boolean;
Var
WSAData: TWSAData;
Server:SockAddr_In;
Begin
If WSAStartup(MakeWord(2,2),WSAData)<>0 Then
Begin
Result:=False;
Exit;
End;
SClient:=Socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
If SClient=INVALID_SOCKET Then
Begin
Result:=False;
WSACleanup;
Exit;
End;
Server.sin_family:=AF_INET;
Server.sin_port:=htons(Port);
Server.sin_addr.S_addr:=INet_Addr(PChar(Addr));
If Connect(SClient,Server,SizeOf(Server))=Socket_Error Then
Begin
Result:=False;
WSACleanup;
End
else
Result:=True;
end;
function TWebMD.UpdateDB(Request: TWebRequest;
var TableName: String): Boolean;
Var
v_Sql,v_TableName,v_Field:String;
begin
Result:=False;
If (Request.ContentFields.IndexOfName('TableName')=-1) And
(Request.ContentFields.IndexOfName('UserName')=-1) then Exit;
If Request.ContentFields.IndexOfName('Remark')=-1 Then
v_Remark:=''
Else
v_Remark:=Request.ContentFields.Values['Remark'];
v_UserName:=Request.ContentFields.Values['UserName'];
TableName:=Request.ContentFields.Values['TableName'];
v_TableName:=TableName;
v_Sql:='Select * From '+v_TableName;
Query.Close;
Query.SQL.Text:=v_Sql;
Query.Active:=True;
Try
While Not Query.Eof Do
Begin
v_Field:=Query.FieldByName('Name').AsString;
If Request.ContentFields.IndexOfName(v_Field)<>-1 then
Begin
v_Sql:='Update '+v_TableName+' Set Results='+
Request.ContentFields.Values[v_Field]+
' Where Name='''+v_Field+'''';
AdoCmd.CommandText:=v_Sql;
AdoCmd.Execute;
End;
Query.Next;
End;
Result:=True;
Except
Result:=False;
End;
Query.Close;
end;
function TWebMD.UpdatePDM(TableName:String;Var Err:String): Boolean;
Var
VrmlFile,ExcelFile:String;
begin
Result:=False;
VrmlFile:=VrmlPath+TableName+'.wrl';
If Not FileExists(VrmlFile) Then
Begin
Err:='Vrml文件不存在!';
Exit;
End;
ExcelFile:=VrmlPath+TableName+'.xls';
If Not FileExists(ExcelFile) Then
Begin
Err:='Excel文件不存在!';
Exit;
End;
Try
Query.Close;
Query.SQL.Text:='Select * From PDM Where 1<>1';
Query.Active:=True;
Query.Append;
Query.FieldByName('UserName').AsString:=v_UserName;
Query.FieldByName('PartName').AsString:=TableName;
Query.FieldByName('Remark').AsString:=v_Remark;
TBlobField(Query.FieldByName('Vrml')).LoadFromFile(VrmlFile);
TBlobField(Query.FieldByName('Excel')).LoadFromFile(ExcelFile);
Query.Post;
Result:=True;
Except
On E:Exception Do
Err:=E.Message;
End;
end;
procedure TWebMD.WebMDFormCommitAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
v_Error:String;
v_Content,v_TableName:String;
v_Obj:IUpdateExcel;
v_Err:WideString;
begin
v_Content:='';
v_Error:='';
Try
if Not StartSocket(ServerIP,ServerPort) Then
Begin
v_Error:='建立Socket失败。'; MakeResponse(Response,v_Error); Handled:=True; Exit; End; //检查服务器工作状态 Case CheckStatus Of SSBUSY: Begin v_Error:='服务器正在处理其他业务,请稍候提交。
'; MakeResponse(Response,v_Error); Handled:=True; SCloseSocket; Exit; End; SSLOCK: Begin v_Error:='服务器处于业务锁定状态,请稍候提交。
'; MakeResponse(Response,v_Error); Handled:=True; SCloseSocket; Exit; End; End; //更新数据库 If Not UpdateDB(Request,v_TableName) Then Begin v_Error:='更新数据库失败,请重新操作。
'; MakeResponse(Response,v_Error); SCloseSocket; Handled:=True; Exit; End; //生成Excel v_Obj:=coUpdateExcel.Create; v_Obj.UpdateExcel(v_TableName,v_TableName+'.xls',v_Err); If v_Err<>'' Then Begin MakeResponse(Response,v_Err); Handled:=True; SCloseSocket; v_Obj:=nil; Exit; End; v_Obj:=nil; //执行I-Deas v_Error:=SendData(ServerIP,ServerPort,v_TableName+#13); If v_Error='' Then Begin MakeResponse(Response,v_Error); Handled:=True; SCloseSocket; Exit; End; SCloseSocket; If Not UpdatePDM(v_TableName,v_Error) Then Begin MakeResponse(Response,v_Error); Handled:=True; SCloseSocket; Exit; End; MakeResponse(Response,'Finished'); Handled:=True; Except On E:Exception Do Begin Response.Content:='系统处理错误:'+E.Message; SCloseSocket; Handled:=True; End; End; end; procedure TWebMD.WebModuleCreate(Sender: TObject); Var FileName:String; Buf:Array[0..Max_Path] Of Char; Ret:Integer; Ini:TIniFile; begin Ret:=GetSystemDirectory(Buf,MAX_PATH); FileName:=Copy(Buf,1,Ret)+'\cscw.ini'; Ini:=TIniFile.Create(FileName); ServerIP:=Ini.ReadString('Agent','ServerIP','127.0.0.1'); ServerPort:=Ini.ReadInteger('Agent','ServerPort',10000); PubConn.ConnectionString:=Ini.ReadString('Agent','DBConnect',''); IDeasPath:=Ini.ReadString('Agent','IdeasPath','c:\'); VrmlPath:=Ini.ReadString('Agent','VrmlPath','c:\'); Ini.Free; end; procedure TWebMD.WebModuleException(Sender: TObject; E: Exception; var Handled: Boolean); begin Response.Content:=E.Message; Handled:=True; end; end. 第三段 脚本.sql if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Front]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Front] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PDM]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PDM] GO CREATE TABLE [dbo].[Front] ( [Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [Expression] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Results] [decimal](18, 0) NULL , [Units] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Status] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PDM] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [username] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [partname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [vrml] [image] NULL , [excel] [image] NULL , [remark] [ntext] COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[PDM] ADD CONSTRAINT [PK_PDM] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO 请教这些分别是用什么语言编的 它们是什么意思呢?? 小弟好去图书馆借相关的书籍资料来看懂这些语言 谢谢了