Как работать с таблицей Handcoded?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Как работать с таблицей Handcoded?

Сообщение Evgeny2006 »

Версия 6.0 0915
Имеется БД 'TopSpeed' состоящая из 3-х файлов (на ней я учусь). С помощью AppGen сгенерирована программа для заполнения и обновления данных. Понадобилось написать вручную программу, которая выбирает данные из двух таблиц и формирует новую таблицу. С чем столкнулся. Первая таблица нормально работает, а вторая, связанная с ней, хотя и обрабатывается отдельно, показывает, что в ней нет записей. Но записи есть. Похоже, что как-то надо открывать БД, но не могу найти. Подскажите,пожалуйста, как это делается.
Мой e-mail: e.baranov2006@gmail.com

Заранее благодарен.
Evgeny2006
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Re: Как работать с таблицей Handcoded?

Сообщение StillZero »

вопрос задан некорректно...
куски кода бы помогли указать...
6.0 не лучший вариант, переходи на 6.3
по аэродрому...
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: Как работать с таблицей Handcoded?

Сообщение Evgeny2006 »

Большое спасибо за быструю реакцию.
У меня две версии Clarion: 6.0 0915 и 7.0.0 5768. То что смог скачать. Сам чувствую, что обе версии с глюками, но других нет.
Теперь куски кода. Я, честно говоря, не знаю нужно их зиповать. На форуме появился от безисходности. Ранее в форумах не участвовал. Так даю, что есть. Файлы TLs, Coridors, Region созданы в Dictionary. Файл TLView - новый. в который я и хочу поместить данные из TLs и Coridors. Поскольку нарвался на не понимание со стороны проги, сделал вырезки и создал тестовый файл. Ох, что-то много пишу. Итак текст проги.

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

    PROGRAM
    INCLUDE('Keycodes.CLW')
    INCLUDE('Errors.CLW')

    MAP
Main            PROCEDURE
BrowseFormView  PROCEDURE
    END


Coridors   FILE,DRIVER('TopSpeed'),PRE(COR)
!corTLkey  KEY(COR:numTL),DUP,NOCASE
Rec2       RECORD
numCor      LONG
numTL       LONG
nameCor     STRING(40)
region      STRING(20)
lenCor      LONG
widCor      LONG
           END  
          END        

TLView     FILE,DRIVER('TopSpeed'),PRE(TLV),CREATE  
!TLVTLkey  KEY(TLV:numCor),NOCASE,OPT
Rec3       RECORD
numCor      LONG
numTL       LONG
nameCor     STRING(40)
region      STRING(20)
napr        SHORT
cepn        BYTE
lenCor      LONG
widCor      LONG
           END  
          END        


    CODE
    Main  

!-----------------------------------------------------
Main   PROCEDURE
AppFrame APPLICATION('Формирование VIEW'),AT(,,280,200),SYSTEM,RESIZE,MAX
      MENUBAR
       MENU('&File'),USE(?File)
         ITEM('Создать View'),USE(?FileFormView)
         ITEM,SEPARATOR
         ITEM('E&xit'),USE(?FileExit),STD(STD:Close)
       END
      END
     END

    CODE
    OPEN(AppFrame)
    ACCEPT
     CASE ACCEPTED()
     OF ?FileFormView
      START(BrowseFormView,55000)
     END
   END

