Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.028 c
3-1076403255
SM
2004-02-10 11:54
2004.03.28
Как узнать значение автоинкрементарного поля после SQL


1-1078469102
Alex_DM
2004-03-05 09:45
2004.03.28
Вызов модального окна. Возможно ли это?


7-1073908494
S@shka
2004-01-12 14:54
2004.03.28
Есть ли люди работающие с TApdComPOrt?


1-1077871975
Гарик
2004-02-27 11:52
2004.03.28
Как програмно из Delphi 7 изменить свойство компонента в Rave R.


3-1075195078
13-ый
2004-01-27 12:17
2004.03.28
Номер записи




   Наверх