powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
22 сообщений из 22, страница 1 из 1
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32980389
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
ПРОЕКТ ВЫПОЛНЕН НА VFP8(SP1).
РАБОТАЮ С СЕРВЕРНОЙ БАЗОЙ INTERBASE 6.5, используя
курсор адаптер и ADO .
ПРИ ЭТОМ НАБЛЮДАЕТСЯ (В НЕКОТОРЫХ СЛУЧАЯХ) СЛЕДУЮЩИЙ ГЛЮК:

ИМЕЕМ ОКНО, ВНУТРИ GRID СОДЕРЖАШИЙ ДАННЫЕ ИЗ
ТАБЛИЦЫ INTERBASE (ЧЕРЕЗ КУРСОР АДАПТЕР)

ИМЕЕТСЯ В ОКНЕ КНОПКА ДЛЯ ОБНОВЛЕНИЯ ДАННЫХ В ТАВЛИЦЕ
ДАННЫЕ ВВОДЯТСЯ В ТЕКСТОВЫЕ ПОЛЯ И ДАЛЕЕ ВЫПОЛНЯЕТСЯ
КОД ЧТО-ТО ВРОДЕ ЭТОГО:
OC_N.BEGINTRANS && OC_N - ЭТО СОЕДИНЕНИЕ С БАЗОЙ
VCONFL=0
REPLACE id_slu WITH vid_slu,dezn WITH vdezn
vcommit=TABLEUPDATE()
IF VCOMMIT=.f.
=TABLEREVERT()
WAIT WINDOW 'ОШИБКА ВВОДА ДАННЫХ!!!' TIMEOUT 4
VCONFL=1
ELSE
* НЕКОТОРЫЕ ДЕЙСТВИЯ ПО ОБНОВЛЕНИЮ ДРУГОЙ ТАБЛИЦЫ
ENDIF
IF VCONFL=0
OC_N.COMMITTRANS
ELSE
OC_N.ROLLBACKTRANS
ENDIF

БЛИН И ЧТО В РЕЗУЛЬТАТЕ - ЗАПИСЬ УСПЕШНО ОБНОВИЛАСЬ,
НО В КОНЦЕ ТАБЛИЦЫ ПОЯВИЛАСЬ КОПИЯ ЭТОЙ ЗАПИСИ,
НА КОТОРУЮ НЕВОЗМОЖНО УСТАНОВИТЬ МАРКЕР.
ПРИ ЭТОМ В САМОЙ СЕРВЕРНОЙ БАЗЕ ЭТОЙ ЗАПИСИ НЕТ
(ТУТ ЖЕ СМОТРЮ ИЗ EXPERT.EXE ОТДЕЛЬНОЙ ТРАНЗАКЦИЕЙ ЧТЕНИЯ!!!)
ЕСЛИ ОСНОВНУЮ ЗАПИСЬ УДАЛЯЮ (ОПЯТЬ ЖЕ КНОПКОЙ В ОКНЕ)
ГЛЮЧНАЯ ЗАПИСЬ ИСЧЕЗАЕТ!

В ЧЕМ ПРИЧИНА - Я ЖЕ INSERT НЕ ДЕЛАЮ!!!

Я ПОНИМАЮ , ЧТО В ОСНОВНОМ СООБЩЕСТВО РАБОТАЕТ С
SQL SERVER , А ОТЛИЧИЕ INTERBASE В ТОМ , ЧТО ЭТО
МНОГОВЕРСИОННАЯ БАЗА.
НО МОЖЕТ КТО-ТО ПОДСКАЖЕТ.ГДЕ КОПАТЬ?
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32980416
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sar99А ОТЛИЧИЕ INTERBASE В ТОМ , ЧТО ЭТО
МНОГОВЕРСИОННАЯ БАЗА.
НО МОЖЕТ КТО-ТО ПОДСКАЖЕТ.ГДЕ КОПАТЬ?
Расскажите по подробнее это?
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32980522
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МНОГОВЕРСИОННОСТЬ INTERBASE ПРОЯВЛЯЕТСЯ В СЛЕДУЮЩЕМ:
ПРИ КОРРЕКТИРОВКЕ ЗАПИСИ СОДДАЕТСЯ ЕЕ ВЕРСИЯ.
ПРИ ЗАВЕРШЕНИИ ТРАНЗАКЦИИ И ОТСУТСТВИИ КОНФЛИКТА
ЭТА ВЕРСИЯ СТАНОВИТСЯ АКТУАЛЬНОЙ А ПРЕДЫДУЩАЯ
ВЕРСИЯ ОБЪЯВЛЯЕТСЯ СИСТЕМОЙ <МУСОРОМ>
ПРИ НАЛИЧИИ КОНФЛИКТА ТРАНЗАКЦИЯ ОТКАТЫВАЕТСЯ -
ПРЕДЫДУЩАЯ ВЕРСИЯ ОСТАЕТСЯ АКТУАЛЬНОЙ В ВЕРСИЯ
ОТКАЧЕННОЙ ТРАНЗАКЦИИ - МУСОРОМ.
В СИТЕМЕ ПРЕДУСМОТРЕНА ПРОЗРАЧНАЯ ДЛЯ ПРИЛОЖЕНИЙ
<СБОРКА МУСОРА>.
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32980570
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно я не работал в системе CA->ADO->INTERBASE. Извините что встрял в будущую дискуссию. Но мне интересно т.е. в INTERBASE <мусор> всегда можно просмотреть или как-то увидеть?
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32982397
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

