Помогите новичку в 6-ке
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Помогите новичку в 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 по др. таблице внутри формы) вижу то же, где и что смотреть ?
РЕшил переписать старую программу и заодно перевести с 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 по др. таблице внутри формы) вижу то же, где и что смотреть ?
Нет, ручками на ABC, я просто впервые пытаюсь на 6-ке что то изобразить, хотя до того на 5.5 кое что писал. Вот и оч. меня это удивило - приложение только начал писать, буквально пару справочников создал и вот уже непонятки, вроде я еще не успел ничего нагородить, чтоб в 3-х то соснах заблудиться, но однако...
Нет конечно на шаблонах
Нашел в чем дело !!! Оказывается в той дочерней таблице было поле Trf:DateTarif, так в вот в нем символ "e" был каким то левым, русская буква видать залезла... вот и приводило это к такому поведению.... блин целый день бился !
Но в процессе поиска возникла еще одна непонятка, растолкуйте спецы !!! В общем так, ежели я в словаре меняю формат поля и захожу в просмотр таблицы, то есественно мне говорится о несовпадении структур и предлагается изм-ть стр-ру таблицы. Ну а если я меняю ИМЯ поля, то НИЧЕГО не происходит !!! ??? >:-()
Т.е. было поле Trf:SumTarif я например делаю Trf:Sum111Tarif, и таблица из словаря преспокойно открывается !!! ПРи этом в коде то Trf:Sum111Tarif, а в Scanner-е и при импорте в др. словарь -Trf:SumTarif !!!
А как это так ???
Нашел в чем дело !!! Оказывается в той дочерней таблице было поле Trf:DateTarif, так в вот в нем символ "e" был каким то левым, русская буква видать залезла... вот и приводило это к такому поведению.... блин целый день бился !
Но в процессе поиска возникла еще одна непонятка, растолкуйте спецы !!! В общем так, ежели я в словаре меняю формат поля и захожу в просмотр таблицы, то есественно мне говорится о несовпадении структур и предлагается изм-ть стр-ру таблицы. Ну а если я меняю ИМЯ поля, то НИЧЕГО не происходит !!! ??? >:-()
Т.е. было поле Trf:SumTarif я например делаю Trf:Sum111Tarif, и таблица из словаря преспокойно открывается !!! ПРи этом в коде то Trf:Sum111Tarif, а в Scanner-е и при импорте в др. словарь -Trf:SumTarif !!!
А как это так ???
- Олег
- Ветеран движения
- Сообщения: 122
- Зарегистрирован: 16 Июль 2005, 2:35
- Откуда: Москва
- Контактная информация:
Если ты в программе описываешь структуру файла, то дальнейшая работа с этим файлом производится без "оглядки" на имена полей в самом дисковом файле - только по именам полей, которые описаны у тебя в проге. Грубо говоря, имена полей в дисковом файле сохраняются только для "протокола" - что-бы в случае необходимости (как, к примеру, в сканере или импорте в словарь) можно было как-то эти поля назвать. Кроме этого, эти имена полей будут видны и при работе с файлом через ODBC.
- Олег
- Ветеран движения
- Сообщения: 122
- Зарегистрирован: 16 Июль 2005, 2:35
- Откуда: Москва
- Контактная информация:
Ну, само собой, естественно, ничего в заголовке файла не пропишеться даже если ты изменишь тип/размер поля! При открытии такого файла драйвер тебе просто сообщит об ошибке и не станет работать с подобным файлом - тебе САМОМУ прийдется создавать (с помощью мастера или ручками) утилиту-конвертор, в которой будет создан новый файл и в него будут скопированы записи из старого файла.
И что тебе мешает создавать такой конвертор при простом изменении имени поля? Ну а в конверторе всегда создается новый файл, в заголовке которого будут сохранены все изменения.
Кстати, при изменении имен полей следует быть осторожным - в этом случае не рекомендуется использовать оператор "глубокого" присваивания (NewFile.Record :=: OldFile.Record). Точнее - можно, но с большой осторожностью. Особенно, если есть вероятность, что некоторые поля "обменялись" названиями!
И что тебе мешает создавать такой конвертор при простом изменении имени поля? Ну а в конверторе всегда создается новый файл, в заголовке которого будут сохранены все изменения.
Кстати, при изменении имен полей следует быть осторожным - в этом случае не рекомендуется использовать оператор "глубокого" присваивания (NewFile.Record :=: OldFile.Record). Точнее - можно, но с большой осторожностью. Особенно, если есть вероятность, что некоторые поля "обменялись" названиями!
- Олег
- Ветеран движения
- Сообщения: 122
- Зарегистрирован: 16 Июль 2005, 2:35
- Откуда: Москва
- Контактная информация:
Опять не верно!
Автоконвертация здесь ни при чем! При открытии файла именно драйвер проверяет отличия текущей структуры файла в словаре от структуры конкретного дискового файла. И именно он выдает ошибку, на основе которой уже бровз выдает тебе запрос - запускать автоконвертор или нет.
Поэтому, если кому и можно предьявлять претензии, то только драйверу, который не проверяет соответствия имен полей.
Тут только можно посоветовать или самому помнить подобные изменения или написать свою утилитку на основе спец-инструментов (Dynamic File, xLib, DynaLib), которая будет проверять соответствия имен полей. Ну или попробовать один из комерческих менеджеров контроля версий файлов данных с автоматической конвертацией/деконвертацией.
Автоконвертация здесь ни при чем! При открытии файла именно драйвер проверяет отличия текущей структуры файла в словаре от структуры конкретного дискового файла. И именно он выдает ошибку, на основе которой уже бровз выдает тебе запрос - запускать автоконвертор или нет.
Поэтому, если кому и можно предьявлять претензии, то только драйверу, который не проверяет соответствия имен полей.
Тут только можно посоветовать или самому помнить подобные изменения или написать свою утилитку на основе спец-инструментов (Dynamic File, xLib, DynaLib), которая будет проверять соответствия имен полей. Ну или попробовать один из комерческих менеджеров контроля версий файлов данных с автоматической конвертацией/деконвертацией.
- Олег
- Ветеран движения
- Сообщения: 122
- Зарегистрирован: 16 Июль 2005, 2:35
- Откуда: Москва
- Контактная информация:
Так, на вскидку, назову лишь проект Синявского Вадима - Data Converter (http://www.softcreator.com/SC_Pub_Produ ... DCTemplate)
Там, насколько я помню, есть даже специальное правило для случая изменения только имен полей - конвертация, как таковая, не производится, а просто создается новый файл с новой структурой и копируются все записи из старого файла в новый.
Было еще несколько подобных "забугорных" продуктов, но я сейчас уже не помню - можешь посмотреть на ClarionShop`е - они наверняка там есть.
Там, насколько я помню, есть даже специальное правило для случая изменения только имен полей - конвертация, как таковая, не производится, а просто создается новый файл с новой структурой и копируются все записи из старого файла в новый.
Было еще несколько подобных "забугорных" продуктов, но я сейчас уже не помню - можешь посмотреть на ClarionShop`е - они наверняка там есть.