Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите организовать поиск и удаление строки в Excele [D7, XP]


rodionov_uv ©   (2012-03-29 12:35:00) 

Столкнулся с проблемой поиска и удаления строки в Excele.
Суть программы имеем некий Excel файл с тремя вкладками : наименованием товара, наименованием работ и вкладка Temp куда вставляются значения из первых двух вкладок для дальнейшей распечатки.

вставляю строки так :

procedure TFormTovarchek.ButAddClick(Sender: TObject);
var sum : integer;
begin
 if (KollEdit.Text = '') or (TovarEdit.Text = '') then
 begin
   Application.MessageBox('У Вас заполнены не все поля.', 'Предупреждение', MB_ICONWARNING+MB_OK);
   KollEdit.SetFocus;
   Abort;
 end;
 if TovarEdit.Text <> DBGridEh1.Fields[0].DisplayText then
 begin
   Application.MessageBox('У Вас не правильно заполнено поле ввода.', 'Предупреждение', MB_ICONWARNING+MB_OK);
   TovarEdit.SetFocus;
   Abort;
 end;
 ButPrint.Enabled := True;
 ADOQuery2.Close;
 sum := StrToInt(ZenaEdit.Text)*StrToInt(KollEdit.Text);
 with ADOQuery2.Sql do
   begin
     Clear;
     Add('INSERT INTO [Temp$] (name, ed, cena, kol, itog) ');
     Add('VALUES ('''+TovarEdit.Text+''', '''+EdizmEdit.Text+''', '''+ZenaEdit.Text+''', '''+KollEdit.Text+''', '''+IntToStr(sum)+''')');
   end;
 ADOQuery2.ExecSQL;
 ADOQuery2.Close;
 KollEdit.Text := '';
 TovarEdit.Text := '';
 with ADOQuery2.SQL do
   begin
     Clear;
     Add('select *');
     Add('from [Temp$]');
   end;
 ADOQuery2.Open;
 DBGridEh2.Columns[4].Footer.Value := intToStr(SumItog);
end;


Очищаю вкладку Temp так :


procedure TFormTovarchek.ButClearClick(Sender: TObject);
var
 Excel, exSheet: Variant;
 WBk : OleVariant;
 nam: string;
begin
 nam := ExtractFilePath(Application.ExeName)+'Справочник.xls';
 ADOConnection2.Connected := False;
 ADOQuery2.Close;
 Excel := CreateOleObject('Excel.Application');
 WBk := Excel.WorkBooks.Open(nam);
 Excel.Visible := False;
 exSheet := WBk.WorkSheets[3];
 exSheet.Range['A2:T100'].Clear;
 exSheet := Unassigned;
 WBk.Close(SaveChanges := True);
 Excel.Quit;
 ADOConnection2.Connected := True;
 ADOQuery1.Open;
 ADOQuery2.Open;
 DBGridEh2.Columns[4].Footer.Value := intToStr(SumItog);
end;


пробовал искать так :


var
vFind: OleVariant;
s: String;
..............
vFind:=vFind.Find(s);
 if Pointer(IDispatch(vFind))<>nil then ShowMessage('Нашёл');
..............


выскакивает ошибка.Перепробовал все варианты из интернета везде ошибка выскакивает.

помогите плиз


rodionov_uv   (2012-03-29 17:44:00) [1]

Всё проблему решил


procedure TFormTovarchek.ButDelClick(Sender: TObject);
var
 Excel, exSheet : Variant;
 WBk : OleVariant;
 nam : string;
 i : integer;
begin
 ButDel.Enabled := False;
 nam := ExtractFilePath(Application.ExeName)+'Ñïðàâî÷íèê.xls';
 i := ADOQuery2.RecNo;
 ADOConnection2.Connected := False;
 ADOQuery2.Close;
 Excel := CreateOleObject('Excel.Application');
 WBk := Excel.WorkBooks.Open(nam);
 Excel.Visible := False;
 Excel.DisplayAlerts:=False;
 exSheet := WBk.WorkSheets[3];
 exSheet.Rows[i+1].Delete;
 exSheet := Unassigned;
 WBk.Close(SaveChanges := True);
 Excel.Quit;
 ADOConnection2.Connected := True;
 ADOQuery1.Open;
 ADOQuery2.Open;
 DBGridEh2.Columns[4].Footer.Value := intToStr(SumItog);
end;


Медвежонок Пятачок   (2012-03-29 12:41:00) [2]

не надо вставлять никаких данных в лист темп. тем более из делфи.
лист темп должен содержать формулы-ссылки на данные других листов.


Наверх

Титульная страница Поиск, карта сайта Написать письмо