Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Ошибка из Excel. Не пойму почему.   Найти похожие ветки 

 
Goida ©   (2004-03-11 16:14) [0]

Вот такой код:
var
 i: integer;
 spOperPolyShow: TStoredProc
...
with spOperPolyShow do
     while Eof do
       begin
         ExcelApp.Range["A1", EmptyParam].Value := i;
         inc(i);
         Next;
       end;

при попытке присвоить целое значение ячейке, VB в Excel выдает сообщение о том, что:

Run-time error: "13"
Type mismatch

Но при этом значение в ячейку помещаются... Объясните в чем дело?


 
Digitman ©   (2004-03-11 16:21) [1]


> while Eof


может, все-таки while not Eof ?


 
Digitman ©   (2004-03-11 16:22) [2]


> при этом значение в ячейку помещаются


что видим в рез-те в ячейке ?


 
Goida ©   (2004-03-11 16:23) [3]

Да, правильно :)

Но вопрос не в этом.


 
Goida ©   (2004-03-11 16:25) [4]


> что видим в рез-те в ячейке ?

Соответствующие номера. Я просто поставил цикл посмотреть как долго будет работать, а чтобы видеть, что не зависла машина, захотел выводить номера итераций в Excel.


 
Digitman ©   (2004-03-11 16:25) [5]

итак, что видим после выполнения этого кода в ячейке А1 ?


 
Digitman ©   (2004-03-11 16:27) [6]


> Соответствующие номера


какие номера ? пишешь все время в одну и ту же ячейку А1
если перед циклом ты стоял на первой записи в НД и цикл не был прерван исключением, ты должен увидеть в ячейке значение, соответствующее числу записей в НД .. есть такое соответствие ?


 
Digitman ©   (2004-03-11 16:36) [7]

var
i: integer;
spOperPolyShow: TStoredProc
...
with spOperPolyShow do
begin
    i := 1;
    First;
    while not Eof do
      try
        ExcelApp.Range["A" + IntToStr(i), EmptyParam].Value := i;
        inc(i);
        Next;
      except
        on e: EOleSysError do
          Showmessage(e.message + #10 + inttostr(loword(e.errorcode)) + #10 + InttoStr(i));
        else
          raise;
      end;
end;


 
Goida ©   (2004-03-11 16:40) [8]

Вот что я понял: это ошибка не из-за передачи неправильной. Я использую шаблон, написанный до меня (файл *.xls). Так вот, там есть макросы. По всей видимости, какой-то макрос глючит. Так что это уже мои собственные заморочки - разбираться.
Спасибо, за помощь.


 
YurikGl ©   (2004-03-11 17:50) [9]

Пользуй лучше ExcelApp.Range["A" + IntToStr(i),"A" + IntToStr(i)].


 
Goida ©   (2004-03-11 18:05) [10]

2YurikGl
Это не изменит результата. Да я, к тому же, и разобрался уже.
Спасибо.


 
olookin ©   (2004-03-11 18:12) [11]

вместо подстановки i: integer подставьте v: Variant

что то типа такого
for i:=...
v:=i;
Excelapp.range[...]:=v;


 
Goida ©   (2004-03-11 18:22) [12]

Странно, говорю что разобрался а писать все равно продолжают... Я в недоумении.
Спасибо всем, спасибо, спасибо...



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
14-1077969040
Типа... Ламер и всё такое..
2004-02-28 14:50
2004.03.28
WinXP


3-1077719673
ADER
2004-02-25 17:34
2004.03.28
Фильтр?!


7-1072386980
~GaMeRd~
2003-12-26 00:16
2004.03.28
Drag&Drop


1-1079026882
Андрей__
2004-03-11 20:41
2004.03.28
Про Popup меню


1-1078490679
Julliete
2004-03-05 15:44
2004.03.28
Как использовать Enter вместо Tab при переходе