1) Не нужно кричать :)
2) Что есть * НЕКОТОРЫЕ ДЕЙСТВИЯ ПО ОБНОВЛЕНИЮ ДРУГОЙ ТАБЛИЦЫ
3) Есть ли где-то код перезапроса данных? каковы настройки Conenction и RS? Есть ли такие-же проблемы если работать через ODBC? Пробовал ли использовать другие Ole DB провайдеры? Возникает ли проблема если просто работать с таким курсором (без всяких гридов, из командного окна например).

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32983218
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день Igor
2. Некоторые действия по обновлению другой таблицы
выполняются в том же соединении (в другом курсор адаптере)
который не отображается в форме - и эти изменения проходят успещно!
3. настройки соединения и recordset
Oc_N.provider="LCPI.IBProvider"
OC_N.Mode=3
oc_N.isolationlevel=4096
oc_N.CursorLocation = 3
RS.CURSORTYPE=3
RS.LOCKTYPE=3

C ODBC НЕ ПРОБОВАЛ, С ДРУГИМ ПРОВАЙДЕРОМ ТОЖЕ.

ЕСЛИ НЕ ОТОБРАЖАТЬ КУРСОР АДАПТЕР В GRID - ВСЕ OK!
(ВЕДЬ НА СЕРВЕРЕ ДУБЛИРУЮЩЕЙ ЗАПИСИ НЕТ!)
ХОТЯ ПРИ ДРУГИХ ВАРИАНТАХ ОБРАБОТКИ ( НАПРИМЕР
ПОСЛЕДУЮЩЕМ GO TOP И DO WHILE .NOT.EOF()
ВОЗМОЖНЫ ПРОБЛЕМЫ - ВЕДЬ НА ДУБЛЬ МАРКЕР СТАТЬ НЕ МОЖЕТ)

ОДНО ЗАМЕЧАНИЕ! ДО VFP8 РАБОТАЛ С ТЕМ ЖЕ ПРОВАЙДЕРОМ
С ТОЙ ЖЕ БАЗОЙ INTREBASE В VFP6 + MICROSOFT DATAGRID
ТАКИХ ГЛЮКОВ НЕ ВОЗНИКАЛО НИКОГДА!

ЕЩЕ ОДНО ЗАМЕЧАНИЕ! В VFP8 БЕЗ SP1 ЭТОТ ГЛЮК
ПРОЯВЛЯЕТСЯ ЧАЩЕ

И ПОСЛЕДНЕЕ!!! ЭТОТ ГЛЮК НЕ ПОВТОРЯЕТСЯ - ЕСЛИ ПОСЛЕ
ПОЯВЛЕНИЯ ГЛЮКА И НАЛИЧИИ ДУБЛЯ В GRID НЕ ВЫХОДЯ
КОРРЕКТИРОВАТЬ ДРУГУЮ ЗАПИСЬ - ДУБЛЬ ЕЕ УЖЕ НЕ
ПОЯВЛЯЕТСЯ!
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32983238
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маленькая просьба
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32983255
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могет дело в гриде

______________________________________
с уважением: Strong
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32987462
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

А без грида - в собственно курсоре эта запись есть?
Есть ли она в "нижележащем" RS?
Есть ли индексы на курсор? Если есть, то попробуй их все убрать временно.
Что значит "в некоторых случаях" - конкретнее скажи что за случаи - т.е. что влияет на возникновение проблемы.

