|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите пожалуйста решение вот такой проблемы. Есть в Оракле табличка. Я для нее написала тригер на ключевое поле (что бы присваивалось уникальное значение). В Fox 9 - для нее создается курсорадаптер. И при дабавлении новой записи - заполняю все поля, кроме ключевого поля и даю команду TABLEUPDATE(0). Итого - в Оракле - все красиво. А в FOX в курсорадаптере - вместо уникального ключа пустое место. как обновить курсорадаптер, что бы он соответствовал текущему значению полей(конечно интересует ключевое поле) в табличке Оракла? Пробовала разные варианты - но не помогло. Может кто сталкивался с подобным? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 12:03 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_, разные - это какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 12:14 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_Добрый день! Подскажите пожалуйста решение вот такой проблемы. Есть в Оракле табличка. Я для нее написала тригер на ключевое поле (что бы присваивалось уникальное значение). В Fox 9 - для нее создается курсорадаптер. И при дабавлении новой записи - заполняю все поля, кроме ключевого поля и даю команду TABLEUPDATE(0). Итого - в Оракле - все красиво. А в FOX в курсорадаптере - вместо уникального ключа пустое место. как обновить курсорадаптер, что бы он соответствовал текущему значению полей(конечно интересует ключевое поле) в табличке Оракла? Пробовала разные варианты - но не помогло. Может кто сталкивался с подобным? неправильное решение, но простое: 1.курсоррефреш всего апосля правильное: либо настройка рефрешфилдс с дополнительным полем - уникальным идентификатором либо tableupdate(.f., ....) в цикле по всем потроганным записям в курсоре и ручной возврат добавленного значения посредством простого запроса к серверу и получением последнего значения айди после отработки события вставки новой записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 12:19 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
прошелмимо, Вопрос по поводу правильного решения: Вы подразумеваете что нужно заполнить свойство InsertCmdRefreshKeyFieldList ? Но тогда все равно нужно будет делать после вставки записи .CursorRefresh? Или я не правильно поняла? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 12:38 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_прошелмимо, Вопрос по поводу правильного решения: Вы подразумеваете что нужно заполнить свойство InsertCmdRefreshKeyFieldList ? Но тогда все равно нужно будет делать после вставки записи .CursorRefresh? Или я не правильно поняла? нет, есть такое понятие как авторефреш, который происходит при правильном заполнении некоторых свойств и использовании дополнительного финта ушами в виде явно указанного дополнительного уникального индефикатора. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 13:05 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_, Обновление курсорадаптера для БД VFP делаю в Grid.refrefresh так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 13:25 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
прошелмимо, а можно уточнить какие именно (!) свойства нужно заполнить для того, что бы авторефреш зарботал? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 14:36 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_прошелмимо, а можно уточнить какие именно (!) свойства нужно заполнить для того, что бы авторефреш зарботал? Вы готовы создать в табличке поле с дополнительным идентификатором? и генерить вначале этот идентификатор на клиенте перед сохранением изменений? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 14:39 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
вот тут просто дискуссия на тему, но там координально неправильная задача создания кучи вместо создания каскадных объектов http://forum.foxclub.ru/read.php?29,277528,277962#msg-277962 вот прочитать на эту тему http://forum.foxclub.ru/read.php?29,184077,195690#msg-195690 а вот классика жанра про авторефреш http://forum.foxclub.ru/read.php?29,144340,144340#msg-144340 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 14:50 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
прошелмимо, А для чего это нужно? Я что-то не пойму. В табличке Оракла все отлично, зачем дополнительное поле? Мне только его получить нужно. и если есть такое понятие как авторефреш, то очень хотелось бы научиться им пользоваться. Я пробовола заполнять свойство InsertCmdRefreshKeyFieldList, но не помогло. Что еще нужно заполнить? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 14:54 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
относительно себя: у меня универсальная библиотека с классом, который себе взад возвращает айди добавленных записей вот так (это особый метод у класса, который зовется в особом месте при сохранении изменений в буфере и при добавлении новых записей тупо дергает взад айди после вставки каждой новой записи) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
можете заморочиться с авторерфрешем, но сразу взвешивайте накладные расходы, так как там .... и я Вам код показывать пока не стану, видите у меня там заглушечка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 14:55 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_ но не помогло. Что еще нужно заполнить? я ж предупреждал, читайте классику жанра. нужна явно уникальная ссылка "до того как", поэтому пользуют доп.избыточное поле, про которое я писал. если Вы готовы на оные жертвы, то вновь смотрим пример, Вы увидите, что вначале явно созд-ся запись с явным уник.идентиф-м, а за тем уже кад, после пропихивания на сервер такой записи по оному идентиф-ры рефрешит другие записи, в т.ч. и ключи. может все-же дергать руками взад результат(значение) последнего положенного в табличку счетчика? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 14:59 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_, Почему не используете метод CA CURSORFILL() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 15:14 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
LUCIAN_Margo_, Почему не используете метод CA CURSORFILL() ? потому, что это глупо во-первых есть курсоррефреш а во-вторых глупо рефрешить весь курсор после вставки к примеру только одной записи ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 15:17 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
LUCIAN, Обновлять весь курсорадаптор не есть хорошо. Во-первых это не правильно. Просто, но не правильно. Пока табличка маленькая - еще ничего, но они имеют свойство расти. и если при вставке каждой строки обновлять курсор, а не текущую строку... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 15:19 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
прошелмимо, Прочла классику жанра. Честно, понятно не все. Хорошо - нужно дополнительное поле. Только в примере http://forum.foxclub.ru/read.php?29,144340,144340#msg-144340 - там при создании таблицы это поле объявлено как: f3 timestamp В Оракле - Data Type для него ставить каким ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 15:30 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_прошелмимо, Прочла классику жанра. Честно, понятно не все. Хорошо - нужно дополнительное поле. Только в примере http://forum.foxclub.ru/read.php?29,144340,144340#msg-144340 - там при создании таблицы это поле объявлено как: f3 timestamp В Оракле - Data Type для него ставить каким ??? таймстамп - это просто так в примере обычно используют генерируемый на клиенте идентификатор, применительно к MsSql это uniqueidentifier автор A column or local variable of uniqueidentifier data type can be initialized to a value in the following ways: By using the NEWID function. By converting from a string constant in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, in which each x is a hexadecimal digit in the range 0-9 or a-f. For example, 6F9619FF-8B86-D011-B42D-00C04FC964FF is a valid uniqueidentifier value. что делать в Оракл я не знаю, я с ним не работал никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 15:52 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
прошелмимо, Если генерить на клиенте еще один идентификатор (кроме уже автоматом создающегося в Оракле) - тогда не понятно зачем вообще на Оракле городить этот ID. Получается какое-то дублирование работы. я и создала тригер в Оракле только потому что там ID уникальный создать просто, и не нужно изобретать велосипед, как например если это делать в Fox. наверное придется плюнуть на простоту Оракла, и сочинять на фоксе уникальник ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 15:59 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_прошелмимо, Если генерить на клиенте еще один идентификатор (кроме уже автоматом создающегося в Оракле) - тогда не понятно зачем вообще на Оракле городить этот ID. Получается какое-то дублирование работы. я и создала тригер в Оракле только потому что там ID уникальный создать просто, и не нужно изобретать велосипед, как например если это делать в Fox. наверное придется плюнуть на простоту Оракла, и сочинять на фоксе уникальник ручками. ну не знаю, Вам решать. версия счетчика + избыт.UID применима в распределенных БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 16:09 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
Можно в курсорадаптере иметь всего одну запись и ее рефрешить. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 18:00 |
|
Обновление курсорадаптера
|
|||
---|---|---|---|
#18+
_Margo_Я пробовола заполнять свойство InsertCmdRefreshKeyFieldList, но не помогло. Что еще нужно заполнить? Нужно два свойства заполнить InsertCmdRefreshFieldList - список полей, значение которых будет обновлено после Insert InsertCmdRefreshKeyFieldList - поле, или набор НЕ ключевых полей также однозначно идентифицирующих запись, по которым и будет осуществлен поиск новой записи Следует отметить, что в этих свойствах указываются не имена полей таблицы собственно сервера, а соответствующие им имена полей курсора, полученного на стороне клиента. Здесь смысл в том, что, как правило, большинство справочников имеют 2 идентификатора записи. Первый - это суррогатный ключ, который как-то генерится внутри системы и используется для организации ссылочной целостности Второй - это "естесственный ключ". Поле или набор полей, по которым пользователь визуально будет идентифицировать запись. Ну, например, если ведется справочник городов, то есть некий внутренний идентификатор, который, разумеется, уникален. Но и собственно название городов тоже должно быть уникально. Иначе как же пользователь отличит один город от другого? Как он визуально сможет найти нужную запись? Если названия города недостаточно для однозначной идентификации, то надо добавить в список такой набор полей, чтобы их совокупность однозначо идентифицировала запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2010, 20:46 |
|
|
start [/forum/topic.php?fid=41&fpage=99&tid=1585326]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 447ms |
0 / 0 |