Как работать с таблицей Handcoded?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 23 Июль 2010, 13:44
- Откуда: С-Петербург
Как работать с таблицей Handcoded?
Версия 6.0 0915
Имеется БД 'TopSpeed' состоящая из 3-х файлов (на ней я учусь). С помощью AppGen сгенерирована программа для заполнения и обновления данных. Понадобилось написать вручную программу, которая выбирает данные из двух таблиц и формирует новую таблицу. С чем столкнулся. Первая таблица нормально работает, а вторая, связанная с ней, хотя и обрабатывается отдельно, показывает, что в ней нет записей. Но записи есть. Похоже, что как-то надо открывать БД, но не могу найти. Подскажите,пожалуйста, как это делается.
Мой e-mail: e.baranov2006@gmail.com
Заранее благодарен.
Имеется БД 'TopSpeed' состоящая из 3-х файлов (на ней я учусь). С помощью AppGen сгенерирована программа для заполнения и обновления данных. Понадобилось написать вручную программу, которая выбирает данные из двух таблиц и формирует новую таблицу. С чем столкнулся. Первая таблица нормально работает, а вторая, связанная с ней, хотя и обрабатывается отдельно, показывает, что в ней нет записей. Но записи есть. Похоже, что как-то надо открывать БД, но не могу найти. Подскажите,пожалуйста, как это делается.
Мой e-mail: e.baranov2006@gmail.com
Заранее благодарен.
Evgeny2006
- StillZero
- Ветеран
- Сообщения: 458
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Поблагодарили: 1 раз
- Контактная информация:
Re: Как работать с таблицей Handcoded?
вопрос задан некорректно...
куски кода бы помогли указать...
6.0 не лучший вариант, переходи на 6.3
куски кода бы помогли указать...
6.0 не лучший вариант, переходи на 6.3
по аэродрому...
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 23 Июль 2010, 13:44
- Откуда: С-Петербург
Re: Как работать с таблицей Handcoded?
Большое спасибо за быструю реакцию.
У меня две версии Clarion: 6.0 0915 и 7.0.0 5768. То что смог скачать. Сам чувствую, что обе версии с глюками, но других нет.
Теперь куски кода. Я, честно говоря, не знаю нужно их зиповать. На форуме появился от безисходности. Ранее в форумах не участвовал. Так даю, что есть. Файлы TLs, Coridors, Region созданы в Dictionary. Файл TLView - новый. в который я и хочу поместить данные из TLs и Coridors. Поскольку нарвался на не понимание со стороны проги, сделал вырезки и создал тестовый файл. Ох, что-то много пишу. Итак текст проги.
У меня две версии 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 в текущей папке имеет записи?
PS
неплохо бы ещё и проверять файловые операторы на ошибки (ERRORCODE()), и второе - Вы уверены, что файл Coridors.tps в текущей папке имеет записи?
С уважением, ДП
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 23 Июль 2010, 13:44
- Откуда: С-Петербург
Re: Как работать с таблицей Handcoded?
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
Искренне ваш
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 оборотов, делать ничего не хочется.
Можете выслать мне для проверки Ваши таблицы (почта в моём профайле), но у нас тут жара под 40 оборотов, делать ничего не хочется.
С уважением, ДП
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 23 Июль 2010, 13:44
- Откуда: С-Петербург
Re: Как работать с таблицей Handcoded?
Относительно БД. Я вообщем-то выходец из FoxPro. поэтому такое мышление.
Вы оказались правы насчет необходимости осуществлять проверку на ошибки.
Вставил проверку. Прога ругается, что "Инвалидное определение записи". Сверил построчно.
Все один к одному. Единственное сомнение: поле region определялось с учетом Validity Check.
Также нет четкого понимания где хранятся ключи. Прикладываю файлы.
Жара в Питере послабее, но на дачу ехать не хочу, т.к. там еще жарче, а дома есть кондиционер.
Вы оказались правы насчет необходимости осуществлять проверку на ошибки.
Вставил проверку. Прога ругается, что "Инвалидное определение записи". Сверил построчно.
Все один к одному. Единственное сомнение: поле region определялось с учетом Validity Check.
Также нет четкого понимания где хранятся ключи. Прикладываю файлы.
Жара в Питере послабее, но на дачу ехать не хочу, т.к. там еще жарче, а дома есть кондиционер.
Evgeny2006
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 23 Июль 2010, 13:44
- Откуда: С-Петербург
Re: Как работать с таблицей Handcoded?
Я не зря бубнил все время про БД. К сожалению я новичок в Clarion и не все успел прочитать.
Более того, зная об ООП в языке, я оставлял эти темы на потом.
Вчера вечером в продолжение открытия файлов ручками, я обнаружил, что требуется специальное открытие файлов.
Этот кусок кода генерится самой системой. Можно, конечно, его скопировать и на его основе попытаться доделать свою задачку. Это я и буду делать.
В свете изложенного я составил тестовую прогу , в которой выделил из Dictionary только один файл. Заполнил несколько записей и Что. Опять не работает. Хотя в первом тесте праймери файл открывался, а вторичный нет. В последнем тесте и праймери перестал открываться.
Винить ООП смысла нет, а вот авторы системы делают все, чтобы в нее нельзя было влезть с боку.
Задача, которую я пытаюсь решить заключается в следующем.
Имеется несколько связанных файлов и мне надо без генератора отчета подбить разные итоги или составить разные итоговые таблицы для просмотра. Вроде бы подходит VIEW, но представление в Clarion плохенькое.
Вот и вынужден переходить на работу ручками.
Более того, зная об ООП в языке, я оставлял эти темы на потом.
Вчера вечером в продолжение открытия файлов ручками, я обнаружил, что требуется специальное открытие файлов.
Этот кусок кода генерится самой системой. Можно, конечно, его скопировать и на его основе попытаться доделать свою задачку. Это я и буду делать.
В свете изложенного я составил тестовую прогу , в которой выделил из Dictionary только один файл. Заполнил несколько записей и Что. Опять не работает. Хотя в первом тесте праймери файл открывался, а вторичный нет. В последнем тесте и праймери перестал открываться.
Винить ООП смысла нет, а вот авторы системы делают все, чтобы в нее нельзя было влезть с боку.
Задача, которую я пытаюсь решить заключается в следующем.
Имеется несколько связанных файлов и мне надо без генератора отчета подбить разные итоги или составить разные итоговые таблицы для просмотра. Вроде бы подходит VIEW, но представление в Clarion плохенькое.
Вот и вынужден переходить на работу ручками.
Evgeny2006
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Как работать с таблицей Handcoded?
У Вас неверно были задекларированы (а сейчас просто закомментированы) ключи. Чтобы их правильно описать, откройте TopScan-ом нужную таблицу, в меню File > File Layout... будет вся структура этой таблицы. Её можно скопировать в код. Всё работает, я проверял.
С уважением, ДП
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 23 Июль 2010, 13:44
- Откуда: С-Петербург
Re: Как работать с таблицей Handcoded?
Большое спасибо!!!!
К моменту получения Вашего сообщения, я стал просматривать (открывать) файл разными программами и обнаружил у себя программу "TopSpeed Database Scaner". Эта программа свободно открывает мой файл. Правда там появляется еще одно поле- Номер Записи, только по английски. Я пытался изменить размер своей записи, но прога все время ругается. Полез в Bin-директорий и нашел Help файл на этот сканер. Там приведены опции, в том числе анализа файла и его сохранения (печати). Скопировал в прогу и перепроверил все описание данных, вставляя построчно каждое описание.
Все, заработало.
Все равно, огромное СПАСИБО.
А то я уж ненароком заподозрил разработчиков Clarion.
К моменту получения Вашего сообщения, я стал просматривать (открывать) файл разными программами и обнаружил у себя программу "TopSpeed Database Scaner". Эта программа свободно открывает мой файл. Правда там появляется еще одно поле- Номер Записи, только по английски. Я пытался изменить размер своей записи, но прога все время ругается. Полез в Bin-директорий и нашел Help файл на этот сканер. Там приведены опции, в том числе анализа файла и его сохранения (печати). Скопировал в прогу и перепроверил все описание данных, вставляя построчно каждое описание.
Все, заработало.
Все равно, огромное СПАСИБО.
А то я уж ненароком заподозрил разработчиков Clarion.
Evgeny2006