Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2011, 19:09   #1
Анатолий_Краснов
Новичок
Джуниор
 
Регистрация: 01.07.2011
Сообщений: 2
По умолчанию вывод в Exel Ошибка

вывожу по уроку,как показал учитель ...http://oksi-ac.ucoz.ru/index/3_8_4_svjaz...
и на месте sline := sline + DBGrid1.Fields[col].AsString + #9; ошибка
делаю запрос,в дб грид вывожу запрос по поиску...
вот код.
unit Unit5;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Grids, DBGrids, ComObj, ActiveX, OleServer,
ExcelXP, Mask;
type
TForm5 = class(TForm)
Button1: TButton;
lbl1: TLabel;
Label1: TLabel;
Label2: TLabel;
DBGrid1: TDBGrid;
Button2: TButton;
Edit2: TEdit;
Edit3: TEdit;
ExcelApplication1: TExcelApplication;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form5: TForm5;

implementation

uses Unit3;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
begin
datamodule3.ADOQuery1.Active:=false ;
datamodule3.ADOQuery1.Parameters[0].Value:=Edit1.Text;
datamodule3.ADOQuery1.Parameters[1].Value:=Edit2.Text;
datamodule3.ADOQuery1.Parameters[2].Value:=Edit3.Text;
datamodule3.ADOQuery1.Active:=true;
end;

procedure TForm5.Button2Click(Sender: TObject);
var
col, row: integer;
sline: string;
mem: Tmemo;
ExcelApp: Variant;

begin
//Screen.Cursor := crHourglass;
DBGrid1.DataSource.DataSet.DisableC ontrols;
DBGrid1.DataSource.DataSet.First;
// создаём объект Excel
ExcelApp := CreateOleObject('Excel.Application' );
ExcelApp.WorkBooks.Add('D:\r\otchet ');
ExcelApp.WorkBooks[1].WorkSheets[1].name := 'list';
// Сперва отправляем данные в memo
// работает быстрее, чем отправлять их напрямую в Excel
mem := TMemo.Create(Self);
mem.Visible := false;
mem.Parent :=form5;
mem.Clear;
sline := '';
// получаем данные из memo
for row := 0 to DBGrid1.DataSource.DataSet.RecordCo unt-1 do
begin
sline := '';
for col := 0 to DBGrid1.FieldCount-1 do
sline := sline + DBGrid1.Fields[col].AsString + #9;
mem.Lines.Add(sline);
DBGrid1.DataSource.DataSet.Next;
end;

// копируем данные в clipboard
mem.SelectAll;
mem.CopyToClipboard;

// если необходимо, то отправляем их в Excel

// если нет, то они уже в буфере обмена
ExcelApp.Workbooks[1].WorkSheets['list'].Range['a7'].select;
ExcelApp.Workbooks[1].WorkSheets['list'].paste;
ExcelApp.WorkBooks[1].WorkSheets['list'].Range['c5']:=edit1.text;
ExcelApp.WorkBooks[1].WorkSheets['list'].Range['d5']:=edit2.text;
ExcelApp.Visible := true;

end;

end.

не оч разбираюсь... прошу помоши
Вложения
Тип файла: rar r.rar (426.1 Кб, 6 просмотров)
Анатолий_Краснов вне форума Ответить с цитированием
Старый 01.07.2011, 20:14   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  for col := 0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
    sline := sline + DBGrid1.DataSource.DataSet.Fields[col].AsString + #9;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.07.2011, 07:58   #3
Анатолий_Краснов
Новичок
Джуниор
 
Регистрация: 01.07.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
  for col := 0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
    sline := sline + DBGrid1.DataSource.DataSet.Fields[col].AsString + #9;
Обьясни,пожлауйста.. .не оч понимаю -))))))
Анатолий_Краснов вне форума Ответить с цитированием
Старый 02.07.2011, 08:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Видимо Аватар хочет сказать что нет свойства Fields у ДБГрида. Но есть у датасета, привязанного к гриду, поэтому писать придется не так как ты (DBGrid1.Fields) а подлиннее DBGrid1.DataSource.DataSet.Fields.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод на экран (дерево) ошибка ArniLand Общие вопросы по Java, Java SE, Kotlin 1 30.09.2010 00:16
Ошибка в Exel файлах Ivn Microsoft Office Excel 1 09.04.2010 19:05
Ошибка в коде Exel to Access infog Microsoft Office Access 4 15.10.2009 20:02
Вывод прямоугольников на С. Ошибка зацикливания. KirTheCruel Помощь студентам 7 27.05.2008 21:19
вывод слова из файла, ошибка Ceprey Общие вопросы C/C++ 4 17.04.2008 12:05