4.5.2 Создание генерации отчетов с помощью Microsoft Excel
Как и в предыдущем случае, нам следует также объявить глобальные переменные для объектов Application, WorkBook и WorkSheet:
var
Forml: TForm1;
. . .
// Переменные для объектов Excel Application, WorkBook и WorkSheet
Xl, Wb, Ws: Variant;
Реализуем генерацию табличного отчета в обработчике события OnClick компонента Button2:
procedure TForm1.Report_ExcelClick(Sender: TObject);
var I, Rcnt:integer;
begin
// Открываем базу данных и подсчитываем количество записей
ADODataSet1.Open;
Rcnt := ADODataSet1.RecordCount;
// Запускаем Microsoft Excel
Xl := CreateOleObject('Excel.Application');
// Отображаем окно Microsoft Excel
Xl.Visible := True;
// Создаем рабочую книгу
Xl.WorkBooks.Add;
Wb := XL.WorkBooks[1];
Ws := Wb.WorkSheets[1];
Ws.Name := 'Центр данных';
// Создаем заголовок отчета
Ws.Cells[1,1] := 'Центр данных';
Ws.Cells[1,1].Font.Bold := True;
Ws.Cells[1,1].Font.Size := 16;
Ws.Cells[2,1] := 'Комп';
Ws.Cells[2,2] := 'Игрок';
Ws.Cells[2,3] := 'Дата';
Ws.Cells[2,4] := 'Продолжительность';
Ws.Cells[2,5] := 'Код услуги';
Ws.Cells[2,6] := 'Админ';
for I:=1 to 6 do
Ws.Cells[2,i].Font.Bold := True;
// Перемещаемся на первую запись набора данных
ADODataSet1.First;
for I:=1 to Rcnt do
begin
// Добавляем значения полей текущей записи в новую строку
Ws.Cells[i+2,1] := ADODataSet1.Fields[0].AsString;
Ws.Cells[i+2,2] := ADODataSet1.Fields[1].AsString;
Ws.Cells[i+2,3] := ADODataSet1.Fields[2].AsString;
Ws.Cells[i+2,4] := ADODataSet1.Fields[3].AsString;
Ws.Cells[i+2,5] := ADODataSet1.Fields[4].AsString;
Ws.Cells[i+2,6] := ADODataSet1.Fields[5].AsString;
ADODataSet1.Next;
end;
// Изменяем ширину колонок
Xl.Columns[1].ColumnWidth:=Xl.Columns[1].ColumnWidth+5;
Xl.Columns[2].ColumnWidth:=Xl.Columns[2].ColumnWidth+5;
Xl.Columns[3].ColumnWidth:=Xl.Columns[3].ColumnWidth+5;
Xl.Columns[4].ColumnWidth:=Xl.Columns[4].ColumnWidth+5;
Xl.Columns[5].ColumnWidth:=Xl.Columns[5].ColumnWidth+5;
Xl.Columns[6].ColumnWidth:=Xl.Columns[6].ColumnWidth+5;
// Подавляем вывод диагностических сообщений
Xl.DisplayAlerts:=false;
// Сохраняем документ
Wb.SaveAs('D:\SOT\Custrer.xls');
// Закрываем Excel и освобождаем ресурсы
//Xl.Quit;
Xl:=Unassigned;
end;
Откомпилируем приложение и проверьте работу кнопки «Отчет с использованием MS Excel». При выполнении этого приложения создается документ с отчетом по базе данный club.mdb (рис.4.5).
Пояснения к приведенному выше фрагменту кода
Во-первых, мы должны создать копию Microsoft Excel, сделав ее видимой и создать новую рабочую книгу:
// Запускаем Microsoft Excel
Xl := CreateOleObject('Excel.Application');
// Отображаем окно Microsoft Excel
Xl.Visible := True;
// Создаем рабочую книгу
Xl.WorkBooks.Add;
Wb := XL.WorkBooks[1];
Ws := Wb.WorkSheets[1];
Ws.Name := ' Список клиентов ';
Затем нужно создать заголовок отчета и заголовки колонок будущей таблицы, добавляя текст в соответствующие ячейки т меняя характеристики шрифта ячеек:
// Создаем заголовок отчета
Ws.Cells[1,1] := 'Центр данных';
Ws.Cells[1,1].Font.Bold := True;
Ws.Cells[1,1].Font.Size := 16;
Ws.Cells[2,1] := 'Комп';
Ws.Cells[2,2] := 'Игрок';
Ws.Cells[2,3] := 'Дата';
Ws.Cells[2,4] := 'Продолжительность';
Ws.Cells[2,5] := 'Код услуги';
Ws.Cells[2,6] := 'Админ';
for I:=1 to 6 do
Ws.Cells[2,i].Font.Bold := True;Затем следует, перемещаясь по записям набора данных, добавит в документ строки, соответствующие этим записям:
// Перемещаемся на первую запись набора данных
ADODataSet1.First;
for I:=1 to Rcnt do
begin
// Добавляем значения полей текущей записи в новую строку
Ws.Cells[i+2,1] := ADODataSet1.Fields[0].AsString;
Ws.Cells[i+2,2] := ADODataSet1.Fields[1].AsString;
Ws.Cells[i+2,3] := ADODataSet1.Fields[2].AsString;
Ws.Cells[i+2,4] := ADODataSet1.Fields[3].AsString;
Ws.Cells[i+2,5] := ADODataSet1.Fields[4].AsString;
Ws.Cells[i+2,6] := ADODataSet1.Fields[5].AsString;
ADODataSet1.Next;
end;
Как и в предыдущем случае, нам следует изменить размер колонок на листе рабочей книги, чтобы корректно отобразить содержащиеся в них данные:
// Изменяем ширину колонок
Xl.Columns[1].ColumnWidth:=Xl.Columns[1].ColumnWidth+5;
Xl.Columns[2].ColumnWidth:=Xl.Columns[2].ColumnWidth+5;
Xl.Columns[3].ColumnWidth:=Xl.Columns[3].ColumnWidth+5;
Xl.Columns[4].ColumnWidth:=Xl.Columns[4].ColumnWidth+5;
Xl.Columns[5].ColumnWidth:=Xl.Columns[5].ColumnWidth+5;
Xl.Columns[6].ColumnWidth:=Xl.Columns[6].ColumnWidth+5;
Теперь нам нужно сохранить документ, подавив при этом вывод диагностических сообщений Excel. Как и в Word, приложение Excel может быть запущено удаленно, и в этом случае пользователь также может не иметь возможности взаимодействовать с диалоговыми окнами Excel:
// Подавляем вывод диагностических сообщений
Xl.DisplayAlerts:=false;
// Сохраняем документ
Wb.SaveAs('D:\SOT\Custrep.xls');
Наконец, нам следует закрыть Excel и освободить ресурсы:
// Закрываем Excel и освобождаем ресурсы
Xl.Quit;
Xl:=Unassigned;
Добавление строки с новыми записями в базу данных.
procedure TForm1.Button6Click(Sender: TObject);
begin
with form1.ADOQuery2 do begin
//Close; // закрыть файл-результат выполнения предыдущего запроса
SQL.Clear; // удалить текст предыдущего запроса
// записываем новый запрос в свойство SQL
SQL.Add('INSERT INTO Админ (Админ, ФИО, Адрес, Ставка) VALUES ("Annie", "Бойко А.К.", "Засекречено:)", 1000);');
ExecSQL;
end;
Так же программа имеет возможность выполнять набранные запросы (Рис
Код программы приведен в Додатке В.
ЗАКЛЮЧЕНИЕ
В ходе данной курсовой работы была разработана автоматизированная информационно-справочная система хранения и обработки информации компьютерного клуба, которая способствует быстрому поиску необходимых данных при минимальных затратах времени, а также программная реализация системы, в основе которой лежит проектирование предметной области и логической схемы БД, являющейся информационным ресурсом разрабатываемой системы.
Для решения современных проблем применяются современные методы их решения. Проблема методов управления в организациях любых форм собственности предполагает использование системы управления базами данных для принятия решений на основе эффективного использования информационного ресурса, что позволяет получить большую экономическую отдачу и решать задачи планирования и управления с использованием современных информационных технологий.
Хорошо спроектированная система может расширяться с ростом информационных потребностей пользователей и при этом сохраняет уже существующую информацию. Современные методы проектирования предполагают в качестве первого этапа проектирования разработку инфологической модели предметной области. Разработанная в курсовом проекте инфологическая схема позволяет уяснить структуру предметной области с целью отображения ее логической схемы в базе данных.
При проектировании информационных систем использование реляционной модели базы данных является самым подходящим методом. Нормализация отношений разработанной базы данных позволила устранить ошибки внесения, удаления, обновления, дублирования данных, что особенно важно при работе с базой данных пользователей непрофессионалов. Практическая реализация информационной системы выполнена с использованием СУБД Access , однако приведенные в работе программы создания таблиц средствами SQL позволяют реализовать разработку в ином коммерческом пакете реляционного типа, где кроме языка запросов используется язык определения данных для создания базовых таблиц.
Таким образом, путем автоматизации приложений Microsoft Office мы можем создавать сложные отчеты, содержащие таблицы, диаграммы, вычисляемые значения, равно как и использовать для этой цели другие возможности Microsoft Office (например, сервисы построения сводных таблиц).
Разработанная база данных является законченным программным продуктом для поддержания информационных потребностей и может быть легко расширена при изменении информационных потребностей пользователя.
СПИСОК ЛИТЕРАТУРЫ
1. Буслик М.М. Модели и структуры данных.
2. Мартин Дж. Организация баз данных в вычислительных системах.-М.: Мир, 1980.-608с.
3. Глушаков С.В., Мельников И.В. Базы данных,включая SQL2 и SQL SERVER:Учебник для вузов.-Харьков.: Фолио,2000-250 с.
4. Вейскас Дж. Эффективная работа с Access.-СПб:Питер.1997-848с.
5. Боуман Дж.,Эмерсон С. Дарновски М. Практичесское руководство по SQL.-К:Диалектика,1998-565с.
6. Дейт К. Введение в системы баз данных.- 6-е изд.-К:Диалектика, 1998.-784с.
7. Холигвэрт, Джарод, Баттерфилд, Дэн, Сворт, Боб, и др. С++Builder 5. Руководство разработчика, том 2. Сложные вопросы программирования : Пер. с англ. – М.: Издательский дом “Вильямс”, 2001. - 832 с.: ил. – Парал. тит. англ.
8. Архангельский А.Я. Приемы программирования в Delphi. Изд. 2-е, пере раб. и доп. – М.: ООО «Бином-Пресс», 2004 г. – 848 с.: ил.
Приложение В
Код программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, ActiveX, DB, ADODB, StdCtrls, Grids, DBGrids, ComCtrls,
OleServer, ExcelXP;
type
TForm1 = class(TForm)
Report_Word: TButton;
Report_Excel: TButton;
CreatePivotTable: TButton;
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
RadioButton1: TRadioButton;
ComboBox1: TComboBox;
RadioButton2: TRadioButton;
ComboBox2: TComboBox;
DBGrid2: TDBGrid;
ADOQuery1: TADOQuery;
DataSource2: TDataSource;
Select: TMemo;
Button1: TButton;
DBGrid3: TDBGrid;
DataSource3: TDataSource;
TabSheet4: TTabSheet;
ADOQuery2: TADOQuery;
DataSource4: TDataSource;
DBGrid4: TDBGrid;
Button4: TButton;
ADODataSet3: TADODataSet;
Button5: TButton;
TabSheet5: TTabSheet;
DBGrid5: TDBGrid;
DataSource5: TDataSource;
Button6: TButton;
procedure Report_WordClick(Sender: TObject);
procedure Report_ExcelClick(Sender: TObject);
procedure CreatePivotTableClick(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure ComboBox2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Wd, Doc, Rng, Tbl, Xl, Wb, Ws, Ch, Z : Variant;
implementation
{$R *.dfm}
procedure TForm1.Report_WordClick(Sender: TObject);
var I, Rcnt:integer;
begin
// Открываем базу данных и подсчитываем количество записей
ADODataSet1.Open;
Rcnt:=ADODataSet1.RecordCount;
// Запускаем MS Word
wd:= CreateOleObject('Word.Application');
// Отображаем на экране окно MS Word
wd.Visible :=True;
// Создаем новый документ
wd.Documents.Add;
Doc:= wd.Documents.Item(1);
// Добавляем новый абзац
Doc.Paragraphs.Add;
// Меняем его стиль
Doc.Paragraphs.Item(1).Style:='Заголовок 1';
// Создаем заголовок отчета
Rng := Doc.Range(0);
Rng.InsertBefore('Центр данных');
// Создаем заголовки колонок
Doc.Paragraphs.Add;
Rng.InsertAfter('Комп: Игрок: Дата: Продолжительность: Код услуги: Админ');
// Перемещаемся на первую запись набора данных
ADODataSet1.First;
for I := 1 to Rcnt do begin
// Добавляем новый абзац
Doc.Paragraphs.Add;
// Добавляем поля из текущей записи в новый абзац
Rng.InsertAfter(ADODataSet1.Fields[0].AsString+':'+
ADODataSet1.Fields[1].ASString+':'+
ADODataSet1.Fields[2].AsString+':'+
ADODataSet1.Fields[3].ASString+':'+
ADODataSet1.Fields[4].ASString+':'+
ADODataSet1.Fields[5].ASString);
ADODataSet1.Next;
end;
// Превращаем текст в таблицу
Rng:=Doc.Range(Doc.Paragraphs.Item(3).Range.Start, Doc.Paragraphs.Item(Rcnt+3).Range.End);
Tbl:=Rng.ConvertToTable(':',Rcnt,6);
// Изменяем размеры колонок таблицы
Tbl.Columns.Item(1).Width:=Tbl.Columns.Item(1).Width-30;
Tbl.Columns.Item(2).Width:=Tbl.Columns.Item(2).Width+20;
Tbl.Columns.Item(3).Width:=Tbl.Columns.Item(3).Width-3;
Tbl.Columns.Item(4).Width:=Tbl.Columns.Item(4).Width+20;
Tbl.Columns.Item(5).Width:=Tbl.Columns.Item(5).Width-5;
Tbl.Columns.Item(6).Width:=Tbl.Columns.Item(6).Width+5;
// Подавляем вывод диагностических сообщений
Wd.DisplayAlerts:=False;
// Сохраняем документ
Doc.SaveAs('D:\SOT\Custrep.doc');
// Закрываем Word и освобождаем ресурсы
//Wd.Quit;
Wd:=Unassigned;
end;
procedure TForm1.Report_ExcelClick(Sender: TObject);
var I, Rcnt:integer;
begin
// Открываем базу данных и подсчитываем количество записей
ADODataSet1.Open;
Rcnt := ADODataSet1.RecordCount;
// Запускаем Microsoft Excel
Xl := CreateOleObject('Excel.Application');
// Отображаем окно Microsoft Excel
Xl.Visible := True;
// Создаем рабочую книгу
Xl.WorkBooks.Add;
Wb := XL.WorkBooks[1];
Ws := Wb.WorkSheets[1];
Ws.Name := 'Центр данных';
// Создаем заголовок отчета
Ws.Cells[1,1] := 'Центр данных';
Ws.Cells[1,1].Font.Bold := True;
Ws.Cells[1,1].Font.Size := 16;
Ws.Cells[2,1] := 'Комп';
Ws.Cells[2,2] := 'Игрок';
Ws.Cells[2,3] := 'Дата';
Ws.Cells[2,4] := 'Продолжительность';
Ws.Cells[2,5] := 'Код услуги';
Ws.Cells[2,6] := 'Админ';
for I:=1 to 6 do
Ws.Cells[2,i].Font.Bold := True;
// Перемещаемся на первую запись набора данных
ADODataSet1.First;
for I:=1 to Rcnt do
begin
// Добавляем значения полей текущей записи в новую строку
Ws.Cells[i+2,1] := ADODataSet1.Fields[0].AsString;
Ws.Cells[i+2,2] := ADODataSet1.Fields[1].AsString;
Ws.Cells[i+2,3] := ADODataSet1.Fields[2].AsString;
Ws.Cells[i+2,4] := ADODataSet1.Fields[3].AsString;
Ws.Cells[i+2,5] := ADODataSet1.Fields[4].AsString;
Ws.Cells[i+2,6] := ADODataSet1.Fields[5].AsString;
ADODataSet1.Next;
end;
// Изменяем ширину колонок
Xl.Columns[1].ColumnWidth:=Xl.Columns[1].ColumnWidth+5;
Xl.Columns[2].ColumnWidth:=Xl.Columns[2].ColumnWidth+5;
Xl.Columns[3].ColumnWidth:=Xl.Columns[3].ColumnWidth+5;
Xl.Columns[4].ColumnWidth:=Xl.Columns[4].ColumnWidth+5;
Xl.Columns[5].ColumnWidth:=Xl.Columns[5].ColumnWidth+5;
Xl.Columns[6].ColumnWidth:=Xl.Columns[6].ColumnWidth+5;
// Подавляем вывод диагностических сообщений
Xl.DisplayAlerts:=false;
// Сохраняем документ
Wb.SaveAs('D:\SOT\Custrer.xls');
// Закрываем Excel и освобождаем ресурсы
//Xl.Quit;
Xl:=Unassigned;
end;
procedure TForm1.CreatePivotTableClick(Sender: TObject);
var
WB,PC,PT:Variant;
const
// Константы Excel
xlExternal = $00000002;
xlCmdSql = $00000002;
xlColumnField = $00000002;
xlDataField = $00000004;
xlPageField = $00000003;
xlRowField = $00000001;
begin
// ADODataSet2.Open;
// Запускаем Microsoft Excel
Xl := CreateOleObject('Excel.Application');
// Делаем окно Excel видимым
Xl.Visible:=true;
// Создаем одну рабочую книгу с одним листом
Xl.WorkBooks.Add(1);
Wb := Xl.WorkBooks[1];
Ws := Wb.WorkSheets[1];
// Создаем кэш для хранения данных
PC := WB.PivotCaches.Add(xlExternal);
// Выбираем источник данных и текст запроса
PC.Connection := 'OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=D:\SOT\club.mdb';
PC.CommandType := xlCmdSql;
PC.CommandText := 'SELECT Игрок, Номер_компа,'+' Админ, Код_услуги, Цена FROM 01Cost_more_5';
// Создаем сводную таблицу
PC.CreatePivotTable(WB.Worksheets[1].Cells[1,1],'PivotTable1');
PT := WB.Worksheets[1].PivotTables('PivotTable1');
// Указываем расположение осей и суммируем данные
PT.PivotFields('Игрок').Orientation := xlRowField;
PT.PivotFields('Игрок').Position := 1;
PT.PivotFields('Номер_компа').Orientation := xlRowField;
PT.PivotFields('Номер_компа').Position := 2;
PT.PivotFields('Админ').Orientation := xlPageField;
PT.PivotFields('Код_услуги').Orientation := xlColumnField;
PT.PivotFields('Цена').Orientation := xlDataField;
WB.Worksheets[1].Columns[2].ColumnWidth := 15;
WB.Worksheets[1].Columns[1].ColumnWidth := 20;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
var i:integer;
begin
ADOConnection1.GetTableNames(ComboBox1.Items);
for i:=Combobox1.Items.Count-1 downto 0 do
if Pos ('0', Combobox1.Items[i])>0 then Combobox1.Items.Delete(i) ;
for i:=Combobox1.Items.Count-1 downto 0 do
if Pos ('1', Combobox1.Items[i])>0 then Combobox1.Items.Delete(i) ;
for i:=Combobox1.Items.Count-1 downto 0 do
if Pos ('2', Combobox1.Items[i])>0 then Combobox1.Items.Delete(i) ;
end;
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
if ADOTable1.Active then ADOTable1.Active:=False;
ADOTable1.TableName:=ComboBox1.Text;ADOTable1.Active:=True;
TabSheet1.Caption:= ComboBox1.Text;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
var i:integer;
begin
ADOConnection1.GetTableNames(ComboBox2.Items);
for i:=Combobox2.Items.Count-1 downto 0 do
if Pos ('Админ', Combobox2.Items[i])>0 then Combobox2.Items.Delete(i) ;
for i:=Combobox2.Items.Count-1 downto 0 do
if Pos ('Данные', Combobox2.Items[i])>0 then Combobox2.Items.Delete(i) ;
for i:=Combobox2.Items.Count-1 downto 0 do
if Pos ('Инфо игрока', Combobox2.Items[i])>0 then Combobox2.Items.Delete(i) ;
for i:=Combobox2.Items.Count-1 downto 0 do
if Pos ('Комп', Combobox2.Items[i])>0 then Combobox2.Items.Delete(i) ;
for i:=Combobox2.Items.Count-1 downto 0 do
if Pos ('Услуги', Combobox2.Items[i])>0 then Combobox2.Items.Delete(i) ;
for i:=Combobox2.Items.Count-1 downto 0 do
if Pos ('~', Combobox2.Items[i])>0 then Combobox2.Items.Delete(i) ;
end;
procedure TForm1.ComboBox2Click(Sender: TObject);
begin
if ADOTable1.Active then ADOTable1.Active:=False;
ADOTable1.TableName:=ComboBox2.Text;ADOTable1.Active:=True;
TabSheet1.Caption:= ComboBox2.Text;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ADOQuery2.Active then ADOQuery2.Active:=False;
ADOQuery2.SQL:=Select.Lines;ADOQuery2.Active:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ADOTable1.Active then ADOTable1.Active:=False;
ADOTable1.TableName:=ComboBox1.Text;ADOTable1.Active:=True;
TabSheet1.Caption:= ComboBox1.Text;
end;
procedure TForm1.Button4Click(Sender: TObject);
{var
fam: string[30];
begin
fam:=InputBox('Выборка информации из БД',
'Укажите фамилию и щелкните на OK.', '');
if fam <> '' // пользователь ввел фамилию
then }
begin
with form1.ADOQuery2 do begin
Close; // закрыть файл-результат выполнения предыдущего запроса
SQL.Clear; // удалить текст предыдущего запроса
// записываем новый запрос в свойство SQL
SQL.Add('SELECT Админ, ФИО, Ставка');
SQL.Add('FROM Админ');
Open; // активизируем выполнение запроса
end;
{if ADOQuery2.RecordCount <> 0 then
DataSource1.DataSet:=ADOQuery2 // отобразить рез-т выполнения запроса
else begin
ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');
DataSource1.DataSet:=ADOTable1;
end; }
end;
procedure TForm1.Button5Click(Sender: TObject);
var I, Rcnt:integer;
begin
// Открываем базу данных и подсчитываем количество записей
ADODataSet3.Open;
Rcnt := ADODataSet3.RecordCount;
// Запускаем Microsoft Excel
Xl := CreateOleObject('Excel.Application');
// Отображаем окно Microsoft Excel
Xl.Visible := True;
// Создаем рабочую книгу
Xl.WorkBooks.Add;
Wb := XL.WorkBooks[1];
Ws := Wb.WorkSheets[1];
Ws.Name := 'Админ';
// Создаем заголовок отчета
Ws.Cells[1,1] := 'Админ';
Ws.Cells[1,1].Font.Bold := True;
Ws.Cells[1,1].Font.Size := 16;
Ws.Cells[2,1] := 'Админ';
Ws.Cells[2,2] := 'ФИО';
Ws.Cells[2,3] := 'Адрес';
Ws.Cells[2,4] := 'Ставка';
for I:=1 to 4 do
Ws.Cells[2,i].Font.Bold := True;
// Перемещаемся на первую запись набора данных
ADODataSet3.First;
for I:=1 to Rcnt do
begin
// Добавляем значения полей текущей записи в новую строку
Ws.Cells[i+2,1] := ADODataSet3.Fields[0].AsString;
Ws.Cells[i+2,2] := ADODataSet3.Fields[1].AsString;
Ws.Cells[i+2,3] := ADODataSet3.Fields[2].AsString;
Ws.Cells[i+2,4] := ADODataSet3.Fields[3].AsString;
ADODataSet3.Next;
end;
// Изменяем ширину колонок
Xl.Columns[1].ColumnWidth:=Xl.Columns[1].ColumnWidth+5;
Xl.Columns[2].ColumnWidth:=Xl.Columns[2].ColumnWidth+5;
Xl.Columns[3].ColumnWidth:=Xl.Columns[3].ColumnWidth+5;
Xl.Columns[4].ColumnWidth:=Xl.Columns[4].ColumnWidth+5;
// Подавляем вывод диагностических сообщений
Xl.DisplayAlerts:=false;
// Сохраняем документ
Wb.SaveAs('D:\SOT\Custrer2.xls');
// Закрываем Excel и освобождаем ресурсы
//Xl.Quit;
Xl:=Unassigned;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
with form1.ADOQuery2 do begin
//Close; // закрыть файл-результат выполнения предыдущего запроса
SQL.Clear; // удалить текст предыдущего запроса
// записываем новый запрос в свойство SQL
SQL.Add('INSERT INTO Админ (Админ, ФИО, Адрес, Ставка) VALUES ("Annie", "Бойко А.К.", "Засекречено:)", 1000);');
ExecSQL;
// активизируем выполнение запроса
end;
end;
end.
... рынке — делать все, чтобы клиенты всегда уходили в хорошем настроении и всегда возвращались снова. По статистике примерно 60 тысяч человек в Иркутске пользуются услугами компьютерных клубов. Так как основными представителями таких клубов являются «Arsenal» и «XXI век », и примерно 5 % клиентов предпочитают пользоваться другими клубами, 20 % выбирают «XXI век», то на «Arsenal» приходится около 75 ...
... по телефонной линии, пользователя интересует более высокая скорость подключения. Все это может обеспечить на современном этапе развития компьютерный клуб. 1. Характеристика бизнеса и объекта Разработка и осуществление инвестиционного проекта "Компьютерный клуб "ТАЙМ-АУТ"" вызваны необходимостью предоставления компьютерных услуг населению. Сфера услуг - одна из самых быстроразвивающихся ...
... с положительностью сальдо поступлений и расходов и малым сроком окупаемости. 6. Обеспечение безопасности жизнедеятельности в системе ДО В данном дипломном проекте разработана автоматизированная информационная система дистанционного обучения по дисциплине “Финансы и кредит”. Ее использование тесно связано с применением ПЭВМ, поэтому организация рабочего места пользователя системы должна ...
... охватывало бы вопросы воспитания, взаимодействия учителей с родителями учеников и самими учениками, вопросы самоподготовки желающих учиться учеников, помощи отстающим и т.п. 5. РАЗРАБОТКА ШКОЛЬНОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ (ШИС) НА ОСНОВЕ IT-ТЕХНОЛОГИЙ ДЛЯ МОУ СОШ № 97 Поставленные в предыдущем разделе задачи могут быть решены путем организации широчайшего (относительно родителей, учеников и ...
0 комментариев