![]() |
|
|
#16
|
||||
|
||||
|
А там же, на вкладке TChart
|
|
#17
|
|||
|
|||
|
у меня 7 delphi и в упор нет того компонента(, что за нескладуха, посмотрел всю палитру. мот его скачать где можно?
Последний раз редактировалось djmix, 10.07.2014 в 20:02. |
|
#18
|
|||
|
|||
|
приветствую народ! полный ступор, не имея компоненты TDBCrossTabSource.
как блин хотя бы можно копировать данные в excel из dbgid ? ((( хотя я не выдержу такого извращения( |
|
#19
|
||||
|
||||
|
На вкладке Servers палитры компонентов есть ExcelApplication, его нужно кинуть на форму и выставить свойство ConnectKind как ckNewInstance, вот пример передачи данных из StringGrid в Excel (drkb)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
WorkBk: _WorkBook; // определяем WorkBook
WorkSheet: _WorkSheet; // определяем WorkSheet
I, J, K, R, C: Integer;
IIndex: OleVariant;
TabGrid: Variant;
begin
if GenericStringGrid.Cells[0, 1] <> '' then
begin
IIndex := 1;
R := GenericStringGrid.RowCount;
C := GenericStringGrid.ColCount;
// Создаём массив-матрицу
TabGrid := VarArrayCreate([0, (R - 1), 0, (C - 1)], VarOleStr);
I := 0;
// Определяем цикл для заполнения массива-матрицы
repeat
for J := 0 to (C - 1) do
TabGrid[I, J] := GenericStringGrid.Cells[J, I];
Inc(I, 1);
until
I > (R - 1);
// Соединяемся с сервером TExcelApplication
ExcelApplication1.Connect;
// Добавляем WorkBooks в ExcelApplication
ExcelApplication1.WorkBooks.Add(xlWBatWorkSheet, 0);
// Выбираем первую WorkBook
WorkBk := ExcelApplication1.WorkBooks.Item[IIndex];
// Определяем первый WorkSheet
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Сопоставляем Delphi массив-матрицу с матрицей в WorkSheet
Worksheet.Range['A1', Worksheet.Cells.Item[R, C]].Value := TabGrid;
// Заполняем свойства WorkSheet
WorkSheet.Name := 'Customers';
Worksheet.Columns.Font.Bold := True;
Worksheet.Columns.HorizontalAlignment := xlRight;
WorkSheet.Columns.ColumnWidth := 14;
// Заполняем всю первую колонку
WorkSheet.Range['A' + IntToStr(1), 'A' + IntToStr(R)].Font.Color := clBlue;
WorkSheet.Range['A' + IntToStr(1), 'A' + IntToStr(R)].HorizontalAlignment := xlHAlignLeft;
WorkSheet.Range['A' + IntToStr(1), 'A' + IntToStr(R)].ColumnWidth := 31;
// Показываем Excel
ExcelApplication1.Visible[0] := True;
// Разрываем связь с сервером
ExcelApplication1.Disconnect;
// Unassign the Delphi Variant Matrix
TabGrid := Unassigned;
end;
end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
djmix (17.07.2014)
| ||
|
#20
|
||||
|
||||
|
Ну вот как так-то? Мне хватило 10 минут изучения TDBChart в D7, чтобы найти решение без TDBCrossTabSource. Ну неужели нельзя было просто по вкладочкам этого компонента потыкать?
Решение проблемы: 1. ПКМ на DBChart1 2. Выбрать Edit chart... 3. На второй линии выбрать вкладку Series и в ней нажать кнопку Add... 3.1. Из галереии выбрать нужный график 4. На первой линии выбираем вкладку Series 4.1 В ней выбираем вкладку Data source. 4.2 В выпадающем списке выбрано по умолчанию значение Random values. Вместо него выбираем Dataset (появятся дополнительные свойства) 4.3. Заполняем появившиеся свойства: (Dataset, Labels, Bar) Все. Последний раз редактировалось Страдалецъ, 12.07.2014 в 03:19. |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
djmix (12.07.2014)
| ||
|
#21
|
|||
|
|||
|
Страдалец , спасиб за терпение), но прикладываю скрин вообщем то действия на котором всё закончилось в моих действиях , ещё при первом твоём посте про решение с dbchart
Последний раз редактировалось djmix, 12.07.2014 в 09:56. |
|
#22
|
||||
|
||||
|
Видимо DBchart пытается получить список полей из запроса, а подключение не проходит. Причина скорее всего в том, что потерялся параметр Extended property в AdoConnection (есть такой баг в Delphi). Попробуйте сначала активировать в дизайнмоде AdoConnection,AdoQuery а уже потом настроить TDBChart.
|
|
#23
|
|||
|
|||
|
вот собственно ошибки при попытке активировать
|
|
#24
|
|||
|
|||
|
усё сложно))
|
|
#25
|
||||
|
||||
|
ConnectionString проверь
В первой же ошибке написано, что не так. Написано, что неправлиьно указан провайдерю |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
djmix (15.07.2014)
| ||
|
#26
|
|||
|
|||
|
Товарищи, Спасибо!! решился вопрос странным образом, пока вручную не создал столбцы в ADOQuery, по которым сделан SQL запрос (+ один из них суммирует кол-во f4), всё , получил желаемое.
сейчас вопрос, можно ли график этот сформированный в Word или Excel переносить. хочу полностью формировать отчёт по конкретному пользователю, + период выбирать. |
|
#27
|
|||
|
|||
|
аууу нарооод(
|
|
#28
|
|||
|
|||
|
Ответьте пожалуйста на два вопроса.
подскажите как правильно создать программно столбики в adoquery типа adoquery.fields.add () и как правильно организовать печать из dbgrid1 |
|
#29
|
|||
|
|||
|
как отфильтровать по двум столбцам пишу что то подбное
и так 'where F2='+ label9.Caption+' AND F4='+ edit3.text+' и эдак 'where (F2='+ label9.Caption+') AND (F4='+ edit3.text+') выдаёт Ошибка синтаксиса (пропущен оператор в выражении запроса) что подставить необходимо? Спасибо заранее |
|
#30
|
||||
|
||||
|
Так вы фильтром или запросом это пытаетесь сделать? Для фильтра where уберите, а для запроса возможно пробел перед where надо добавить. Вообще посмотрите текст запроса итоговый, там будет все понятно, чего не хватает, а что лишнее.
К тому-же неясно какого типа поля F2 и F4 у вас. Если это текст, то надо обрамлять значение кавычками. |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
djmix (07.08.2014)
| ||