Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Список використаної літератури⇐ ПредыдущаяСтр 11 из 11 1. Архангельский А. Я. Программирование в Delphi г. Москва: издательство «Бином», 2005г. – 332 с.; 2. Ахметов А. Р. Программирование в Delphi 7. г.Москва: издательство «Бином-Пресс», 2003 г. – 780 с.; 3. Бобровский С.И. Delphi7 – Учебный курс. г. Санкт-Петербург: издательство «Питер», 2004 г. – 736 с.; 4. Глушаков С. В. Delphi 2007 г. Москва: издательство «Хранитель», 2008 г. – 635 с.; 5. Жуков А. В. Изучаем Delphi. г. Санкт-Петербург: издательство «Питер», 2001 г. – 352 с.; 6. Маслобоев А. В. Delphi г. Санкт-Петербург: издательство «БХВ-Петербург», 2005 г. – 496 с.; 7. Стивенс Р.А. Delphi. Готовые алгоритмы. г. Москва: издательство «ДМК пресс», 2001 г. – 384 с.; 8. Фаронов В. В. Delphi. Программирова
9. Хузятов Ш. Ш. Delphi 7. Основные компоненты и элементы языка программирования г. Набережные Челны: издательство КамПИ, 2005г. – 116 с.; 10. www.delphisources.ru/ 11. Архангельский А.Я. «Разработка прикладных программ для Windows в Delphi 5» - М.: ЗАО «Издательство БИНОМ», 1999. – 256 с. 12. Архангельский А.Я. «100 компонентов общего назначения библиотеки Delphi 5» - М.: ЗАО «Издательство БИНОМ», 1999. – 272 с.
Додаток А. Лістинг
Unit1.pas
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids, StdCtrls,ComObj, Menus;
type TForm1 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; ADOTable1: TADOTable; ADOConnection1: TADOConnection; DBGrid2: TDBGrid; DataSource2: TDataSource; ADOTable2: TADOTable; DBNavigator1: TDBNavigator; DBNavigator2: TDBNavigator; ADOTable3: TADOTable; DataSource3: TDataSource; OpenDialog1: TOpenDialog; ADOTable4: TADOTable; DataSource4: TDataSource; ADOTable2data: TDateField; ADOTable2nom: TIntegerField; ADOTable2plat: TIntegerField; ADOTable2komu: TIntegerField; ADOTable2kod_xl: TIntegerField; ADOTable2name: TStringField; ADOTable2kol: TBCDField; ADOTable2stuk: TIntegerField; ADOTable2wes: TBCDField; ADOTable2zena: TBCDField; ADOTable2kolw: TBCDField; ADOTable2pr_nds: TIntegerField; ADOTable2s_j: TIntegerField; ADOTable2suma: TFloatField; ADOTable1nom: TIntegerField; ADOTable1data: TDateField; ADOTable1smena: TIntegerField; ADOTable1komu: TIntegerField; ADOTable1name: TStringField; ADOTable1kopl: TBCDField; ADOTable1opl: TBCDField; ADOTable1prizn_z: TStringField; ADOTable1k_b: TIntegerField; ADOTable1skidka: TBCDField; ADOTable1nom_fakt: TIntegerField; ADOTable1marsrut: TIntegerField; ADOTable1awto: TIntegerField; ADOTable1nom_awto: TIntegerField; Label1: TLabel; Label2: TLabel; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; ADOQuery1: TADOQuery; N4: TMenuItem; procedure ADOTable2AfterInsert(DataSet: TDataSet); procedure ADOTable2EditError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); procedure FormCreate(Sender: TObject); procedure ADOTable2CalcFields(DataSet: TDataSet); procedure ADOTable1BeforeDelete(DataSet: TDataSet); procedure ADOTable1AfterInsert(DataSet: TDataSet); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
function StrOemToAnsi(const aStr: String): String; var Len: Integer; begin Result:= ''; Len:= Length(aStr); if Len = 0 then Exit; SetLength(Result, Len); OemToAnsiBuff(PAnsiChar(aStr), PAnsiChar(Result), Len); end;
function StrAnsiToOem(const aStr: String): String; var Len: Integer; begin Result:= ''; Len:= Length(aStr); if Len = 0 then Exit; SetLength(Result, Len); AnsiToOemBuff(PAnsiChar(aStr), PAnsiChar(Result), Len); end;
procedure TForm1.ADOTable2AfterInsert(DataSet: TDataSet); begin DataSet.FieldByName('data').AsString:= DateToStr(Date); end;
procedure TForm1.ADOTable2EditError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); begin ShowMessage('Ïîëå íå ìîæåò áûòü ïóñòûì'); end;
procedure TForm1.FormCreate(Sender: TObject); begin GetDir(0,MyDir); end;
procedure TForm1.ADOTable2CalcFields(DataSet: TDataSet); begin ADOTable2.Fields.FieldByName('suma').AsFloat:=ADOTable2.Fields.FieldByName('zena').AsFloat*ADOTable2.Fields.FieldByName('kol').AsFloat; end;
procedure TForm1.ADOTable1BeforeDelete(DataSet: TDataSet); var nomstr:string; begin nomstr:=DataSet.Fields.FieldByName('nom').AsString; while ADOTable2.Locate('nom',nomstr,[]) do ADOTable2.Delete; end;
procedure TForm1.ADOTable1AfterInsert(DataSet: TDataSet); begin ADOTable1.Fields.FieldByName('smena').AsString:= '2'; ADOTable1.Fields.FieldByName('data').AsString:=DateToStr(Date); ADOTable1.Fields.FieldByName('prizn_z').AsString:='0'; ADOTable1.Fields.FieldByName('kopl').AsFloat:=0; ADOTable1.Fields.FieldByName('opl').AsString:='0'; ADOTable1.Fields.FieldByName('k_b').AsString:= '0'; ADOTable1.Fields.FieldByName('nom_fakt').AsString:='0'; ADOTable1.Fields.FieldByName('marsrut').AsString:='0'; ADOTable1.Fields.FieldByName('awto').AsString:='0'; ADOTable1.Fields.FieldByName('nom_awto').AsString:='0';
end;
procedure TForm1.N1Click(Sender: TObject); begin Form2.Show; end;
procedure TForm1.N2Click(Sender: TObject); var col,row,i,j,nom,rowcount,colcount:integer; fn:string; Cellstart, Cellend: OLEVariant; masexped: Variant; sumopl:double; begin
row:=3; {ADOTable1.Last; nom:=ADOTable1.FieldByName('nom').AsInteger; } nom:=ADOQuery1.FieldByName('max').AsInteger; inc(nom);
if OpenDialog1.Execute then fn:=OpenDialog1.FileName else exit;
XL:= CreateOleObject('Excel.Application'); XL.WorkBooks.open(fn);
XL.Visible:= true;
rowcount:= XL.WorkBooks[1].WorkSheets[1].UsedRange.Rows.Count-1; colcount:= XL.WorkBooks[1].WorkSheets[1].UsedRange.Columns.Count;
Cellstart:=XL.WorkBooks[1].WorkSheets[1].Cells[1,1]; Cellend:=XL.WorkBooks[1].WorkSheets[1].Cells[rowcount,colcount];
masexped:=XL.WorkBooks[1].WorkSheets[1].Range[Cellstart, Cellend].value;
for i:=3 to rowcount do begin sumopl:=0; col:=3; ADOTable1.First; for j:=1 to ADOTable1.RecordCount do begin if (ADOTable1.FieldByName('komu').AsInteger=strtoint(masexped[row, 1])) then ADOTable1.Delete; ADOTable1.Next; end;
ADOTable1.Insert;
ADOTable1.Fields.FieldByName('nom').AsInteger:= nom; ADOTable1.Fields.FieldByName('komu').AsString:= masexped[row, 1]; ADOTable1.Fields.FieldByName('name').AsString:= StrAnsiToOem(masexped[row, 2]);
if ADOTable4.Locate('kod',masexped[row, 1],[loCaseInsensitive]) then ADOTable1.Fields.FieldByName('skidka').AsFloat:= ADOTable4.Fields.FieldByName('proz').AsFloat else ADOTable1.Fields.FieldByName('skidka').AsFloat:=0; ADOTable1.Post; for j:=3 to colcount do begin
if (strtoint(masexped[row, col])<>0) then begin ADOTable2.Insert; ADOTable2.Fields.FieldByName('data').AsString:=DateToStr(Date); ADOTable2.Fields.FieldByName('nom').AsInteger:=nom; ADOTable2.Fields.FieldByName('plat').AsInteger:=0; ADOTable2.Fields.FieldByName('komu').AsString:= masexped[row, 1]; ADOTable2.Fields.FieldByName('kod_xl').AsString:= masexped[1, col]; ADOTable2.Fields.FieldByName('name').AsString:= StrAnsiToOem(masexped[2, col]);
if ADOTable3.Locate('kod',masexped[1, col],[loCaseInsensitive]) then begin ADOTable3.Edit; if (ADOTable3.Fields.FieldByName('wes_j').AsFloat<>0) then begin ADOTable2.Fields.FieldByName('stuk').AsInteger:= masexped[row, col]; ADOTable2.Fields.FieldByName('wes').AsFloat:= ADOTable3.Fields.FieldByName('wes').AsFloat; ADOTable2.Fields.FieldByName('kol').AsInteger:= (ADOTable3.Fields.FieldByName('wes_j').AsFloat/ADOTable3.Fields.FieldByName('wes').AsFloat)*masexped[row, col]; ADOTable3.Fields.FieldByName('koltek').AsFloat:=ADOTable3.Fields.FieldByName('koltek').AsFloat-masexped[row, col]*ADOTable3.Fields.FieldByName('wes_j').AsFloat; end else begin ADOTable2.Fields.FieldByName('stuk').AsInteger:=0; ADOTable2.Fields.FieldByName('wes').AsInteger:=0; ADOTable2.Fields.FieldByName('kol').AsString:= masexped[row, col]; ADOTable3.Fields.FieldByName('koltek').AsFloat:=ADOTable3.Fields.FieldByName('koltek').AsFloat-masexped[row, col]; end; ADOTable3.Post;
ADOTable2.Fields.FieldByName('zena').AsInteger:= ADOTable3.Fields.FieldByName('zenam').AsInteger; end else begin ADOTable2.Fields.FieldByName('stuk').AsInteger:=0; ADOTable2.Fields.FieldByName('wes').AsInteger:=0; ADOTable2.Fields.FieldByName('zena').AsInteger:=0; end;
ADOTable2.Fields.FieldByName('kolw').AsString:= '0'; ADOTable2.Fields.FieldByName('pr_nds').AsString:= '0'; ADOTable2.Fields.FieldByName('s_j').AsString:= '0';
ADOTable2.Post; sumopl:= sumopl+ ADOTable2.Fields.FieldByName('suma').asFloat;
end;
inc(col); end;
ADOTable1.Edit; ADOTable1.Fields.FieldByName('kopl').AsFloat:=sumopl-(ADOTable1.Fields.FieldByName('skidka').AsInteger/100)*sumopl; ADOTable1.Post; if (sumopl=0) then ADOTable1.Delete; // ShowMessage(floattostr(sumopl)); inc(row); inc(nom);
end; end;
procedure TForm1.N3Click(Sender: TObject); begin Form3.Show; end;
procedure TForm1.N4Click(Sender: TObject); begin Form4.Show; end;
end.
Unit2.pas
unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, DBCtrls, Grids,ComObj, DBGrids;
type TForm2 = class(TForm) Label1: TLabel; ADOTable1: TADOTable; DataSource1: TDataSource; DBLookupComboBox1: TDBLookupComboBox; DataSource2: TDataSource; Label2: TLabel; ADOTable2: TADOTable; ADOTable3: TADOTable; DataSource3: TDataSource; Button5: TButton; ADOQuery1: TADOQuery; DBGrid1: TDBGrid; DataSource4: TDataSource; ADOQuery2: TADOQuery; procedure DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char); procedure DBLookupComboBox2DropDown(Sender: TObject); procedure DBLookupComboBox1CloseUp(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form2: TForm2; MyDir:string; XL: variant;
implementation
uses Unit1,Unit3;
{$R *.dfm}
function StrOemToAnsi(const aStr: String): String; var Len: Integer; begin Result:= ''; Len:= Length(aStr); if Len = 0 then Exit; SetLength(Result, Len); OemToAnsiBuff(PAnsiChar(aStr), PAnsiChar(Result), Len); end;
function StrAnsiToOem(const aStr: String): String; var Len: Integer; begin Result:= ''; Len:= Length(aStr); if Len = 0 then Exit; SetLength(Result, Len); AnsiToOemBuff(PAnsiChar(aStr), PAnsiChar(Result), Len); end;
procedure TForm2.DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char); var res,ansi:String; len:integer; begin
label2.Caption:= label2.Caption + Key; res:= label2.Caption; len:= Length(label2.Caption)-2; if (ord(key)=8) then SetLength(res,len);
label2.Caption:=res; ansi:='%' + label2.Caption + '%'; if label2.Caption='' then begin ADOTable1.Filtered:=false; exit; end; ADOTable1.Filter:= 'name LIKE ''' + StrAnsiToOem(ansi) + '''';
ADOTable1.Filtered:=true;
end;
procedure TForm2.DBLookupComboBox2DropDown(Sender: TObject); var str:string; begin str:=ADOTable1.FieldByName('kod').AsString + '%'; // ShowMessage(str); ADOTable2.Filter:= 'kod = ''' + StrAnsiToOem(str) + ''''; ADOTable2.Filtered:=true;
end;
procedure TForm2.DBLookupComboBox1CloseUp(Sender: TObject); begin label2.Caption:=''; if (DBLookupComboBox1.Text='') then exit; //ShowMessage(ADOTable1.FieldByName('kod').AsString); ADOQuery1.Active:=false; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM potr WHERE ROUND(kod/1000,0)='+ADOTable1.FieldByName('kod').AsString); ADOQuery1.Active:=true; Button5.Enabled:=true; end;
procedure TForm2.Button1Click(Sender: TObject);
begin
try XL:=GetActiveOleObject('Excel.Application');
except XL:= CreateOleObject('Excel.Application'); XL.WorkBooks.add;
XL.Visible:= true; XL.WorkBooks[1].Activate; end; end;
procedure TForm2.Button4Click(Sender: TObject); begin XL.WorkBooks[1].WorkSheets[1].SaveAs(MyDir + '\asd.xlsx'); end;
procedure TForm2.Button5Click(Sender: TObject); var i,j,row,col,color,prev,btn,rowcount:integer; str,st:string; expedmas,Range:variant; begin MessageDlg('Ñîõðàíèòå è çàêðîéòå ïîæàëóéñòà âñå excel äîêóìåíòû',mtInformation,mbOKCancel,0); rowcount:=ADOQuery1.RecordCount; {ADOTable2.First; j:=ADOTable2.RecordCount; for i:=0 to j do begin str:= ADOTable2.Fields.FieldByName('kod').AsString; if (Strtoint(str)div 1000=Strtoint(ADOTable1.FieldByName('kod').AsString)) then begin inc(rowcount); end; ADOTable2.Next; end; } expedmas:=VarArrayCreate([1,rowcount+3,1,ADOTable3.RecordCount+3],varVariant); try XL:=GetActiveOleObject('Excel.Application');
except XL:= CreateOleObject('Excel.Application');
end; XL.WorkBooks.add; XL.WorkBooks[1].VBProject.VBComponents.Item(1).CodeModule.AddFromString( 'Dim n As Range'#13#10+ 'Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) '#13#10+ 'If (Target.Column > 3) And (Target.Row > 3) Then'#13#10+ 'If n Is Nothing Then'#13#10+ 'Cells.EntireRow.Borders.LineStyle = xlLineStyleNone'#13#10+ 'Else'#13#10+ 'n.EntireRow.Borders.LineStyle = xlLineStyleNone'#13#10+ 'n.EntireRow.Interior.ColorIndex = 0'#13#10+ 'End If'#13#10+ 'Target.EntireRow.Borders(xlEdgeLeft).LineStyle = xlContinuous '#13#10+ 'Target.EntireRow.Borders(xlEdgeTop).LineStyle = xlContinuous '#13#10+ 'Target.EntireRow.Borders(xlEdgeBottom).LineStyle = xlContinuous '#13#10+ 'Target.EntireRow.Borders(xlEdgeRight).LineStyle = xlContinuous '#13#10+ 'Target.EntireRow.Interior.ColorIndex = 15'#13#10+ 'Set n = Target '#13#10+ 'End If'#13#10+ 'End Sub' ); // ShowMessage(XL.WorkBooks[1].WorkSheets[1].ActiveCell.Row);
btn:=MessageDlg('Áóäåò èñïîëüçîâàíà êíèãà - '+XL.WorkBooks[1].name,mtConfirmation, [mbYes,mbNo], 0); if (btn=7) then exit; XL.Visible:= true; XL.WorkBooks[1].WorkSheets[1].Columns.AutoFit; row:=3; ADOTable2.First; j:=ADOTable2.RecordCount; for i:=0 to j do begin str:= ADOTable2.Fields.FieldByName('kod').AsString; if (Strtoint(str)div 1000=Strtoint(ADOTable1.FieldByName('kod').AsString)) then begin st:=ADOTable2.Fields.FieldByName('kod').AsString; // XL.WorkBooks[1].WorkSheets[1].Cells[row, 1]:=st; // ShowMessage(inttostr(row));
expedmas[row, 1]:= st; st:=ADOTable2.Fields.FieldByName('name').AsString; // XL.WorkBooks[1].WorkSheets[1].Cells[row, 2]:= StrOemToAnsi(st); expedmas[row, 2]:= StrOemToAnsi(st); inc(row); end; ADOTable2.Next; end;
// expedmas[row, 3]:='=SUM('+XL.WorkBooks[1].WorkSheets[1].Cells[row, 2].Address+':'+XL.WorkBooks[1].WorkSheets[1].Cells[row, 2].Address+')'; col:=3; color:=4; ADOTable3.First; prev:= ADOTable3.Fields.FieldByName('id').AsInteger div 100; XL.WorkBooks[1].WorkSheets[1].Rows[2].Orientation:= 90; XL.WorkBooks[1].WorkSheets[1].Rows[1].Orientation:= 90; XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Color:= clBlack;
XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Bold:= True; j:=ADOTable3.RecordCount;
for i:=0 to j do begin
st:=ADOTable3.Fields.FieldByName('id').AsString; // XL.WorkBooks[1].WorkSheets[1].Cells[1, col]:=st;
expedmas[1, col]:=st; st:=ADOTable3.Fields.FieldByName('name').AsString; // XL.WorkBooks[1].WorkSheets[1].Cells[2, col]:= StrOemToAnsi(st); expedmas[2, col]:= st; if (ADOTable3.Fields.FieldByName('id').AsInteger div 100<>prev) then inc(color); XL.WorkBooks[1].WorkSheets[1].Cells[2, col].Interior.ColorIndex:=color; // expedmas[2, col].Interior.ColorIndex:=color; expedmas[row, col]:='=SUM('+XL.WorkBooks[1].WorkSheets[1].Cells[3, col].Address+':'+XL.WorkBooks[1].WorkSheets[1].Cells[row-1, col].Address+')'; inc(col); prev:= ADOTable3.Fields.FieldByName('id').AsInteger div 100; ADOTable3.Next; end; Range:=XL.WorkBooks[1].WorkSheets[1].Range[XL.WorkBooks[1].WorkSheets[1].Cells[1,1],XL.WorkBooks[1].WorkSheets[1].Cells[VarArrayHighBound(expedmas,1),VarArrayHighBound(expedmas,2)]]; Range.Value:=expedmas; Range:=XL.WorkBooks[1].WorkSheets[1].Range[XL.WorkBooks[1].WorkSheets[1].Cells[3,3],XL.WorkBooks[1].WorkSheets[1].Cells[VarArrayHighBound(expedmas,1)-1,VarArrayHighBound(expedmas,2)]]; Range.Value:=0;
XL.WorkBooks[1].WorkSheets[1].Columns.AutoFit; XL.WorkBooks[1].WorkSheets[1].Rows.AutoFit; XL.ActiveWindow.FreezePanes:=False; // âûäåëÿåì íóæíóþ ÿ÷åéêó, â äàííîì ñëó÷àå D3 XL.WorkBooks[1].WorkSheets[1].Range['C3'].Select; // óñòàíàâëèâàåì çàêðåïëåíèå îáëàñòè XL.ActiveWindow.FreezePanes:=True; XL.WorkBooks[1].WorkSheets[1].SaveAs(MyDir + '\'+Trim(StrOemToAnsi(ADOTable1.FieldByName('name').AsString))+'.xls',53);
end;
end.
Unit3.pas
unit Unit3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls, ExtCtrls, DBCtrls,ComObj;
type TForm3 = class(TForm) ADOConnection1: TADOConnection; ADOTable1: TADOTable; DBGrid1: TDBGrid; DataSource1: TDataSource; Button1: TButton; ADOQuery1: TADOQuery; DBGrid2: TDBGrid; DataSource2: TDataSource; DBNavigator1: TDBNavigator; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form3: TForm3; XL: variant;
implementation
uses Unit1;
{$R *.dfm}
function StrOemToAnsi(const aStr: String): String; var Len: Integer; begin Result:= ''; Len:= Length(aStr); if Len = 0 then Exit; SetLength(Result, Len); OemToAnsiBuff(PAnsiChar(aStr), PAnsiChar(Result), Len); end;
procedure TForm3.Button1Click(Sender: TObject); var i:integer; begin ADOQuery1.First; for i:=1 to ADOQuery1.RecordCount do begin ADOTable1.Insert; ADOTable1.FieldByName('id').AsInteger:=ADOQuery1.FieldByName('kod').AsInteger; ADOTable1.FieldByName('name').AsString:=StrOemToAnsi(ADOQuery1.FieldByName('name').AsString); ADOTable1.Post; ADOQuery1.Next; end; end;
procedure TForm3.Button2Click(Sender: TObject); var i:integer; begin ADOTable1.First; for i:=1 to ADOTable1.RecordCount do begin
if (ADOTable1.FieldByName('id').AsInteger div 100 <> 1) then begin
ADOTable1.Edit;
ADOTable1.FieldByName('category_id').AsString:=InputBox('',ADOTable1.FieldByName('name').AsString,'1'); ADOTable1.Post;
end; ADOTable1.Next; end; end;
procedure TForm3.Button3Click(Sender: TObject); var col:integer; begin
XL:=GetActiveOleObject('Excel.Application'); col:=XL.WorkBooks[1].WorkSheets[1].UsedRange.Columns.Count+1; XL.WorkBooks[1].WorkSheets[1].Columns[col].Insert; XL.WorkBooks[1].WorkSheets[1].Cells[1,col]:=ADOTable1.FieldByName('id').AsString; XL.WorkBooks[1].WorkSheets[1].Cells[2,col]:=ADOTable1.FieldByName('name').AsString; XL.WorkBooks[1].WorkSheets[1].Cells[XL.WorkBooks[1].WorkSheets[1].UsedRange.rows.Count,XL.WorkBooks[1].WorkSheets[1].UsedRange.Columns.Count]:='=SUM('+XL.WorkBooks[1].WorkSheets[1].Cells[3, XL.WorkBooks[1].WorkSheets[1].UsedRange.Columns.Count].Address+':'+XL.WorkBooks[1].WorkSheets[1].Cells[XL.WorkBooks[1].WorkSheets[1].UsedRange.rows.Count-1, XL.WorkBooks[1].WorkSheets[1].UsedRange.Columns.Count].Address+')'; end;
end.
Unit4.pas
unit Unit4;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls,ComObj;
type TForm4 = class(TForm) ADOQuery1: TADOQuery; DBGrid1: TDBGrid; DataSource1: TDataSource; ADOTable1: TADOTable; DBGrid2: TDBGrid; DataSource2: TDataSource; Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form4: TForm4; XL: variant;
implementation
Uses Unit1; {$R *.dfm}
function StrOemToAnsi(const aStr: String): String; var Len: Integer; begin Result:= ''; Len:= Length(aStr); if Len = 0 then Exit; SetLength(Result, Len); OemToAnsiBuff(PAnsiChar(aStr), PAnsiChar(Result), Len); end;
procedure TForm4.Button1Click(Sender: TObject); var i:integer; begin for i:=1 to ADOQuery1.RecordCount do begin ADOTable1.Delete; end; ADOQuery1.First; for i:=1 to ADOQuery1.RecordCount do begin ADOTable1.Insert; ADOTable1.FieldByName('id').AsInteger:=ADOQuery1.FieldByName('kod').AsInteger; ADOTable1.FieldByName('name').asString:=StrOemToAnsi(ADOQuery1.FieldByName('name').asString); ADOTable1.Post; ADOQuery1.Next; end;
end;
procedure TForm4.Button2Click(Sender: TObject); var row:integer; begin
XL:=GetActiveOleObject('Excel.Application'); row:=XL.WorkBooks[1].WorkSheets[1].UsedRange.rows.Count-1; XL.WorkBooks[1].WorkSheets[1].rows[row].Insert; XL.WorkBooks[1].WorkSheets[1].Cells[row,1]:=ADOTable1.FieldByName('id').AsString; XL.WorkBooks[1].WorkSheets[1].Cells[row,2]:=ADOTable1.FieldByName('name').AsString;
end;
end.
|