Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
Есть сервер (MySQL, PostgreSQL и пр.), подключение по ODBC. Конструктор удаленных представлений видит таблицу, берет символьную колонку исходного типа char или varchar, ставит свой тип character, а длину ставит 20, если длина исходного >=20, и реальную, если она меньше 20. Если в Properties поменять - то этого изменения хватает только до следующего обращения к Properties этой или другой колонки. Соответственно, в grid, browse, отчетах и прочих элементах отображаются (и позволяется ввод) только 20 символов на поле. Что за дурацкий глюк ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 15:22 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
Большая магия, однако. Если изменилась структура исходных таблиц на сервере (MySQL), то лучше вообще удалить Remote View и создать его заново! Можно, конечно, попробовать программно изменить тип поля в Remote View, как написано в Help DBSETPROP('mytable.icost', 'field', 'DataType', 'N(4,2)') Здесь вместо MyTable напиши имя RemoteView Но вряд ли что из этого получится. Еще выполни очистку контейнера базы данных: OPEN DATABASE MyBase EXCLUSIVE PACK DATABASE Или в режиме модификации базы данных пункт главного меню DataBase, подпункт CleanUp DataBase. Этот пункт будет доступен только если база данных открыта в режиме Exclusive. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 15:55 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
pack database не помогает. Все равно длина хотя-бы одного поля остается равной 20. Во вновь созданной базе .dbc и вновь созданном view наблюдается та же картинка. Мало того. Имеется большая проблема с буферизацией. В режиме мягкой буферизации таблицы-представления (5) функция tableupdate дает запросы на изменение (или вставку) только для последней измененной (добавленной) записи. Переключение режима транзакций для соответствующего представления дает только включение begin ... commit для блока открытия-работы-закрытия представления, но никак не влияет на результат :(. Это дело наблюдается как для grid, так и для browse. Жопа, короче, с VFP6. Уже попробовал это же как на MySQL, так и на PostgreSQL с разными версиями ODBC-драйверов. Дело-таки в VFP. У меня SP5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 17:44 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
Давай по пунктам, что именно ты делаешь, чтобы получить такой результат 1) Создал таблицу в MySQL с полем Char(40) 2) Создал Remote View к этой таблице, добавил в список полей для выборке имя этого поля и ... в нем это поле автоамтически получилось Char(20)? По поводу буферизации у тебя неправльное понимание логики работы Remote View. У тебя есть 2 базы данных: MySQL и FoxPro Когда ты выполняешь Remote View, то закачивается копия данных (выборка) из MySQL во временные таблицы, под управлением FoxPro. И буферизация и транзакция в FoxPro относятся не к исходной таблице на MySQL, а именно к этой копии в базе FoxPro. Т.е. если ты сбросил буфер в базе FoxPro, то ты сбросил его "с концами" в базу MySQL, поскольку транзакция в базе FoxPro никак, никоим образом не может повлиять на данные на MySQL. Таким образом, для возможного отката в случае ошибки сброса буфера необходимо организовать 2 транзакции: одну собственно на MySQL и другую в базе FoxPro. Причем организовать вручную. Никаких автоматических средств для этого не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 18:23 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
>1) Создал таблицу в MySQL с полем Char(40) >2) Создал Remote View к этой таблице, добавил в список полей для выборке >имя этого поля и ... в нем это поле автоамтически получилось Char(20)? ИМЕННО ! Но в реальной таблице - несколько текстовых полей (плохо, когда 10-15-20). Автоматически при создании view хотя-бы одно создается с неправильной длиной. Чем больше полей char (varchar) - тем больше ошибок. Если на всех полях поменять все длины на корректные и сохранить view - все равно окажется, что хоть одно поле осталось char 20 :-(Ж) >По поводу буферизации у тебя неправльное понимание логики работы Remote >View. Все я понимаю. Не понимаю только, где VFP девает обновления для остальных записей ? Раз уж юзер поменял несколько записей и делает tableupdate, то на сервер должны выдаваться несколько операторов update (insert) ? Неважно, делается begin - commit или нет. Это к слову пришлось. Или tableupdate нужно как-то по-хитрому выдавать ? Например, в цикле, проходя по каждой записи обновленного курсора ? Бо я увидел, что обновляется именно запись, которая текущая на момент tableupdate. А если записей 100-200 ? И что: go top scan while .not. eof() tableupdate() endscan Ну и кто-то выдает begin-commit (автоматом или через Exec) Так, что-ли ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 19:03 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
По tableupdate проехали - я тупой, забыл про параметр :-) А с ошибкой в размере колонок ... Я в задумчивости ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 21:43 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
1) Если у всех работает, а у тебя нет - то кто виноват? Пробуй менять ODBC драйвера, посмотри что даст SQLCOLUMNS(lnHandle), какие типы полей получаются после "прямого" SPT запроса - т.е. SQLEXEC(lnHandle, "твой запрос") 2) У TableUpdate (равно как и tablerevert) есть ПАРАМЕТРЫ - целых 3 штуки - так что срочно читать хелп. 3) Транзакции (со стороны сервера и ODBC, не фоксовые) могут быть автоматическими и ручными - автоматические ставятся по дефолту, ручные можно настроить, но тогда не забывай про SQLCommit(lnHandle). Вообще-то VFP6 уже порядочно устарел, возможно что там и есть какие-то глюки. Кстати View-дизайнер был кривым и в VFP6 и в VFP7 - только в VFP8 починили. Так чта... DBSETPROP(... 'DataType', 'C(50)') - для меня работало всегда, и ничего "самопроизвольно" никуда не исчезало. НО View дизайнером я не пользовался - мало ли что он там может переназначить... А сложные запросы о и подавно не может сформировать - так что забей на него. Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 01:26 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
Действительно, кроме как глюком View-дизайнера это не объясняется. Обойти его можно. Нужно исправлять ошибки в длинах полей по одной и сохранять. А при открытии запроса в дизайнере не обращать внимание на ошибку в длине ПЕРВОГО открываемого char-поля. Как сказал ВладимирМ: "Большая магия, однако !" Мне кажется, глюк объясняется большим количеством символов перевода строки в memo-поле Properties для строк таблицы-контейнера базы данных, относящихся к названиям столбцов. Когда смотришь на текст ............&...........-........inoorder.contragent_name.....&MC70 (точки вместо переводов строк), то сам путаешься :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 17:22 |
|
||
|
Ошибка VFP6 при определении длины поля (char или varchar) в remote view
|
|||
|---|---|---|---|
|
#18+
Не надо так буквально воспринимать БИНАРНЫЕ даные. И тем более не нужно их править напрямую (открыв memo-окно). Есть хороший шанс так запороть это представление, что фокс по C005 вывалиться вообще. Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 03:14 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32724946&tid=1595679]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 362ms |

| 0 / 0 |
