Изменение двух файлов в Form
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Изменение двух файлов в Form
имеются две связанные таблицы, в Form меняются записи одной, при нажатии OK хочется что бы менялось значение одного поля записи другой табл. Такое возможно?
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Изменение двух файлов в Form
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 1038
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Изменение двух файлов в Form
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Изменение двух файлов в Form
Таблицы и так связанные, зачем апдейтить вторую? Давайте конкретный пример. Кажется, что структура таблиц неправильная. И что за база? В SQL для этого есть триггеры, а в форме ручками неправильно делать. Есть ещё вариант настроить Referential Integrity для автоматического апдейта, но нужна конкретика.СергейР писал(а):имеются две связанные таблицы
We are hard at work… for you. 

Изменение двух файлов в Form
уточняю вопрос
описание:
==============================================
таблицы:
PT *********************************Instrument
|--------------------|************ |------------------|
| KeyInstrument **| <<----> | KeyPrimari |
| |_InstrID*******|************| |_InstrID |
|--------------------|************|-----------------|
| PTID**************|************| InstrID |
| InstrID***********|************| GdeNahod |
|ляляляля...******|************| ляляляля... |
|------------------ |************|------------------|
============================================
в FORM
Tables
UpdateRecord
*****|_PT-PT:KeyInstrument
**********|_Instrument
=============================================
Как можно сделать так, что бы сохраняя запись в таблице PT (при нажатии ОК) в связанной с ней по ключу, таблице Instrument, полю GdeNahod присваивалось значение у клиента?
PS: и это.. там, в опросе, ссылку которого дал "Ал" первое оно вернее "ответить на него, хотя может быть и в сотый раз"

описание:
==============================================
таблицы:
PT *********************************Instrument
|--------------------|************ |------------------|
| KeyInstrument **| <<----> | KeyPrimari |
| |_InstrID*******|************| |_InstrID |
|--------------------|************|-----------------|
| PTID**************|************| InstrID |
| InstrID***********|************| GdeNahod |
|ляляляля...******|************| ляляляля... |
|------------------ |************|------------------|
============================================
в FORM
Tables
UpdateRecord
*****|_PT-PT:KeyInstrument
**********|_Instrument
=============================================
Как можно сделать так, что бы сохраняя запись в таблице PT (при нажатии ОК) в связанной с ней по ключу, таблице Instrument, полю GdeNahod присваивалось значение у клиента?
PS: и это.. там, в опросе, ссылку которого дал "Ал" первое оно вернее "ответить на него, хотя может быть и в сотый раз"

Последний раз редактировалось СергейР 10 Апрель 2015, 10:46, всего редактировалось 1 раз.
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Изменение двух файлов в Form
Извините, а на великом и могучем расписать можно? Типа того:
Table1
ID Long
Name String(255)
...
Table2
ID Long
ID_Table1 Long
Name String(255)
.
А то есть поле GdeNahod (правда не понятно в какой таблице). И где его надо повторить?
Table1
ID Long
Name String(255)
...
Table2
ID Long
ID_Table1 Long
Name String(255)
.
А то есть поле GdeNahod (правда не понятно в какой таблице). И где его надо повторить?
We are hard at work… for you. 

