Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Читаю из Excel столбец с бухгалтерскими данными Я сам не стронник такого подхода, но других алтернатив нет ... Там куча пустых ячеек, которые в базу ложить не хотелось бы в VBA есть спец функция ISEmpty() Вопрос : как проверить из Delphi программно что данная ячейка не пустая ? С уважением Jojo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 06:58 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
код покажи, где читаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 07:34 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 07:41 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Не хотелось бы задавать постоянно BegStr:=4; -начальная строка чтения в excel EndStr:=253; - конечная строка чтения в excel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 07:45 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
я, may be :), не права, но разве пустые ячейки не кладутся null-ом? ЗЫ я тут борюсь за чистоту языка: "других альтернатив" не говорят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 07:48 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Согласен :) очень стыдно ... код несимпатичный Да я млин тока начинаю кодить ... для меня Null это не заполенное поле ... в базе ... Чё делать то ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 07:55 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Можно попробовать такой вот извратно-нестандартный подход созтать перебенную - метка 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; Это только идея. Надеюсь я верно понял идею вопроса и верно изложил свою идею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 09:49 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Sorry за v:=test; здесь v:=true; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 09:51 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Если в ячейке пусто, то варианту присвоится Unassigned, на его наличие и нужно проверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 09:56 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Мужики большое спасибо 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); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 12:47 |
|
||
|
Вопросик по Delphi&Excel
|
|||
|---|---|---|---|
|
#18+
Кстати в одном 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 12:52 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32331499&tid=2115811]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
104ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 380ms |

| 0 / 0 |
