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 позволяют реализовать разработку в ином коммерческом пакете реляционного типа, где кроме языка запросов используется язык определения данных для создания базовых таблиц.
Таким образом, путем автоматизации приложений MicrosoftOffice мы можем создавать сложные отчеты, содержащие таблицы, диаграммы, вычисляемые значения, равно как и использовать для этой цели другие возможности MicrosoftOffice (например, сервисы построения сводных таблиц).
Разработанная база данных является законченным программным продуктом для поддержания информационных потребностей и может быть легко расширена при изменении информационных потребностей пользователя.
СПИСОК ЛИТЕРАТУРЫ
1. Буслик М.М. Модели и структуры данных.
2. Мартин Дж. Организация баз данных в вычислительных системах.-М.: Мир, 1980.-608с.
3. Глушаков С.В., Мельников И.В. Базы данных,включая SQL2 и SQLSERVER:Учебник для вузов.-Харьков.: Фолио,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';
// Создаемсводнуютаблицу