Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПомогите организовать поиск и удаление строки в Excele Найти похожие ветки
← →
rodionov_uv (2012-03-29 12:35) [0]Столкнулся с проблемой поиска и удаления строки в 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("Нашёл");
..............
выскакивает ошибка.Перепробовал все варианты из интернета везде ошибка выскакивает.
помогите плиз
← →
Медвежонок Пятачок © (2012-03-29 12:41) [1]не надо вставлять никаких данных в лист темп. тем более из делфи.
лист темп должен содержать формулы-ссылки на данные других листов.
← →
rodionov_uv (2012-03-29 17:44) [2]Всё проблему решил
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;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.071 c