在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Delphi Note 源数据库: 名称:info 字段:idd、namee、age、sex、city、department、position 目标数据库: 名称:leave 字段:idd、namee、type 1、 修改操作。(原代码) CREATE TRIGGER test_upd on info FOR UPDATE AS if update(namee) update leave set leave.namee=i.namee from inserted i where leave.idd=i.idd 2、 删除操作。(原代码) CREATE TRIGGER test_del on [info] FOR DELETE AS declare @id char(10) select @id= idd from deleted delete from leave where idd=@id 3、 插入操作。(原代码) CREATE TRIGGER test_INS ON info FOR INSERT AS insert into leave (idd,namee) SELECT i.idd,i.namee FROM inserted i 2、ADO的认识Microsoft的数据存取技术演变: 1、 ODBC仅支持关系数据库,以及传统的数据库类型,无法符合日渐复杂的数据存取应用,也无法让脚本语言使用,。 2、 DAO。Microsoft为能让程序员存取Access数据库,产生了DAO(Data Access Object),能够存取Xbase的数据库及Excel文件,并且结ODBC存取关系数据库。但去目的是存取Access数据库,因此只对Access数据库非常有效率,先已处于维护状态。 3、 RDO。由于DAO在结合ODBC存取关系数据库时表现的不好,所以Microsoft推出了RDO,不过目前也逐渐被放弃了。 4、 OLE-DB是很底层化的,使用复杂的,可以存取传统的关系数据库、Excel文件、Email或Internet/Intranet上的电子签名信息。 5、 ADO成功的封装了OLE-DB的大部分功能,可以让应用程序或WEB应用程序存取各种不通的数据源。大大简化了数据存取工作。 3、Tdatabase、TUpdateSql组件的作用。Tdatabase是BDE与Query和Table连接的中间通道。这样程序修改时,只要修改Datebase的属性就可以了。通过其Database的属性设定公用的别名。 TupdateSql是用来进行网络数据库数据的修改。Query1.Applyupdates;Query1.CommitUpdates;另外,被修改的Server端数据库表要有key。 4、开发Activex控件。<一>转换ActiveX控件 第一步 选择菜单File的New项,出现项目对话框,选择Activex页,选择ActiveX Control。 第二步 在出现的向导对话框(ActiveX Control Wizard)中,从控件列表中选择转换的控件。 第三步 注册ActiveX。选择菜单Run—Register ActiveX Server。即生成一个OCX文件,存储于当前路径。 第四步 Web配置选项。选择菜单Project—Web deployment—Option。设定路径。 第五步 生成HTML文档。选择菜单Project—Web Deploy。然后,在HTML dir所指示的目录下,外面可以看到HTML文件已经生成。 <二>开发新的ActiveX控件 第一步 建立一个ActiveX Form。选择菜单File—New,出现项目对话框,选择Activex页,选择ActiveForm。 第二步 在ActiveForm Wizard对话框中输入各种名称。 第三步 在ActiveX Wizard上,加入控件,譬如加入一个Button、一个Image组件,在button的OnClick事件中,有如下的处理: Image1.Canvas.Ellipse(0,0,Image1.Width,Image1.Height); 第四步 编译。按Ctrl+F9组合健,或选择Projiect—CompileFormProj1。 第五步 注册ActiveX,生成OCX文件,选择菜单Run—Register ActiveX Server。 第六步 Web配置选项。选择菜单Project—Web Deploy。 第七步 生成HTML文档。选择菜单Project—Web Deploy。
5、恢复SQL的.mdf及.log文件。EXEC sp_attach_db @dbname = N'AAA', //AAA为要建立的数据库名 @filename1 = N'c:"ooo"aaa.mdf', @filename2 = N'c:"ooo"aaa_log.ldf' 6、bmp及jpg的转换和数据库中bmp、jpg格式图形的存储。Demo1: var blobstream:tblobstream;
demo2: var
7、控制EXCEL全面控制 Excel 8、将EXCEL表中的数据导入到库中
程序中实现的办法:
9、取得字段的属性找了一些以前写过的代码 : 10、在query中检索记录if query1.Locate('ID','A001',[loCaseInsensitive])then begin showmessage('有重复记录。'); 注意:lacate执行后会将Query的属性置回到readonly状态。 所以query1.Edit要放在locate后。
11、把程序加进windows的“启动”中
procedure TFrmAbout.WriteRegAutoRun(FileName:string);
var
Regf:TRegistry;
begin
Regf:=TRegistry.Create;
Regf.RootKey:=HKEY_LOCAL_MACHINE;
if Length(FileName)>0 then
try
RegF.OpenKey('SOFTWARE"Microsoft"Windows"CurrentVersion"Run',false);
RegF.WriteString('YourProgram',FileName);
except
end;
RegF.CloseKey;
RegF.Free;
end;
十二、控制Word启动Word时用如下代码:
判断Word是否运行 先在Form上添加一个Server组件中的WordApplication,命名为WordApplication1,然后在"关闭WORD"按扭中输入如下代码:
如何输出到Word 如果用的是MICROSOFT 旗下的数据库管理系统生成的表例如*.DBF等,可以通过OLE技术直接在WORD文档中显示完整的数据表。
控制Word var
可以参考以下代码:
procedure PrintReport4(DSR, AJXZ, CFSJ, JBAQ: PChar); stdcall;
var
Word, Doc, Fields:OleVariant;
begin
Word:=CreateOleObject('Word.Application');
Word.Visible:=True;
Word.Documents.Add('C:"Customs"案件呈报表'); Doc := Word.ActiveDocument;
Fields := Doc.FormFields;
Fields.Item('DSR').Result := String(DSR);
Fields.Item('AJXZ').Result := String(AJXZ);
Fields.Item('CFSJ').Result := String(CFSJ);
Fields.Item('JBAQ').Result := String(JBAQ);
end;
其中案件呈报表就是word模版文件。
打开WORD文档的一段程序
uses ComObj ;
procedure TForm1.Button1Click(Sender: TObject);
var
vWord,vDoc,vRange : Variant ;
sText,sReplace : string ;
lReturn : Boolean ;
begin
sText := 'ABCDEFG' ; //原文字串 sReplace := 'GFEDCBA' ; //新字串 vWord := CreateOleObject('Word.Application') ;//创建Word线程 try
//打开要操作的文件 vDoc := vWord.Documents.Open('C:"My Documents"AAAc.Doc');
vDoc.Select ; //选取中整个文档 vRange := vDoc.Range ; //替换范围 lReturn := True ;
while lReturn do
begin //找到并替代成功则返回 True 共11个参数 lReturn := vDoc.Range.Find.Execute(sText,,,,,,,,,sReplace,True) ;
end ;
finally
vDoc.Close(True) ; //关闭文并保存 vWord.Quit(False) ; //退出Word end ;
end;
Delphi 3 下通过。 控制WORD文档的一段程序
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,OleCtnrs,ComObj;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
ED_WenHao: TEdit;
ED_BiaoTi: TEdit;
ED_ShouWenDanWei: TEdit;
ED_ZhenWen: TMemo;
ED_FaWenDanWei: TEdit;
Btn_PrintToWord: TButton;
Btn_Quit: TButton;
procedure Btn_PrintToWordClick(Sender: TObject);
procedure Btn_QuitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
//开始:数据发送到 word事件 procedure TForm1.Btn_PrintToWordClick(Sender: TObject);
vAR
VarWord: Variant;// 创建 WORD时所用 begin
try
// 1. 建立 OleObject,连接 word97 VarWord:=CreateOleObject('word.basic');
// 2. 建立 Word97的新文件 VarWord.FileNew;
// 3. 设置 Word97的基本状态 VarWord.ViewZoom75; //设置显示比例为 75% VarWord.ViewPage; //改为页面显示方式 // 4. 将当前数据控件上的信息发送至 Word97 // 4.1 发送文号数据 VarWord.CenterPara; //居中 Varword.font('宋体 '); //设置字体 VarWord.FontSize(14); //设置字号 varword.insert(#13+#13+ ED_WenHao.Text+#13+#13+#13);
// 4.2 发送标题数据 VarWord.font('黑体 '); VarWord.Fontsize(16);
VarWord.insert( ED_BiaoTi.text+#13);
// 4.3 发送收文单位数据 VarWord.LeftPara; //左对齐 VarWord.Font('宋体 '); VarWord.fontSize(14);
VarWord.Insert(#13+ ED_ShouWenDanWei.Text+': '+#13); // 4.5 发送正文数据 VarWord.fontSize(14);
VarWord.Insert( ED_ZhenWen.Text+#13);
// 4.6 发送发文单位数据 VarWord.RightPara; //右对齐 VarWord.fontSize(14);
VarWord.Insert( ED_FaWenDanWei.Text+#13);
// 5 最后设置 VarWord.StartOfdocument; //到文首 VarWord.AppMaxiMize; //设置窗口最大化 VarWord.AppShow; //显示应用程序 except
showmessage('运行 Microsoft Word 失败! '); end; //end of try
end;
//end:数据发送到 word事件 //开始:窗口关闭事件 procedure TForm1.Btn_QuitClick(Sender: TObject);
begin
close;
end;
//End:窗口关闭事件 end.
// 这是主程序的尾部
!我保证你们看到以下的用法一定爽歪歪了!!!
这可是我三天工作的结果。唔。。。
---看最后终结者office。 --------------------------------
如果你们用的office97的server控件,那么用office2000时就要把server上的控件换掉。
做法:
1。在Componet里打开Install Packages..... 2.去掉borland sample automation server components 3.在project中点input type Library.... 4.点add加入office2000的类库。(在Microsoft Office/office目录下的) 5。反正是什么Excel9.olb , Msword9.olb 和那些*.olb的东东,有excel的,word的,等。。。 6。palette page:改为servers(因为以前的office的控件完完了) 7。点install就好了。 这样office2000的问题我想应解决了。(如果你用的是什么word.application或excel.application 的控件的话)。
-----------
我的建议:
先用上面一的方法,再用comobj对象。 use comobj, excel_tlb; //excel_tlb 是新excel控件的pas文件,你把新控件放在窗体上看它用的哪个.pas就好了,当然下面要把这个控件去掉。因为comobj不用这个控件。只用这个.pas如excel_tlb中的函数。 var xl:variant;
在事件里写:
xl:=createoleobject('Excel.Application');
然后打开excel或word录一个宏命令,并打开宏命令考入代码。
----以下是宏录下来的宏。 workbooks.add
Range("C5:D7").Select
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3"
-------
现在把它改为以下:
xl.workbooks.add;
xl.workbooks.add('d:"test.xls');
xl.Range['C5:D7'].Select;
xl.Sheets['Sheet2'].Select;
xl.ActiveWindow.SelectedSheets.Delete;
xl.Charts.Add;
xl.ActiveChart.ChartType := xlColumnClustered;
xl.ActiveChart.Location(xlLocationAsObject,'Sheet3');
现在运行一下,我保证你们爽歪歪!
看到规律了吗?
前面加上对象名,()改[],= 改:=,有参数时直接用,后加; 。哈哈,满意了吧,
用office的宏命令可是不用你去想编程的,全是手动。这样少写了一大堆代码。
bbcoll 如有不明白的朋友讨论可:[email protected]
、存入
procedure TForm1.Button1Click(Sender: TObject);
var
CurST:TStringStream;
Filename:string;
begin
if OpenDialog1.Execute then
begin
Filename:=OpenDialog1.FileName;
wordOleContainer.CreateObjectFromFile(FileName, False);
CurST := tstringstream.create('');
wordOleContainer.savetostream(CurST);
ADOTable1.Append;
ADOTable1.FieldByName('doc').AsVariant:=CurST.datastring;
ADOTable1.Post;
CurST.free;
wordOleContainer.DestroyObject;
end; }
end;
//读出 procedure TForm1.BitBtn1Click(Sender: TObject);
var
CurItemStream:TStringStream;
CurItem:Variant;
begin
CurItem:=aDOTable1.FieldByName('doc').AsVariant;
CurItemStream:= TStringstream.create(CurItem);
CurItemStream.position:=0;
wordOleContainer.loadfromstream(CurItemStream);
CurItemStream.free;
wordOleContainer.SaveAsDocument('temp.rtf');
wordOleContainer.DestroyObject;
sleep(5000);
richedit1.lines.loadfromfile('temp.rtf');//此处读出rtf可能是乱码,请查看delphi //richedit demo
end;
sql server中用image或是text字段都行,可以保存任何文件类型,读出时还可以改名 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论