P.S. На 99% уверен что то что IB "версионник" никакого отношения к проблеме не имеет - всё-же дело скорее всего где-то на стыке ADO/CA и возможно грида как такового...
Попробуй "отключать" грид от привязанного курсора перед операцией (ну это известный приём - сохранить RecordSource грида и ControlSource колонок - потом "занулить" RecordSource - сделать что нужно и восстановить всё обратно). Если проблема на стыке грид/курсор то должно помочь - но если фантомная запись всё-же имеется в курсоре - то надо другое смотреть...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32987949
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor
В курсоре фантомная запись есть - просматривается BROW
(маркер на нее тоже не устанавливается)
в низлежащем RS трудно проверить(только разве DATAGRID подключить)
Что касается отдельных случаев появления то у меня в этом
же проекте в этом же подключении есть еще одно окно
с 100% похожим кодом корректировки другой таблицы -
там фантомной записи не возникает!

пробовал отключить индекс - не помогает
пробовал отключить транзакцию - не помогает.

я склонен думать что дело в версионности и ее неправильной
интерпретации механизмом курсор адаптера, так как
фантом не автономен и при удалении основной записи исчезает.
вполне возможно при каких то условиях курсор адаптер показывает
"мусор" вернее не подчищает его
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32989952
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

> В курсоре фантомная запись есть - просматривается BROW

Понятно.

> в низлежащем RS трудно проверить(только разве DATAGRID подключить)

Просто "походить" по нему навигационными методами, выводя какое-нить уникальное поле.

> Что касается отдельных случаев появления то у меня в этом
> же проекте в этом же подключении есть еще одно окно
> с 100% похожим кодом корректировки другой таблицы -
> там фантомной записи не возникает!

А индексы там тоже есть?

> пробовал отключить индекс - не помогает

В смысле ВООБЩЕ его не создавать - НИКОГДА - ни до заполнения, ни после перезапроса...

> пробовал отключить транзакцию - не помогает.

В смысле вообще отказаться от транзакций?

> я склонен думать что дело в версионности

Блин, ну не знает ничего CA ни про какую версионность! И сколько работаю с Oracle (который тоже по сути версионник) - никогда таких проблем не возникало. Вот в кривости конкретного OLE DB может быть дело. В слёте индекса ОЧЕНЬ может быть дело (симптомы уж сильно похожи на слетевший индекс)

> фантом не автономен и при удалении основной записи исчезает.

При удалении записи перестраивается индекс - и есть именно там был "дубляж", то очевидно он исчезнет. А индекс (на курсор в т.ч.) очень легко слетает при неаккуратной работе - например поменять поле, дать TableUpdate() который по какой-либо причине не сработает (триггер отфутболит или ещё чего-то), потом НЕ давая Tablerevert снова поменять поле и снова дать TableUpdate - всё - порча индекса произошла (причём именно индекса в памяти!)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32991460
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor
Ваша правда о возможной причине - убираю индекс совсем
фантом не возникает!
Но причина порчи индекса? Ваш изложенный вариант порчи мной
обрабатывается! (смотри фрагмент кода выше)
vcommit=tableupdate()
vcommit=.t. всегда (даже теоретически если это не так)
у меня стоит =tablerevert()
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32992315
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

И что по твоему делает Tablerevert() и чем он будет отличаться от Tablerevert(.T.,"MyAlias")? Я предпочитаю всегда ЯВНО указывать такие параметры. Кроме того я не видел где у тебя меняется (и меняется ли вообще!) режим буферизации. Т.к.
1) В табличном режиме нельзя создать индекс
2) В строковом режиме практически невозможно работать в гриде - всякое перемещение по строкам вызывает неявные попытки сброса буфера.

