Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Добрый день! ПРОЕКТ ВЫПОЛНЕН НА 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 В ТОМ , ЧТО ЭТО МНОГОВЕРСИОННАЯ БАЗА. НО МОЖЕТ КТО-ТО ПОДСКАЖЕТ.ГДЕ КОПАТЬ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 11:43 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
sar99А ОТЛИЧИЕ INTERBASE В ТОМ , ЧТО ЭТО МНОГОВЕРСИОННАЯ БАЗА. НО МОЖЕТ КТО-ТО ПОДСКАЖЕТ.ГДЕ КОПАТЬ? Расскажите по подробнее это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 11:50 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
МНОГОВЕРСИОННОСТЬ INTERBASE ПРОЯВЛЯЕТСЯ В СЛЕДУЮЩЕМ: ПРИ КОРРЕКТИРОВКЕ ЗАПИСИ СОДДАЕТСЯ ЕЕ ВЕРСИЯ. ПРИ ЗАВЕРШЕНИИ ТРАНЗАКЦИИ И ОТСУТСТВИИ КОНФЛИКТА ЭТА ВЕРСИЯ СТАНОВИТСЯ АКТУАЛЬНОЙ А ПРЕДЫДУЩАЯ ВЕРСИЯ ОБЪЯВЛЯЕТСЯ СИСТЕМОЙ <МУСОРОМ> ПРИ НАЛИЧИИ КОНФЛИКТА ТРАНЗАКЦИЯ ОТКАТЫВАЕТСЯ - ПРЕДЫДУЩАЯ ВЕРСИЯ ОСТАЕТСЯ АКТУАЛЬНОЙ В ВЕРСИЯ ОТКАЧЕННОЙ ТРАНЗАКЦИИ - МУСОРОМ. В СИТЕМЕ ПРЕДУСМОТРЕНА ПРОЗРАЧНАЯ ДЛЯ ПРИЛОЖЕНИЙ <СБОРКА МУСОРА>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 12:27 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Действительно я не работал в системе CA->ADO->INTERBASE. Извините что встрял в будущую дискуссию. Но мне интересно т.е. в INTERBASE <мусор> всегда можно просмотреть или как-то увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 12:39 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi sar99! 1) Не нужно кричать :) 2) Что есть * НЕКОТОРЫЕ ДЕЙСТВИЯ ПО ОБНОВЛЕНИЮ ДРУГОЙ ТАБЛИЦЫ 3) Есть ли где-то код перезапроса данных? каковы настройки Conenction и RS? Есть ли такие-же проблемы если работать через ODBC? Пробовал ли использовать другие Ole DB провайдеры? Возникает ли проблема если просто работать с таким курсором (без всяких гридов, из командного окна например). Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2005, 16:57 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Добрый день 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 НЕ ВЫХОДЯ КОРРЕКТИРОВАТЬ ДРУГУЮ ЗАПИСЬ - ДУБЛЬ ЕЕ УЖЕ НЕ ПОЯВЛЯЕТСЯ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 09:37 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Маленькая просьба ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 09:53 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Могет дело в гриде ______________________________________ с уважением: Strong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 10:05 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi sar99! А без грида - в собственно курсоре эта запись есть? Есть ли она в "нижележащем" RS? Есть ли индексы на курсор? Если есть, то попробуй их все убрать временно. Что значит "в некоторых случаях" - конкретнее скажи что за случаи - т.е. что влияет на возникновение проблемы. P.S. На 99% уверен что то что IB "версионник" никакого отношения к проблеме не имеет - всё-же дело скорее всего где-то на стыке ADO/CA и возможно грида как такового... Попробуй "отключать" грид от привязанного курсора перед операцией (ну это известный приём - сохранить RecordSource грида и ControlSource колонок - потом "занулить" RecordSource - сделать что нужно и восстановить всё обратно). Если проблема на стыке грид/курсор то должно помочь - но если фантомная запись всё-же имеется в курсоре - то надо другое смотреть... Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2005, 22:52 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Igor В курсоре фантомная запись есть - просматривается BROW (маркер на нее тоже не устанавливается) в низлежащем RS трудно проверить(только разве DATAGRID подключить) Что касается отдельных случаев появления то у меня в этом же проекте в этом же подключении есть еще одно окно с 100% похожим кодом корректировки другой таблицы - там фантомной записи не возникает! пробовал отключить индекс - не помогает пробовал отключить транзакцию - не помогает. я склонен думать что дело в версионности и ее неправильной интерпретации механизмом курсор адаптера, так как фантом не автономен и при удалении основной записи исчезает. вполне возможно при каких то условиях курсор адаптер показывает "мусор" вернее не подчищает его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2005, 10:34 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi sar99! > В курсоре фантомная запись есть - просматривается BROW Понятно. > в низлежащем RS трудно проверить(только разве DATAGRID подключить) Просто "походить" по нему навигационными методами, выводя какое-нить уникальное поле. > Что касается отдельных случаев появления то у меня в этом > же проекте в этом же подключении есть еще одно окно > с 100% похожим кодом корректировки другой таблицы - > там фантомной записи не возникает! А индексы там тоже есть? > пробовал отключить индекс - не помогает В смысле ВООБЩЕ его не создавать - НИКОГДА - ни до заполнения, ни после перезапроса... > пробовал отключить транзакцию - не помогает. В смысле вообще отказаться от транзакций? > я склонен думать что дело в версионности Блин, ну не знает ничего CA ни про какую версионность! И сколько работаю с Oracle (который тоже по сути версионник) - никогда таких проблем не возникало. Вот в кривости конкретного OLE DB может быть дело. В слёте индекса ОЧЕНЬ может быть дело (симптомы уж сильно похожи на слетевший индекс) > фантом не автономен и при удалении основной записи исчезает. При удалении записи перестраивается индекс - и есть именно там был "дубляж", то очевидно он исчезнет. А индекс (на курсор в т.ч.) очень легко слетает при неаккуратной работе - например поменять поле, дать TableUpdate() который по какой-либо причине не сработает (триггер отфутболит или ещё чего-то), потом НЕ давая Tablerevert снова поменять поле и снова дать TableUpdate - всё - порча индекса произошла (причём именно индекса в памяти!) Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2005, 00:44 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Igor Ваша правда о возможной причине - убираю индекс совсем фантом не возникает! Но причина порчи индекса? Ваш изложенный вариант порчи мной обрабатывается! (смотри фрагмент кода выше) vcommit=tableupdate() vcommit=.t. всегда (даже теоретически если это не так) у меня стоит =tablerevert() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2005, 16:00 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi sar99! И что по твоему делает Tablerevert() и чем он будет отличаться от Tablerevert(.T.,"MyAlias")? Я предпочитаю всегда ЯВНО указывать такие параметры. Кроме того я не видел где у тебя меняется (и меняется ли вообще!) режим буферизации. Т.к. 1) В табличном режиме нельзя создать индекс 2) В строковом режиме практически невозможно работать в гриде - всякое перемещение по строкам вызывает неявные попытки сброса буфера. Кстати я не в курсе как пройдёт tablerevert() в контексте открытой транзакции (пускай и ADO-шной). IMHO есть смысл (даже если проблема и не в этом) поменять местами откат транзакции и Rollback? Или поступить ещё более кардинально - уничтожить все индексы ПЕРЕД сбросом изменений и восстановить после... Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 02:03 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Igor Надаюсь ты в курсе что механизм курсор адаптер предполагает что соответствующий курсор находится в режиме оптимистической буферизации строк! Устанавливать его специально не надо!!! И если его нельзя , как ты пишешь к GRID прикручивать, то собственно на фига попу гармонь (т е курсор адаптер!) Другое дело раскрутить твою идею с влиянием индекса - например я в REPL ключевое поле индекса не меняю! Почему индекс слетает? Кстати индекс я создаю *.idx (на структурный *.cdx ругается многопользовательская версия приложения) Что касается =tablerevert() - то оно не исполняется никогда, так как следом идет сообщение об ошибке а оно не возникает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 09:37 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Igor Да забыл насчет транзакции! =tablerevert() на транзакцию ADO не влияет никак, так как эта функция выполняется ТОЛЬКО!!! в случае если изменения на сервер не прошли и только восстанавливает исходное состояние в курсоре адаптере! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 09:43 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Так... попробуем все дело систематизировать. Дело, вероятно, в индексе, именно при поломанном индексе грид так себя ведет. Дубли получаются после REPLACE. Фантомная запись всегда образуется в самом низу грида. Используется IDX в курсор-адаптере. Во время изменений IDX активен все время и, по идее, должен перестраиваться. Глюк возникает не каждый раз. Workaround: что будет, если после реплейса делать всякий раз REINDEX? (понимаю, что не выход, но с тестовой целью...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 11:41 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Urri Действительно rein не полное (и не правильное!) решение ,но проверил - запись фантомная исчезла!!! следовательно на 100% дело в индексе , но вот вопрос: как же тогда работать - преимущество курсор адаптер с тремя например индексами перед тремя запросами select ............ order by очевидна! вылетают и set rela to и seek и еще многое другое собственно из арсенала VFP Интересно проверить программу в VFP 9.0 (но нету!!!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 14:40 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2005, 20:48 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Igor >и транзакцию надо сделать двойную..... Транзакции VFP поддерживаются ТОЛЬКО!!! для таблиц включенныхъ в контейнер базы данных VFP. >индекс надо создавать структурным .cdx Сам так думал,к сожалению в этом случае tableupdate() ВСЕГДА возвращает .F. (то есть создается иллюзия конфликта обновления на сервере! поэтому я говорил что ругается многопользовательская версия) интересно ,что тоже самое происходит когда к обычному индексу добавить ключевое слово - compact ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2005, 10:53 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2005, 01:15 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
Hi Igor Добрый день и превеликая благодарность за ценную информацию и поддержание дискуссии!!! К сожалению ни в документации ни В foxtalk нет подробного описания работы с СА. То что для СА поддерживаются транзакции FOXPRO для меня новость (пока не проверил!!!) Если да , то естественно надо применять пару - фоксовскую и серверную. Два вопроса (возможно я действительно не разобрался с KeyFieldList и WhereType): 1. если в СА первичный ключ составной (key_id,dezn) то указывать при создании СА KeyFieldList = key_id,dezn ? 2 В документации возможные значения WhereType (1,2,3,4) какое значение нужно установить , чтобы не было проблемм с полями типа VARCHAR ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2005, 10:38 |
|
||
|
РАБОТА С КУРСОР АДАПТЕР +ADO+INTERBASE
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2005, 04:45 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=328&tid=1594480]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 446ms |

| 0 / 0 |
