1 ///////////////////////////////////////////////
2 //
3 //Éè¼Æ±àÂ룺Úùηη
4 //¿ª·¢Ê±¼ä£º2012-8
5 //¹¦ÄÜÃèÊö£ºµ¼ÈëÉú²úÊý¾Ý£¨txtÎļþÓÉÉú²ú³µ¼äµ¼³ö¸øÎÒÃÇ£©£¬Í³¼Æ¡¢Éú²úExcelÎļþ
6 //
7 ///////////////////////////////////////////////
8 unit Unit1;
9
10 interface
11
12 uses
13 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,StrUtils,
14 Dialogs, Menus, Grids, DBGrids, StdCtrls,UnitCon,ADODB, DB, ExtCtrls,GIFImage,ComObj;
15
16 type
17 TForm1 = class(TForm)
18 DBGrid1: TDBGrid;
19 MainMenu: TMainMenu;
20 rewrw1: TMenuItem;
21 N1: TMenuItem;
22 N2: TMenuItem;
23 O1: TMenuItem;
24 N3: TMenuItem;
25 DlgOpenTxt: TOpenDialog;
26 N4: TMenuItem;
27 guia1: TMenuItem;
28 LabShow: TLabel;
29 DataSource1: TDataSource;
30 N5: TMenuItem;
31 LabInfo: TLabel;
32 N6: TMenuItem;
33 Panel1: TPanel;
34 Button1: TButton;
35 Edit1: TEdit;
36 Edit2: TEdit;
37 Edit3: TEdit;
38 Edit4: TEdit;
39 Label1: TLabel;
40 Label2: TLabel;
41 Label3: TLabel;
42 Label4: TLabel;
43 Label5: TLabel;
44 BtnExport: TButton;
45 PanelLine: TPanel;
46 procedure N2Click(Sender: TObject);
47 procedure N1Click(Sender: TObject);
48 procedure guia1Click(Sender: TObject);
49 procedure FormCreate(Sender: TObject);
50 procedure N3Click(Sender: TObject);
51 procedure N5Click(Sender: TObject);
52 procedure TJ();
53 procedure createData(const sql :string);
54 procedure N6Click(Sender: TObject);
55 procedure Button1Click(Sender: TObject);
56 procedure BtnExportClick(Sender: TObject); //²úÉúеÄÊý¾Ýµ½±íÀ´Ë¹¦ÄÜÊÇÈ¥³ýguidÖØ¸´µÄÖµ¡¿
57 private
58 { Private declarations }
59 public
60 { Public declarations }
61 end;
62
63 var
64 Form1: TForm1;
65 PubCon : TADOConnection;
66 PubRs : TADODataSet;
67 constr : string;
68 img : TImage; //µ¼ÈëÎı¾ÎļþÊǵ͝»Óõ½
69 alreadyCount:Boolean; //alreadyCount=true±íʾÓû§µ¥»÷ÁË¡°¿ªÊ¼Í³¼Æ¡±²Ëµ¥
70 GridRows:Integer; //µã»÷¡°µ¼³öÊý¾Ý¡±°´Å¥µÄ¼Ç¼¸öÊý
71 ReportWitch:Integer; // ReportWitch=1±íʾµ¼³ö¡°¿ªÊ¼Í³¼Æ¡±²Ëµ¥µÄÊý¾Ý£¬ReportWitch=2±íʾµ¼³ö¡°²éѯͳ¼Æ¡±²Ëµ¥µÄÊý¾Ý
72 implementation
73
74 {$R *.dfm}
75
76 procedure TForm1.N2Click(Sender: TObject);
77 begin
78 Application.Terminate();
79 end;
80
81 procedure TForm1.N1Click(Sender: TObject);
82 var
83 myop :TDB;
84 b:Boolean;
85 begin
86 DlgOpenTxt.Filter :='Îı¾Îļþ|*.txt';
87 b:=DlgOpenTxt.Execute();
88 if b then
89 begin
90 LabInfo.Visible:=True;
91 img.Visible:=True;
92 myop:=TDB.Create();
93 myop.ReadToDB(DlgOpenTxt.FileName,PubCon);
94 LabInfo.Visible:=false;
95 img.Visible:=False;
96 ShowMessage('µ¼Èë³É¹¦£¡');
97 end;
98 end;
99
100 procedure TForm1.guia1Click(Sender: TObject);
101 var msg:pchar;
102 begin
103 msg:= #10+'ÒÁÀû¼¯ÍÅÄÌ·ÛÊÂÒµ²¿ ' +#10+#10+ '¿ª·¢£ºÚùηη …e…d'+#10;
104 MessageBox(Handle,msg,'¹ØÓÚ',0);
105 end;
106
107 procedure TForm1.FormCreate(Sender: TObject);
108 var
109 myop:TDB;
110 gif : TGIFImage;
111 begin
112 Application.Title:='Éú²úÊý¾Ýͳ¼Æ';
113 self.DBGrid1.Hide;
114 PubCon:=TADOConnection.Create(nil);
115 PubRs:=TADODataSet.Create(nil);
116 constr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'\productDB.mdb;Persist Security Info=False';
117 myop:=TDB.Create();
118 myop.CreateCon(constr,PubCon);
119 PubRs:=TADODataSet.Create(nil);
120
121 //****************************************
122 Img := TImage.Create(Self);
123 Img.Parent := Self;
124 Img.SetBounds(80, 5, 140, 200);
125
126 gif := TGIFImage.Create;
127 gif.LoadFromFile(ExtractFilePath(Application.ExeName)+'\001.gif');
128 Img.Picture.Assign(Gif);
129 TGIFImage(Img.Picture.Graphic).Animate := True;
130 Img.Visible:=false;
131 LabInfo.Visible:=False;
132
133 Panel1.Visible:=False;
134
135 alreadyCount:=False;
136 end;
137
138 procedure TForm1.N3Click(Sender: TObject);
139 var
140 myop:TDB;
141 sql:string;
142 sqlcn:string;
143 begin
144 Panel1.Visible:=False;
145 sql :='select cn as ÊýÁ¿,T.guid as ·À´Ü»õÂë,tray as ÍÐÅÌÂë from ';
146 sql := sql + '(SELECT count(*) as cn,guid FROM ProductData group by guid)T inner join ';
147 sql := sql + '(select distinct guid,tray from ProductData)T2 ON T.guid=T2.guid';
148 Self.DBGrid1.Show;
149 createData(sql); //ͨ¹ýÉÏÃæµÄsql±äÁ¿Éú²ú´´½¨myTable±í
150 myop:=TDB.Create();
151
152 sqlcn:='SELECT Mid(code,1,2) AS ²úÆ·±àÂë, Mid(code,3,2) AS Éú²úÏß, Mid(code,5,6) AS ÈÕÆÚ, Mid(code,11,1) AS °à×é,cn as ²úÆ·Êý ';
153 sqlcn:=sqlcn + 'FROM (SELECT mid(·À´Ü»õÂë,1,11) as code, count(*) AS cn FROM myTable GROUP BY mid(·À´Ü»õÂë,1,11))';
154
155 myop.RunSelSQL(sqlcn,PubCon,PubRs);
156 PubRs.Active:=True;
157 DataSource1.DataSet:=PubRs;
158 DBGrid1.DataSource :=DataSource1;
159 DBGrid1.Columns[0].Width:=100;
160 DBGrid1.Columns[1].Width:=100;
161 DBGrid1.Columns[2].Width:=100;
162 DBGrid1.Columns[3].Width:=100;
163 DBGrid1.Columns[4].Width:=100;
164
165 alreadyCount:=True;
166 GridRows:=PubRs.RecordCount;
167 ReportWitch:=1;
168 end;
169
170 procedure TForm1.N5Click(Sender: TObject);
171 var
172 n:integer;
173 myop:TDB;
174 begin
175 n:=MessageBox(Self.Handle,'ÊÇ·ñÇå³ýµ¼ÈëµÄÊý¾Ý£¿','Ìáʾ£º',4);
176 //ShowMessage(IntToStr(n));
177 if n=6 then
178 begin
179 myop:=TDB.Create();
180 myop.RunSQL('delete from ProductData',PubCon);
181 ShowMessage('Êý¾ÝÒѾȫ²¿Çå³ý£¡');
182 end;
183 end;
184
185 procedure TForm1.TJ();
186 var
187 sql:string;
188 myop:TDB;
189 Rs : TADODataSet;
190 begin
191 sql :='select count(*) from (select cn as ÊýÁ¿,T.guid as ·À´Ü»õÂë,tray as ÍÐÅÌÂë,printCode as ´òÓ¡ÅúºÅ,realCode as ʵ¼ÊÅúºÅ,outDate as Êý¾Ýµ¼³öÈÕÆÚ from ';
192 sql := sql + '(SELECT count(*) as cn,guid FROM ProductData group by guid)T inner join ';
193 sql := sql + '(select distinct guid,tray,PrintCode,RealCode,outDate from ProductData)T2 ON T.guid=T2.guid)tnt';
194
195 myop:=TDB.Create();
196 Rs:=TADODataSet.Create(nil);
197 myop.RunSelSQL(sql,PubCon,Rs);
198 Rs.Free;
199 end;
200
201 procedure TForm1.createData(const sql :string);
202 var
203 //Rs : TADODataSet;
204 myop: TDB;
205 newsql:string;
206 begin
207 //Rs := TADODataSet.Create(nil);
208 myop:=TDB.Create;
209 newsql:='select * into myTable from(' + sql + ')';
210 myop.RunSQL('drop table myTable',PubCon);
211 myop.RunSQL(newsql,PubCon);
212 end;
213 procedure TForm1.N6Click(Sender: TObject);
214 begin
215 //·¶µÂÈø·¢·Å
216 if alreadyCount then
217 begin
218 Panel1.Visible:=true;
219 DBGrid1.Visible:=True;
220 ReportWitch:=2;
221 end
222 else
223 ShowMessage('ÇëÏȵã»÷¡°¿ªÊ¼Í³¼Æ¡±²Ëµ¥£¡');
224
225 end;
226
227 procedure TForm1.Button1Click(Sender: TObject);
228 var
229 txt1,txt2,txt3,txt4:string;
230 sql:string;
231 where,where2 :string;
232 n:Integer;
233 myop:TDB;
234 begin
235 n:=5;
236 txt1:=Trim(Edit1.Text);
237 txt2:=Trim(Edit2.Text);
238 txt3:=Trim(Edit3.Text);
239 txt4:=Trim(Edit4.Text);
240 if (txt1='') and (txt2='') and (txt3='') and (txt4='') then
241 begin
242 ShowMessage('ÇëÊäÈëÒª²éѯµÄÌõ¼þ£¡');
243 exit;
244 end;
245
246 sql:='select * from myTable ';
247 where:='where';
248 if (txt1<>'') then
249 begin
250 where:=where + ' mid(·À´Ü»õÂë,1,2)=''' + txt1 + ''' and ';
251 n:=n+4;
252 end;
253 if (txt2<>'') then
254 begin
255 where:=where + ' mid(·À´Ü»õÂë,3,2)=''' + txt2 + ''' and ';
256 n:=n+4;
257 end;
258 if (txt3<>'') then
259 begin
260 where:=where + ' mid(·À´Ü»õÂë,5,6)=''' + txt3 + ''' and ';
261 n:=n+4;
262 end;
263 if (txt4<>'') then
264 begin
265 where:=where + ' mid(·À´Ü»õÂë,11,1)=''' + txt4 + ''' and ';
266 n:=n+4;
267 end;
268 where2 := LeftStr(where,Length(where)-n);
269
270 sql:=sql + where2;
271 //ShowMessage(sql);
272 myop:=TDB.Create;
273 myop.RunSelSQL(sql,PubCon,PubRs);
274 PubRs.Active:=True;
275 DataSource1.DataSet:=PubRs;
276 DBGrid1.DataSource :=DataSource1;
277 myop.Free;
278 GridRows:=PubRs.RecordCount;
279 end;
280
281 procedure TForm1.BtnExportClick(Sender: TObject);
282 var
283 excel,WorkBook:OleVariant;
284 rows,cols,i,j:Integer;
285 begin
286 excel:=CreateOLEObject('Excel.Application');
287 WorkBook:=excel.workbooks.add;
288 //excel.sheets[0].range['A1:C1'].merge(true);
289 //excel.Sheets[1].Cells[1,1].Value :='²¿ÃűàÂë±í' ;
290
291 cols:=DBGrid1.Columns.Count;
292 rows :=GridRows;
293 if ReportWitch=1 then
294 begin
295 excel.Sheets[1].Cells[1,1].Value :='²úÆ·±àÂë';
296 excel.Sheets[1].Cells[1,2].Value :='Éú²úÏß';
297 excel.Sheets[1].Cells[1,3].Value :='ÈÕÆÚ';
298 excel.Sheets[1].Cells[1,4].Value :='°à×é';
299 excel.Sheets[1].Cells[1,5].Value :='²úÆ·Êý';
300 end
301 else if ReportWitch=2 then
302 begin
303 excel.Sheets[1].Cells[1,1].Value :='ÊýÁ¿';
304 excel.Sheets[1].Cells[1,2].Value :='·À´Ü»õÂë';
305 excel.Sheets[1].Cells[1,3].Value :='ÍÐÅÌÂë';
306 end;
307
308
309 try
310 for i:=1 to rows do
311 begin
312 for j:=0 to cols-1 do
313 begin
314 DBGrid1.DataSource.DataSet.RecNo := i;
315 excel.Sheets[1].Cells[i+1,j+1].Value := '''' + vartostr(DBGrid1.DataSource.DataSet.Fields[j].Value);
316 end;
317 end;
318 except
319 end;
320
321 DlgOpenTxt.Filter:='ExcelÎļþ2007|*.xlsx|ExcelÎļþ2003|*.xls';
322 if DlgOpenTxt.Execute then
323 begin
324 excel.ActiveWorkbook.SaveAs(DlgOpenTxt.FileName);
325 end;
326
327 excel.quit;
328 end;
329
330 end.