Кстати я не в курсе как пройдёт tablerevert() в контексте открытой транзакции (пускай и ADO-шной). IMHO есть смысл (даже если проблема и не в этом) поменять местами откат транзакции и Rollback? Или поступить ещё более кардинально - уничтожить все индексы ПЕРЕД сбросом изменений и восстановить после...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32992528
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor
Надаюсь ты в курсе что механизм курсор адаптер предполагает что
соответствующий курсор находится в режиме оптимистической
буферизации строк! Устанавливать его специально не надо!!!
И если его нельзя , как ты пишешь к GRID прикручивать, то
собственно на фига попу гармонь (т е курсор адаптер!)
Другое дело раскрутить твою идею с влиянием индекса -
например я в REPL ключевое поле индекса не меняю!
Почему индекс слетает?
Кстати индекс я создаю *.idx (на структурный *.cdx ругается
многопользовательская версия приложения)
Что касается =tablerevert() - то оно не исполняется никогда,
так как следом идет сообщение об ошибке а оно не возникает!
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32992545
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor
Да забыл насчет транзакции!
=tablerevert() на транзакцию ADO не влияет никак,
так как эта функция выполняется ТОЛЬКО!!! в случае
если изменения на сервер не прошли и только восстанавливает
исходное состояние в курсоре адаптере!
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32992869
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так... попробуем все дело систематизировать.
Дело, вероятно, в индексе, именно при поломанном индексе грид так себя ведет.
Дубли получаются после REPLACE.
Фантомная запись всегда образуется в самом низу грида.
Используется IDX в курсор-адаптере.
Во время изменений IDX активен все время и, по идее, должен перестраиваться.
Глюк возникает не каждый раз.

Workaround: что будет, если после реплейса делать всякий раз REINDEX?
(понимаю, что не выход, но с тестовой целью...)
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32993501
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Urri
Действительно rein не полное (и не правильное!) решение ,но проверил -
запись фантомная исчезла!!!
следовательно на 100% дело в индексе , но вот вопрос:
как же тогда работать - преимущество курсор адаптер
с тремя например индексами перед тремя запросами
select ............ order by очевидна! вылетают и
set rela to и seek и еще многое другое
собственно из арсенала VFP
Интересно проверить программу в VFP 9.0 (но нету!!!)
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32994879
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

Ты не понял... Попробую попроще:
Буферизация строк#буферизации таблицы! И для работы с гридом практически ВСЕГДА лучше использовать именно последнюю! т.е. 5-ю
TABLEREVERT() делает откат только в ОДНОЙ записи - в текущей - равно как и TABLEUPDATE(). Почему я и намекал тебе на пропущенные параметры этих функций.
КУРСОР (в т.ч. создаваемый CA) - это ВСЕГДА локальная временная таблица - и потому никаких вопросов с "многопользовательским" доступом нет и быть не может - индекс же нужно делать именно CDX причём структурным! на foxclub.ru есть решение проблемы, возникающей после REQUERY() - когда меняется DBF() - и "вновь создаваемые" индексы перестают быть структурными. Это важно при использовании фоксовых транзакций.
И транзакцию следует делать двойную! И фоксовую И ADO-шную. Иначе что получаем - в фоксе транзакции нету - значит те записи которые CA нормально сохранил, фокс пометил в курсоре как "без изменений" - тут он наткнулся на ту запись, которую сохранить не может - и процесс прервался - при этом ADO-ную транзакцию он откатил -> те записи что у нас в курсоре помечены как "неизменные" реально рассинхронизированы с ADO-шными!!! там то они к Oldval вернулись (или их вовсе нет если это "вставленные" записи были)!
То какое поле меняется - не суть важно. Главное что индекс каким-то образом активен в данный момент (использован явно по SET ORDER, или неявно Rushmore движком)...
В общем вопросов к твоему коду ещё много - приведи его немного в порядок, разберись с особенностями Row и Table-буферизации, с особенностями курсоров vs tables (в части индексирования и совместного доступа например)... Уточни во всех функциях параметры.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32995816
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor
>и транзакцию надо сделать двойную.....

Транзакции VFP поддерживаются ТОЛЬКО!!! для таблиц
включенныхъ в контейнер базы данных VFP.

>индекс надо создавать структурным .cdx

Сам так думал,к сожалению в этом случае
tableupdate() ВСЕГДА возвращает .F.
(то есть создается иллюзия конфликта обновления на сервере!
поэтому я говорил что ругается многопользовательская версия)

интересно ,что тоже самое происходит когда к обычному
индексу добавить ключевое слово - compact
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32999235
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

