Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Список використаної літератури





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. Программирова

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
 
ТП 2202-180-01-00-00-01    
ние на языке высокого уровня г. Санкт-Перетбург: издательство «Питер», 2007 г. – 640 с.;

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.

Date: 2016-05-16; view: 471; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию