Главная страница
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.023 c
7-1072511631
Evgeniy_K
2003-12-27 10:53
2004.03.28
Заголовок активного окна


14-1077646685
Gero
2004-02-24 21:18
2004.03.28
Вечный вопрос: Выбор ОС (Навеяно очередным BSOD ом)


7-1073349080
dolphin1
2004-01-06 03:31
2004.03.28
winsight spy++


8-1069441364
Eagle Owl
2003-11-21 22:02
2004.03.28
Direct3DRM


1-1077848817
Dober_m@N
2004-02-27 05:26
2004.03.28
как динамически создать форму