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

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

последняя строка Excel


Страницы:   1 2

Фуфик ©   (2009-10-19 10:04:00) 

Здравствуйте
Подскажите как правильней определить последнею строку Excel, мне нужно пробежаться по циклу до последней строки  Excel’я что-то типа while not eof.
Придумал кривоватый вариант, но хотелось бы более оптимальный и правильный.
Для более лучшего понятия моей проблемы привожу весь код

Var
a: String;
XL: variant;
X: Integer;
Begin
XL := CreateOleObject('Excel.Application');
XL.DisplayAlerts := False;
XLS.WorkBooks.Open(‘Ostatki.xls’);  
x:= 2;
a:= XLS.Cells[x,4].value;

While a<>'' do   // то что пришло в голову
BEGIN
If
ADOTable1.Locate('kod_tovara', XLS.activesheet.Cells[x,1].value, [loCaseInsensitive, loPartialKey])=
  True  Then
   Begin
     ADOTable1.Edit;
     ADOTable1ostatok.AsInteger:= XLS.Cells[x,5].value;
     ADOTable1cena.AsCurrency:= XLS.Cells[x,6].value;
     ADOTable1.Post;
     x:= x+1;
   end else  begin
   ADOTable1.Insert;
     ADOTable1kod_tovara.AsInteger:=  XLS.activesheet.Cells[x,1].value;
     ADOTable1naimenov.AsString:= XLS.activesheet.Cells[x,4].value;
     ADOTable1ostatok.AsInteger:= XLS.activesheet.Cells[x,5].value;
     ADOTable1cena.AsCurrency:= XLS.activesheet.Cells[x,6].value;
   ADOTable1.Post;
   X:= x+1;
   end;
a:= XLS.Cells[x,4].value;
END;


Anatoly Podgoretsky   (2009-10-19 11:28:00) [21]


> Подскажите как правильней определить последнею строку Excel

А что такое последнея строка Экселя, по крайней мере есть три определения и это разные строки.


sniknik   (2009-10-19 11:16:00) [22]

количество переменных здесь совершенно не причем...

и вообще, само появление ADOTable в коде, это как семафор с с мигающей красной надписью "пишет ламер".
заявления, что у него что-то оптимальней смешны независимо от того правда это или нет (даже ламер может написать хорошо. случайно.).


Фуфик   (2009-10-19 10:49:00) [23]


> не смеши людей ADOTable в принципе не может быть оптимальней.
> .. с ADODataSet-ом, это как напишешь.


Согласен стобой быть может в другом случае такое. В моем случае используются всего две переменные a и XL
И мне они нужны лишь при нажатии одной кнопки обновить, и раде этого закидывать на ыорму ещё один компонент мне кажется лишним


sniknik   (2009-10-19 10:41:00) [24]

> мой вариант намного оптимальней
не смеши людей ADOTable в принципе не может быть оптимальней... с ADODataSet-ом, это как напишешь.


Фуфик   (2009-10-19 10:35:00) [25]

По гуглив нашел, вошем мой вариант намного оптимальней


> KilkennyCat ©   (19.10.09 10:09) [2]
> последняя строка в листе Excel имеет номер 65536


Мой зашкалил за 800000 проверять дальше нестал :)

Спасибо за внимание. Код лучше оставлю как есть.


McSimm   (2009-10-19 10:18:00) [26]


> KilkennyCat ©   (19.10.09 10:09) [2]
>
> последняя строка в листе Excel имеет номер 65536

не обязательно, у меня это 1048576


Рамиль   (2009-10-19 10:18:00) [27]


> KilkennyCat ©   (19.10.09 10:09) [2]

Это смотря какой Excel


KilkennyCat   (2009-10-19 10:09:00) [28]

последняя строка в листе Excel имеет номер 65536


RWolf   (2009-10-19 10:07:00) [29]

можно подключиться к экселевской таблице, как к источнику данных, через то же ADO; тогда, под идее, можно обходиться пресловутым Eof.


Страницы:   1 2

Наверх

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