Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопросик по Delphi&Excel / 12 сообщений из 12, страница 1 из 1
21.11.2003, 06:58
    #32330880
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Читаю из Excel столбец с бухгалтерскими данными
Я сам не стронник такого подхода, но других алтернатив нет ...
Там куча пустых ячеек, которые в базу ложить не хотелось бы
в VBA есть спец функция ISEmpty()
Вопрос : как проверить из Delphi программно что данная ячейка не пустая ?

С уважением Jojo
...
Рейтинг: 0 / 0
21.11.2003, 07:34
    #32330888
1
1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
код покажи, где читаешь
...
Рейтинг: 0 / 0
21.11.2003, 07:41
    #32330891
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
FullFileName := formsetup.EditBase.text + '???? ?????????????.xls';

v := CreateOleObject('Excel.Application');
v.Workbooks.Open[ FullFileName];
v.Sheets['??????????'].Activate;

dm.TBase.TableName:='factor.dbf';
dm.TBase.Active:=false;
dm.TBase.Active:=true;

BegStr:=4;
EndStr:=253;

for i:=BegStr to EndStr do
begin
try
if v.Sheets['??????????'].Cells[i, 6].Value<>0 then //Здесь нада проверять
begin
dm.TBase.Append;
dm.TBase.FieldByName('Npp').AsFloat:=(i-3);
dm.TBase.FieldByName('Nfac').AsString:=v.Sheets['??????????'].Cells[i, 4].Value;
dm.TBase.FieldByName('fac_num').AsFloat:=v.Sheets['??????????'].Cells[i, 6].Value;
dm.TBase.FieldByName('fac_pr').AsFloat:=v.Sheets['??????????'].Cells[i, 8].Value;
dm.TBase.Post;
end;
finally
dm.TBase.Append;
dm.TBase.FieldByName('Npp').AsFloat:=(i-3);
dm.TBase.FieldByName('Nfac').AsString:=v.Sheets['??????????'].Cells[i, 4].Value;
dm.TBase.FieldByName('fac_num').AsFloat:=1;
dm.TBase.FieldByName('fac_pr').AsFloat:=1;
dm.TBase.Post;
end;

end;
...
Рейтинг: 0 / 0
21.11.2003, 07:45
    #32330894
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Не хотелось бы задавать постоянно
BegStr:=4; -начальная строка чтения в excel
EndStr:=253; - конечная строка чтения в excel
...
Рейтинг: 0 / 0
21.11.2003, 07:48
    #32330897
Maybe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
я, may be :), не права, но разве пустые ячейки не кладутся null-ом?

ЗЫ я тут борюсь за чистоту языка: "других альтернатив" не говорят
...
Рейтинг: 0 / 0
21.11.2003, 07:55
    #32330903
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Согласен :) очень стыдно ... код несимпатичный
Да я млин тока начинаю кодить ...
для меня Null это не заполенное поле ... в базе ...
Чё делать то ? :)
...
Рейтинг: 0 / 0
21.11.2003, 09:49
    #32331004
Vladimir_t2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Можно попробовать такой вот извратно-нестандартный подход

созтать перебенную - метка valid-ности данных переменную - variant типа
....
var
v:boolean;
test:variant;
........
в начале тела цикла
v:=test;
try
test:=v.Sheets['??????????'].Cells[i, 4].Value;
...............
test:=v.Sheets['??????????'].Cells[i, 8].Value;
except
при присвоении NULL значения VAriant-u возникает искл.сит.
v:=false;
end;

if v then
begin
Код работы с БД
end;


Это только идея.
Надеюсь я верно понял идею вопроса и верно изложил свою идею
...
Рейтинг: 0 / 0
21.11.2003, 09:51
    #32331007
Vladimir_t2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Sorry за v:=test; здесь v:=true;
...
Рейтинг: 0 / 0
21.11.2003, 09:56
    #32331017
Speaker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Если в ячейке пусто, то варианту присвоится Unassigned, на его наличие и нужно проверять.
...
Рейтинг: 0 / 0
21.11.2003, 12:47
    #32331299
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Мужики большое спасибо

Vladimir_t2 попробовал твой совет, все поехало ...

а сделать покрасивей, то получается что ...

test:=Unassigned;
if Assigned(test) ....
***************************
Excel:=StartExcel(True);
Excel.Visible:=false;
ExcelFileOpen(Excel,FullFileName);
Excel.Sheets['Показатели'].Activate;

for i:=BegStr to EndStr do
begin
null:=test;
try
test:=Excel.Sheets['Показатели'].Cells[i, 6].Value;
except
null:=false;
end;
if null then
begin
dm.TBase.Append;
dm.TBase.FieldByName('Npp').AsFloat:=(i-3);
s:=Excel.Sheets['Показатели'].Cells[i, 4].Value;
s:=ReplaceStrAll(s,'.','_');
dm.TBase.FieldByName('Nfac').AsString:='p'+s;
dm.TBase.FieldByName('fac_num').AsFloat:=Excel.Sheets['Показатели'].Cells[i, 6].Value;
dm.TBase.FieldByName('fac_pr').AsFloat:=Excel.Sheets['Показатели'].Cells[i, 8].Value;
dm.TBase.Post;
end;
end;
QuitExcel(Excel);
...
Рейтинг: 0 / 0
21.11.2003, 12:52
    #32331318
Jojo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Кстати в одном FAQ нашел полезные функции может кому пригодится
для работы с Excel:

//Запуск Excel
function StartExcel(IsVisible:boolean):variant;
begin
try
result:=UnAssigned;
result:=CreateOleObject('Excel.Application');
result.Visible:=IsVisible;
result.DisplayAlerts:=false;
except
raise Exception.Create('Не могу запустить Excel!');
end;
end;

//Открыть файл
procedure ExcelFileOpen(Excel:variant; FileName:string);
begin
try
Excel.WorkBooks.Open(FileName);
except
raise Exception.Create('Не могу откр файл!');
end;
end;

//Закрыть Excell
procedure QuitExcel(var Excel:variant);
begin
try
Excel.Quit;
finally
Excel:=Unassigned;
end;
end;
...
Рейтинг: 0 / 0
21.11.2003, 14:26
    #32331499
Papka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросик по Delphi&Excel
Ну раз пошла такая пьянка то

http://delphibase.endimus.ru/?action=viewfunc&topic=winoffice&id=10475
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопросик по Delphi&Excel / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]