Страница 1 из 1

Вообще не знаю куда копать

Добавлено: 16 июн 2008, 19:55
galover
Надеюсь на помощь, потому что скоро совсем крыша поедет. Есть у меня пара глобальных (уровня проекта) таблиц. Есть фейс, в котором я заполняю одну из таблиц данными другой таблицы. Код примерно такой:

Код: Выделить всё

//---global.vih
table struct T1...;
table struct T2...;

// FaceHelper.vip
interface Helper;

procedure FillData;
{
   delete all from T2;
   
   insert into T1 
     select * from T2 where ((true == T2.checked));
}

Так вот не смотря на то, что в T2 записей удовлетворяющих условию нет, все равно вставляется одна (sic!) запись с нулевыми значениями. Из-за этого (или еще чего -> предстоит выяснить) у меня ломается вывод отчета в Excel средствами ExcelLib.dll. Что можете посоветовать? а то вариантов уже нет?

Добавлено: 16 июн 2008, 19:57
galover
galover
опечатался читать

Код: Выделить всё

delete all from T1;

Добавлено: 16 июн 2008, 20:55
edward_K
true /== T2.checked

Добавлено: 16 июн 2008, 20:57
edward_K
а еще лучше проверить наличие записей в Т2, а то 310 получите.
и delete all не пашет если на t1 наложены другие условия.
if getfirst fastfirstrow t2=0 then insert ....

Добавлено: 17 июн 2008, 12:27
galover
edward_K
Спасибо за ответ!!!!

Есть непонятки:
что за 310??
if getfirst fastfirstrow t2=0 then insert ....
может
if getfirst fastfirstrow t2<>0 then insert into T1 ...

или что имелось в виду???

C жесткой подцепкой - выбирается все как нужно. Это странно, должно и без них все нормально работать :-(

Но главная проблема осталась - это отчет Excel. Вообще не пойму где косяк. У меня в отчете ячейки некоторые пустые после формирования (или отчет вообще какой-то поломанный - нет форматирования, хотя код точно отрабатывает). Делал лог -> выводимые значения есть, но в отчете они почему-то отсутствуют. Ничего не пойму, отчет поломался после того, как поставил условие на выборку, до этого все работало нормально (или может проблема не проявлялась). КУда еще копнуть? :-(

Добавлено: 17 июн 2008, 13:01
edward_K
1.310 - код ошибки на отсутствие записи.
2.=0 - правильно, вставлять только если есть записи.
3. Обычно подобное бывает, когда где то ниже выводят левые даные или идет объединение ячеек.

Добавлено: 17 июн 2008, 16:16
galover
Не понял.
1) Т.е. если вставлять записи в пустую таблицу, то получу 310? Вроде ни разу еще не выскакивало ничего подобного. Или не так понял.

2) Так мне и нужно вставить записи в пустую таблицу -> я ее сначала очищаю от старых данных. Потом делаю вставку. Зачем мне дополнительное условие на наличие записей в модифицируемой таблице

3) Я вообще уже отчаялся найти причину. Отчет не работает. Мистика какая-то, чесслово :(. Объединений ячеек там куча - это да. А что имеется в виду под левыми данными?

Спасибо!

Добавлено: 17 июн 2008, 16:42
edward_K
не "в" а "из".
левые - неправильно определены координаты.
для начала закоментируйте объединение. Excel вообще материться когда идет объединение не пустых ячеек.

Добавлено: 17 июн 2008, 17:31
galover
edward_K
усе понял