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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

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

Сообщение 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. Что можете посоветовать? а то вариантов уже нет?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

galover
опечатался читать

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

delete all from T1;
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

true /== T2.checked
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а еще лучше проверить наличие записей в Т2, а то 310 получите.
и delete all не пашет если на t1 наложены другие условия.
if getfirst fastfirstrow t2=0 then insert ....
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
Спасибо за ответ!!!!

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

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

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

Но главная проблема осталась - это отчет Excel. Вообще не пойму где косяк. У меня в отчете ячейки некоторые пустые после формирования (или отчет вообще какой-то поломанный - нет форматирования, хотя код точно отрабатывает). Делал лог -> выводимые значения есть, но в отчете они почему-то отсутствуют. Ничего не пойму, отчет поломался после того, как поставил условие на выборку, до этого все работало нормально (или может проблема не проявлялась). КУда еще копнуть? :-(
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1.310 - код ошибки на отсутствие записи.
2.=0 - правильно, вставлять только если есть записи.
3. Обычно подобное бывает, когда где то ниже выводят левые даные или идет объединение ячеек.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

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

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

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

Спасибо!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

не "в" а "из".
левые - неправильно определены координаты.
для начала закоментируйте объединение. Excel вообще материться когда идет объединение не пустых ячеек.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
усе понял
Ответить