BrowseFormView PROCEDURE
varnapr SHORT
varcepn BYTE
   CODE

   OPEN(Coridors)
   RecCors# = RECORDS(Coridors)
   MESSAGE('Число записей in Coridors = ' & RecCors#)

   CLOSE(Coridors)
   return
Последний раз редактировалось Evgeny2006 29 Июль 2010, 13:28, всего редактировалось 1 раз.
Evgeny2006
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Как работать с таблицей Handcoded?

Сообщение Дед Пахом »

В качестве гипотезы: попробуйте добавить атрибут THREAD к объявлению файлов (хотя бы коридоров).

PS
неплохо бы ещё и проверять файловые операторы на ошибки (ERRORCODE()), и второе - Вы уверены, что файл Coridors.tps в текущей папке имеет записи?
С уважением, ДП
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: Как работать с таблицей Handcoded?

Сообщение Evgeny2006 »

THREAD добавил для Coridors. Результат тот же.

Coridors FILE,DRIVER('TopSpeed'),PRE(COR),THREAD
Я согласен с необходимостью проверок на ошибки. Но в данном примере я определяю только количество записей в файле. И когда я обнаружил ноль записей, я забыл про необходимость проверки. Записи же есть.
Вышел из Clarion. Запустил exe файл. Результат тот же.
В этой же папке находится файл Coridors. Проверил его содержимое. Он содержит 3 записи.
К сожалению не знаю, как вставить сюда изображение файла, в котором содержатся записи. Я сделал Print Screen, а полученную картинку вставил с помощью Paint.
Я все-же подозреваю, что поскольку Coridors строился с помощью Dictionary, то имеется какая-то связь с файлом .dct.
Я разнес файлы по разным папкам, но все без успеха.
Почему у меня такие подозрения. Есть БД, содержащая отдельные файлы, которые связаны с ней. То что я переместил сам файл в другую папку, файл по большому счету не является независимым. Должен быть такой подход- открыть БД, открыть файл. Но как открывать БД, я и не могу найти. Может в Clarion другой подход?
Если бы Вы дали e-mail. то я бы Вам отправил по почте эти файлы. Они всего-то 5 кб.
Мой e-mail: e.baranov2006@gmail.com

Искренне ваш
Evgeny2006
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Как работать с таблицей Handcoded?

Сообщение Дед Пахом »

Я не могу понять, что значит открывать БД. Нет, могу, но в случае TPS это не имеет смысла - все файлы/таблицы независимы, нет никакой БД в смысле единого целого.

Можете выслать мне для проверки Ваши таблицы (почта в моём профайле), но у нас тут жара под 40 оборотов, делать ничего не хочется.
С уважением, ДП
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: Как работать с таблицей Handcoded?

Сообщение Evgeny2006 »

Относительно БД. Я вообщем-то выходец из FoxPro. поэтому такое мышление.
Вы оказались правы насчет необходимости осуществлять проверку на ошибки.
Вставил проверку. Прога ругается, что "Инвалидное определение записи". Сверил построчно.
Все один к одному. Единственное сомнение: поле region определялось с учетом Validity Check.
Также нет четкого понимания где хранятся ключи. Прикладываю файлы.
Жара в Питере послабее, но на дачу ехать не хочу, т.к. там еще жарче, а дома есть кондиционер.
Evgeny2006
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: Как работать с таблицей Handcoded?

Сообщение Evgeny2006 »

Я не зря бубнил все время про БД. К сожалению я новичок в Clarion и не все успел прочитать.
Более того, зная об ООП в языке, я оставлял эти темы на потом.
Вчера вечером в продолжение открытия файлов ручками, я обнаружил, что требуется специальное открытие файлов.
Этот кусок кода генерится самой системой. Можно, конечно, его скопировать и на его основе попытаться доделать свою задачку. Это я и буду делать.
В свете изложенного я составил тестовую прогу , в которой выделил из Dictionary только один файл. Заполнил несколько записей и Что. Опять не работает. Хотя в первом тесте праймери файл открывался, а вторичный нет. В последнем тесте и праймери перестал открываться.
Винить ООП смысла нет, а вот авторы системы делают все, чтобы в нее нельзя было влезть с боку.
Задача, которую я пытаюсь решить заключается в следующем.
Имеется несколько связанных файлов и мне надо без генератора отчета подбить разные итоги или составить разные итоговые таблицы для просмотра. Вроде бы подходит VIEW, но представление в Clarion плохенькое.
Вот и вынужден переходить на работу ручками.
Evgeny2006
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Как работать с таблицей Handcoded?

Сообщение Дед Пахом »

У Вас неверно были задекларированы (а сейчас просто закомментированы) ключи. Чтобы их правильно описать, откройте TopScan-ом нужную таблицу, в меню File > File Layout... будет вся структура этой таблицы. Её можно скопировать в код. Всё работает, я проверял.
С уважением, ДП
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: Как работать с таблицей Handcoded?

Сообщение Evgeny2006 »

Большое спасибо!!!!
К моменту получения Вашего сообщения, я стал просматривать (открывать) файл разными программами и обнаружил у себя программу "TopSpeed Database Scaner". Эта программа свободно открывает мой файл. Правда там появляется еще одно поле- Номер Записи, только по английски. Я пытался изменить размер своей записи, но прога все время ругается. Полез в Bin-директорий и нашел Help файл на этот сканер. Там приведены опции, в том числе анализа файла и его сохранения (печати). Скопировал в прогу и перепроверил все описание данных, вставляя построчно каждое описание.
Все, заработало.
Все равно, огромное СПАСИБО.
А то я уж ненароком заподозрил разработчиков Clarion.
Evgeny2006
Ответить