p align="left">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.
Страницы: 1, 2, 3, 4
|