Изменение двух файлов в Form
Table1 - PT является "промежуточной" таблицей, реализующей не явное отношение многие ко многим:
Table Dogovor <->>Table1 - PT <<->Table2 - Instrument
Table - Dogovor (DOG)
DogovorID (long)
......
Table1 - PT (PT)
DogovorID (long)
InstrID (long)
Table2 - Instrument (INS)
InstrID (long)
Name String(100)
GdeNahod String(10)
....
Заполняю договор аренды, в нём может находиться несколько инструментов из справочника. В Form Table Dogovor размещаю ListBox, по Insert вызываю Form Table1 - PT. Разместил в ней кнопку, в её embeds вставил CallProcedureAsLookup (в строке CodeAfter,Completed прописал PT:DogovorID=Dog:DogovorID;PT:InstrID=INS:InstrID;display ), которой вызываю Browse Table2 - Instrument (справочник инструментов) в данном Browse разместил кнопку Select, выбрал инструмент вернулся на Form Table1 - PT (так сказать предпросмотр выбранного инструмента) если то что нужно жму ОК и вот тут хочется реализовать изменение Table2 - Instrument что бы полю INS:GdeNahod = 'У клиента'
Table Dogovor <->>Table1 - PT <<->Table2 - Instrument
Table - Dogovor (DOG)
DogovorID (long)
......
Table1 - PT (PT)
DogovorID (long)
InstrID (long)
Table2 - Instrument (INS)
InstrID (long)
Name String(100)
GdeNahod String(10)
....
Заполняю договор аренды, в нём может находиться несколько инструментов из справочника. В Form Table Dogovor размещаю ListBox, по Insert вызываю Form Table1 - PT. Разместил в ней кнопку, в её embeds вставил CallProcedureAsLookup (в строке CodeAfter,Completed прописал PT:DogovorID=Dog:DogovorID;PT:InstrID=INS:InstrID;display ), которой вызываю Browse Table2 - Instrument (справочник инструментов) в данном Browse разместил кнопку Select, выбрал инструмент вернулся на Form Table1 - PT (так сказать предпросмотр выбранного инструмента) если то что нужно жму ОК и вот тут хочется реализовать изменение Table2 - Instrument что бы полю INS:GdeNahod = 'У клиента'
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Изменение двух файлов в Form
если "стоим-находимся" на изменяемой записи во второй таблицеСергейР писал(а):имеются две связанные таблицы, в Form меняются записи одной, при нажатии OK хочется что бы менялось значение одного поля записи другой табл. Такое возможно?
Код: Выделить всё
!меняем саму запись в файле
BRW(?).UpdateViewRecord() ! другая таблица
InstrID = значение из формы
PUT(Instrument)
! меняем запись в другой таблице
GET(Queue:Browse, Choice(?List))
BRW(?).Q.InstrID = значение из формы
PUT(Queue:Browse)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Изменение двух файлов в Form
что-то в этом родеСергейР писал(а): выбрал инструмент вернулся на Form Table1 - PT (так сказать предпросмотр выбранного инструмента) если то что нужно жму ОК и вот тут хочется реализовать изменение Table2 - Instrument что бы полю INS:GdeNahod = 'У клиента'
INS:InstrID=PT:InstrID
Access:Instrument.Fetch(Ключ по INS:InstrID)
INS:GdeNahod = 'У клиента'
Access:Instrument.Update()
BRW(?).ResetQueue(Reset:Queue)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5239
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Изменение двух файлов в Form
Если в форме нужно внести изменения в несколько таблиц, то лучше использовать не стандартный шаблон формы, а шаблон окна. На кнопку ОК навесить сохранение всего, что нужно, в рамках транзакции. Иначе потенциально нарываемся на ситуацию с некорректными данными (одну запись изменили, на другой сбойнуло).
Конкретно в этой задаче я бы использовал другой алгоритм с динамическим определением места нахождения.
Конкретно в этой задаче я бы использовал другой алгоритм с динамическим определением места нахождения.
C6/C12, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Изменение двух файлов в Form
finsoftrz прав, GdeNahod - лишнее поле, с БД так не работают. Чтобы узнать находится ли инструмент у клиента, достаточно проверить есть ли запись в PT для конкретного инструмента и конкретного договора. Если есть, то - "У клиента". Проверку можно сделать так:
PT:DogovorID = Value1
PT:InstrID = Value2
if ~Access:PT.Fetch(PrimaryKey)
LOC:String = 'У Клиента'
else
LOC:String = ''
end
Тем более, что таблица инструментов - это справочник. Для одного договора конкретный инструмент "У Клиента", для другого нет.
PT:DogovorID = Value1
PT:InstrID = Value2
if ~Access:PT.Fetch(PrimaryKey)
LOC:String = 'У Клиента'
else
LOC:String = ''
end
Тем более, что таблица инструментов - это справочник. Для одного договора конкретный инструмент "У Клиента", для другого нет.
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 1038
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Изменение двух файлов в Form
Интересно - заполнение договора - предварительно/в присутствии клиента или клиентом/постфакт? Т.е. инструмент-то действительно когда - "У клиента"?
Изменение двух файлов в Form
kreator дело в том, что даже после того как инструмент вернули, нужно хранить инфу о том на сколько и за какую сумму его брали, что бы вычислять коэффициент полезного использования инструмента. Если же судить только о данных в таблице PT (есть в таблице, значить у клиента) то после возвращения инструмента его нужно удалять из PT, и как тогда определить коэффициент полезного использования этого инструмента за какой то период времени?