Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid вычисляемое поле / 14 сообщений из 14, страница 1 из 1
23.08.2006, 19:35
    #33938745
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Можно ли в гриде с источником из двух таблиц создать вычисляемое поле (как в BROW) ?
т.е. три поля
1.table1.кол,
2.table2.вес,
3.кол*вес - это хотелось бы получить.
...
Рейтинг: 0 / 0
23.08.2006, 20:04
    #33938787
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
BMJМожно ли в гриде с источником из двух таблиц создать вычисляемое поле (как в BROW) ?
т.е. три поля
1.table1.кол,
2.table2.вес,
3.кол*вес - это хотелось бы получить.Да можно. Для этого
1. в DE формы кидаешь обе таблицы
2. связываешь их по нужному id
3. на форму кидаешь Grid
4. Grid.ColumnCount = 3
Grid.RecordSource = 'table1'
Grid.Column1.ControlSource = 'table1.kol'
Grid.Column2.ControlSource = 'table2.weight'
Grid.Column3.ControlSource = 'table1.kol * table2.weight'
Ну и запустить форму. См. рис.
Но я считаю лично, что лучше использовать LV (LocalView) или Cursor построенные на основе этих таблиц.
...
Рейтинг: 0 / 0
23.08.2006, 20:15
    #33938805
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Спасибо!
Работает.
Программа подсобная, использутся для себя, поэтому без запрсов и view
...
Рейтинг: 0 / 0
25.08.2006, 12:57
    #33942773
TallinAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
А как третий столбец при вычислении округлить до 2 знаков?
...
Рейтинг: 0 / 0
25.08.2006, 13:12
    #33942819
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
TallinAlА как третий столбец при вычислении округлить до 2 знаков?См. функцию ROUND()
...
Рейтинг: 0 / 0
25.08.2006, 13:20
    #33942850
TallinAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
2 Владимир СА
Прав ты

----------
с этого и начинал, давала ошибку синтаксиса

Спасибо
...
Рейтинг: 0 / 0
04.11.2006, 23:02
    #34106097
aleksandrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Владимир СА
Но я считаю лично, что лучше использовать LV (LocalView) или Cursor построенные на основе этих таблиц.
Извините, а можно поподробнее ?
У меня в таблице есть поле со значениями "П", и т.д., нужно, чтобы в гриде в этом поле отображались полные названия "Прикладное", ... , но в табличке исходной чтобы это поле оставалось в том же виде, и чтобы она (табличка) не блокировалась.
Как я делаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
USE ntp IN  0  SHARED
SELECT * FROM ntp WHERE !DELETED() INTO CURSOR ntp_cur READWRITE
SELECT ntp_cur
ALTER TABLE ntp_cur ALTER COLUMN codtype Character( 32 )
SCAN
  DO CASE
   CASE UPPER(ALLTRIM(codtype)) = 'Ф'
     REPLACE codtype WITH  'Фундаментальное фундаментальное'
   CASE UPPER(ALLTRIM(codtype)) = 'Р'
     REPLACE codtype WITH  'Экспериментальная разработка'  
   OTHERWISE 
     REPLACE codtype WITH  'Прикладное исследование'
  ENDCASE
ENDSCAN
GO TOP
ставлю ntp_cur в recordsource грида.
Но вот например поменял/удалил/добавил я что-нибудь в курсор, как (тупо переписать каждую запись из курсора в табличку? но это как-то некрасиво), и когда (сразу после редактирования записи в гриде, или в момент закрытия формы, со всеми измененными записями) это сделать ?
Просто интересно, как это "правильно" делают, хотя бы общие принципы.
...
Рейтинг: 0 / 0
05.11.2006, 20:33
    #34106489
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Код: plaintext
1.
2.
3.
4.
5.
6.
USE ntp IN  0  SHARED
SELECT *
,padr(iif(ALLTRIM(codtype)) = 'Ф'
,'Фундаментальное фундаментальное',iif(ALLTRIM(codtype)) = 'Р'
,'Экспериментальная разработка','Прикладное исследование')), 32 ) as codtype2 

FROM ntp WHERE !DELETED() INTO CURSOR ntp_cur READWRITE
Извените что умничаю но скан не нужен
...
Рейтинг: 0 / 0
05.11.2006, 20:33
    #34106491
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
к тому же в 9-ке есть icase кажеться
...
Рейтинг: 0 / 0
06.11.2006, 00:46
    #34106649
aleksandrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
leafИзвените что умничаю но скан не нужен
Да нет, отчего же, я и запостил сюда код свой, чтобы знающие люди "поумничали". Меня никто не учил, а на основе книжек получилось то, что я и написал выше. А хотелось бы пограмотнее.
А про то, что я после кода спрашивал, что-нибудь посоветуете? Хотя бы общий словесный алгоритм.
...
Рейтинг: 0 / 0
06.11.2006, 01:22
    #34106661
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Стандартное решение в данном случае - это дополнительный справочник (таблица). В этой таблице в качестве ключа указываешь свои буквы "Ф", "Р", "П", а в качестве значение - полную расшифровку.

Тогда никаких сложных функций писать вообще не надо. Просто делаешь связь с подчиненной таблицей и отображаешь поле подчиненной таблицы.

Это решение легко "масштабируется" (расширяется). Захотел добавить "буквы" - пожалуйста. Добавляешь запись в справочник и не надо никаких измеенний в код вносить.
...
Рейтинг: 0 / 0
06.11.2006, 01:58
    #34106673
aleksandrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
ВладимирМСтандартное решение в данном случае - это дополнительный справочник (таблица)
...
Я наверное невполне смог выразить свою мысль :)
Меня интересует вообще как реализуется вариант, когда работа идет не с исходной табличкой, а с курсором.
Вот допустим я придумаю, как редактировать курсор, который в гриде отображается (чтобы проверять на корректность, запрашивать подтверждение, и т.д., через дополнительные переменные, или через буферизацию, как я на этом форуме читал). В курсоре запись изменилась, или удалилась, или добавилась.
Как потом корректно всё это дело "синхронизировать" с исходной табличкой? Просто заменить табличку курсором? Или каждую запись проверить, и где расхождение, ту запись заменить записью из курсора? Или, может быть, как-то можно сделать, чтобы табличка автоматически курсору соответствовала?
Повторюсь, условие такое, чтобы табличку эксклюзивно не открывать.
----
Или Вы имели ввиду, что если сделать этот "справочник", сделать set relation, тогда можно будет работать с исходной таблицей, а тот вариант с созданием промежуточного курсора - слишком мудрёный и на практике не используется?
...
Рейтинг: 0 / 0
06.11.2006, 03:26
    #34106703
aleksandrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Я просто ведь почему ещё хотел курсор использовать, а не саму табличку - чтобы потом добавить функцию "фильтрация". Как я понял, set filter имеет свои минусы и предпочтительнее для фильтрации просто новый курсор формировать на основе условий фильтра, и его в грид уже выводить.
А это значит, что мне всё равно прийдётся решить, как этот курсор и таблицу "синхронизировать".
...
Рейтинг: 0 / 0
06.11.2006, 14:46
    #34107156
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid вычисляемое поле
Для этих целей и придумали Local View. При определенных настройках, изменения сделанные в Local View автоматически переносятся в исходные таблицы. Не надо ничего самому писать.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid вычисляемое поле / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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