1) Транзакции работают и для SPT/CA-курсоров - попробуй просто из командного окна BEGIN TRANSACTION - потом поменять данные в курсоре, и дать ROLLBACK. Из-за этого есть хороший шанс нарваться на конфликт, при несогласованных транзакциях. БЕЗ фоксовой транзакции твой серверный ROLLBACK отменит все изменения которые УЖЕ были сброшены из буфера, а вот в курсоре они будут помечены как "сохранённые" - лишь начиная с "неудачно сохранённой" записи курсор будет "правильным" - т.е. соответствовать тому что есть на сервере (в части OLDVAL() по которой и строится в частности WHERE часть команд обновления). И соответственно при следующей попытке сохранения, если эти якобы "удачно сохранённые" были изменены, их просто не найдёт сервер - ибо будет искать по тем данным ,который были откинуты транзакцией. Решить это можно либо введя дополнительно фоксовую транзакцию, либо делая перезапрос данных после каждой такой неудачи (ессно это вызовет потерю всех несохранённых изменений - хотя возможно что хватило бы исправления одного символа, чтобы сохранение прошло нормально).

2) Понятия не имею что у тебя за проблемы с индексом. У меня всегда всё работало нормально, причём индексы вообще создавались динамически ("на лету"), и порой их было столько-же сколько и полей отображалось в гриде. Очевидно ты что-то недопонял в части настроек WhereType, KeyFieldList и вообще того КАК фокс генерирует UPDATE/DELETE команды, и почему это вызывает "конфликт обновления". Поставь вывод SQL кода (параметра метода) в обработчики BeforeInsert\Update\Delete и посмотри что и как делает фокс.

3) В версиях ДО VFP9 к сожалению есть проблема - несовместимость с varchar типами данных - фокс то их дополняет пробелами! А потом сервер и попадает в тупик - для него "что-то____" # "что-то" (вместо хвостовых пробелов я нарисовал подчёркивание, чтоб было понятнее). Соответственно созданная CA или RV команда, например UPDATE ... SET ... WHERE nPK = OLDVAL("Cursor.nPK") AND VarCharField = OLDVAL("Cursor.VFPFixedLengthField") показывает "конфликт совместного доступа". От наличия/отсутствия индекса это никак не зависит. Единственный способ побороть - это убрать Varchar поля из WHERE части запроса - это можно сделать либо выставив WhereType в "KeyFieldsOnly", либо явно указывая при TableUpdate() второй параметр .T. - это равносильно (но только WhereType ВСЕГДА работает, а параметр можно и менять по ходу дела)...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #32999648
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor
Добрый день и превеликая благодарность за ценную информацию
и поддержание дискуссии!!!
К сожалению ни в документации ни В foxtalk нет подробного
описания работы с СА.
То что для СА поддерживаются транзакции FOXPRO для меня
новость (пока не проверил!!!) Если да , то естественно надо
применять пару - фоксовскую и серверную.
Два вопроса (возможно я действительно не разобрался
с KeyFieldList и WhereType):
1. если в СА первичный ключ составной (key_id,dezn)
то указывать при создании СА
KeyFieldList = key_id,dezn ?
2 В документации возможные значения WhereType (1,2,3,4)

какое значение нужно установить , чтобы не было проблемм
с полями типа VARCHAR ?
...
Рейтинг: 0 / 0
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
    #33001698
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi sar99!

> То что для СА поддерживаются транзакции FOXPRO для меня
> новость (пока не проверил!!!) Если да , то естественно надо
> применять пару - фоксовскую и серверную.

Не CA, а любой буферизованный курсор. менно в плане работы буфера и сказываются эти особенности (учитывая что "постоянного места жительства" данные в курсоре не имеют).

> Два вопроса (возможно я действительно не разобрался
> с KeyFieldList и WhereType):
> 1. если в СА первичный ключ составной (key_id,dezn)
> то указывать при создании СА
> KeyFieldList = key_id,dezn ?

Да.

> 2 В документации возможные значения WhereType (1,2,3,4)
> какое значение нужно установить , чтобы не было проблемм
> с полями типа VARCHAR ?

1 и 4 (если сможет источник данных!) - но это не даст тебе возможности отслеживать конфликты совместного доступа. Как вариент (именно для CA) - использовать ConversionFunc (читай хелп!). Конечно я предполагаю что среди ключевых полей точно нету Var* полей (т.е. полей с переменной длинной записи) :)
Я не в курсе как оно взаимодействует с ADO (не использовал такую связку) - там всё-же несколько иной механизм, но есть подозрение что и там могут быть проблемы с лишними пробелами... Ну и конечно всегда можно всё переделать на "ручные" команды обновления - благо возможность такая штатно имеется.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]