Помогите новичку в 6-ке

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Помогите новичку в 6-ке

Сообщение Андрей »

Всех с наступившим 2008 !!!

РЕшил переписать старую программу и заодно перевести с CW2 на 6-ку. Начал.... и ... застрял, кажется на ровном месте. Итак есть форма род. записи, в ней размещана Browse по доч. таблице. В словаре все прописано, связь по 1-му кл. полю определена, это поле с обеих сторон помечено как Bind. А в результате:
"Error: (Invalid expression for EVALUATE at pos 7 (1010)) attempting to open the current VIEW. Filter and Range Limits ignored."
Что за pos 7 ? а 1010 ?
Даже когда снимаю связь (просто Browse по др. таблице внутри формы) вижу то же, где и что смотреть ?
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Сообщение morkovin »

А как переводишь на CW6? Загружаешь APP от CW2(Legacy) в CW6(Legacy)? :(
WBR, morkovin
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Сообщение Андрей »

Нет, ручками на ABC, я просто впервые пытаюсь на 6-ке что то изобразить, хотя до того на 5.5 кое что писал. Вот и оч. меня это удивило - приложение только начал писать, буквально пару справочников создал и вот уже непонятки, вроде я еще не успел ничего нагородить, чтоб в 3-х то соснах заблудиться, но однако...
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Сообщение morkovin »

"...ручками на ABC..."
Это без визардов и шаблонов? :)
В Examples есть пример - Invoice (процедура BrowseOrders). Смотрел? У тебя компилируется без ошибок?
[/quote]
WBR, morkovin
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Сообщение Андрей »

Нет конечно на шаблонах :-)
Нашел в чем дело !!! Оказывается в той дочерней таблице было поле Trf:DateTarif, так в вот в нем символ "e" был каким то левым, русская буква видать залезла... вот и приводило это к такому поведению.... блин целый день бился !

Но в процессе поиска возникла еще одна непонятка, растолкуйте спецы !!! В общем так, ежели я в словаре меняю формат поля и захожу в просмотр таблицы, то есественно мне говорится о несовпадении структур и предлагается изм-ть стр-ру таблицы. Ну а если я меняю ИМЯ поля, то НИЧЕГО не происходит !!! ??? >:-()
Т.е. было поле Trf:SumTarif я например делаю Trf:Sum111Tarif, и таблица из словаря преспокойно открывается !!! ПРи этом в коде то Trf:Sum111Tarif, а в Scanner-е и при импорте в др. словарь -Trf:SumTarif !!!
А как это так ???
Igor
Бывалый
Сообщения: 75
Зарегистрирован: 08 Июль 2005, 11:03
Откуда: Королев

Сообщение Igor »

Название полей записываются в шапку структуры файла и не меняются . Если создаш новый бутет тебе другое имя . Главное типы полей сохранить.
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

Если ты в программе описываешь структуру файла, то дальнейшая работа с этим файлом производится без "оглядки" на имена полей в самом дисковом файле - только по именам полей, которые описаны у тебя в проге. Грубо говоря, имена полей в дисковом файле сохраняются только для "протокола" - что-бы в случае необходимости (как, к примеру, в сканере или импорте в словарь) можно было как-то эти поля назвать. Кроме этого, эти имена полей будут видны и при работе с файлом через ODBC.
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Сообщение Андрей »

Спасибо, всем и особенно Олегу !

Теперь понятно... почти :-) ... можно ли это оценивать как некое упущение ? Ведь если я буду менять и тип поля и его наименование, то в заг-ке файла новое имя пропишется, а если только имя, то нет....но было бы ведь удобнее ???
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

Ну, само собой, естественно, ничего в заголовке файла не пропишеться даже если ты изменишь тип/размер поля! При открытии такого файла драйвер тебе просто сообщит об ошибке и не станет работать с подобным файлом - тебе САМОМУ прийдется создавать (с помощью мастера или ручками) утилиту-конвертор, в которой будет создан новый файл и в него будут скопированы записи из старого файла.
И что тебе мешает создавать такой конвертор при простом изменении имени поля? Ну а в конверторе всегда создается новый файл, в заголовке которого будут сохранены все изменения.

Кстати, при изменении имен полей следует быть осторожным - в этом случае не рекомендуется использовать оператор "глубокого" присваивания (NewFile.Record :=: OldFile.Record). Точнее - можно, но с большой осторожностью. Особенно, если есть вероятность, что некоторые поля "обменялись" названиями!
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Сообщение Андрей »

да... неправильно выразился... я имел в виду:
при открытиии файла из словаря и соглашаясь на автоконвертацию, то в заг-ке файла новое имя пропишется, а если только имя, то нет....но было бы ведь удобнее ??? Ну то бишь к автоконвертации у меня претензиии
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

Опять не верно! :D
Автоконвертация здесь ни при чем! При открытии файла именно драйвер проверяет отличия текущей структуры файла в словаре от структуры конкретного дискового файла. И именно он выдает ошибку, на основе которой уже бровз выдает тебе запрос - запускать автоконвертор или нет.
Поэтому, если кому и можно предьявлять претензии, то только драйверу, который не проверяет соответствия имен полей.

Тут только можно посоветовать или самому помнить подобные изменения или написать свою утилитку на основе спец-инструментов (Dynamic File, xLib, DynaLib), которая будет проверять соответствия имен полей. Ну или попробовать один из комерческих менеджеров контроля версий файлов данных с автоматической конвертацией/деконвертацией.
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Сообщение Андрей »

Понятно, спасибо !

Закрывая эту тему прошу Олега еще назвать мне эти утилиты контроля версии файлов.
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

Так, на вскидку, назову лишь проект Синявского Вадима - Data Converter (http://www.softcreator.com/SC_Pub_Produ ... DCTemplate)
Там, насколько я помню, есть даже специальное правило для случая изменения только имен полей - конвертация, как таковая, не производится, а просто создается новый файл с новой структурой и копируются все записи из старого файла в новый.
Было еще несколько подобных "забугорных" продуктов, но я сейчас уже не помню - можешь посмотреть на ClarionShop`е - они наверняка там есть.
Ответить