![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
последняя строка Excel
Фуфик © (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.