Изменение двух файлов в Form

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
СергейР
Новичок
Сообщения: 6
Зарегистрирован: 09 Апрель 2015, 12:56

Изменение двух файлов в Form

Сообщение СергейР »

имеются две связанные таблицы, в Form меняются записи одной, при нажатии OK хочется что бы менялось значение одного поля записи другой табл. Такое возможно?
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Изменение двух файлов в Form

Сообщение Admin »

СергейР писал(а): Такое возможно?
Да, если вы спрашиваете только о самом факте.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Изменение двух файлов в Form

Сообщение Ал »

Admin писал(а):
СергейР писал(а): Такое возможно?
Да, если вы спрашиваете только о самом факте.
:)
http://forum.clarionlife.net/phpbb/view ... =13&t=1637
может надо поднять и развить - для новичков?
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Изменение двух файлов в Form

Сообщение kreator »

СергейР писал(а):имеются две связанные таблицы
Таблицы и так связанные, зачем апдейтить вторую? Давайте конкретный пример. Кажется, что структура таблиц неправильная. И что за база? В SQL для этого есть триггеры, а в форме ручками неправильно делать. Есть ещё вариант настроить Referential Integrity для автоматического апдейта, но нужна конкретика.
We are hard at work… for you. :)
СергейР
Новичок
Сообщения: 6
Зарегистрирован: 09 Апрель 2015, 12:56

Изменение двух файлов в Form

Сообщение СергейР »

уточняю вопрос :)
описание:
==============================================
таблицы:
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 раз.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Изменение двух файлов в Form

Сообщение kreator »

Извините, а на великом и могучем расписать можно? Типа того:
Table1
ID Long
Name String(255)
...

Table2
ID Long
ID_Table1 Long
Name String(255)
.

А то есть поле GdeNahod (правда не понятно в какой таблице). И где его надо повторить?
We are hard at work… for you. :)
СергейР
Новичок
Сообщения: 6
Зарегистрирован: 09 Апрель 2015, 12:56

Изменение двух файлов в 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 = 'У клиента'
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Изменение двух файлов в Form

Сообщение gopstop2007 »

СергейР писал(а):имеются две связанные таблицы, в Form меняются записи одной, при нажатии OK хочется что бы менялось значение одного поля записи другой табл. Такое возможно?
если "стоим-находимся" на изменяемой записи во второй таблице

Код: Выделить всё

   !меняем саму запись в файле
	BRW(?).UpdateViewRecord() !  другая таблица
	InstrID = значение из формы 
	PUT(Instrument)
    
	! меняем запись в другой таблице
	GET(Queue:Browse, Choice(?List))  
	BRW(?).Q.InstrID = значение из формы 
	PUT(Queue:Browse)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Изменение двух файлов в Form

Сообщение gopstop2007 »

СергейР писал(а): выбрал инструмент вернулся на 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 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
СергейР
Новичок
Сообщения: 6
Зарегистрирован: 09 Апрель 2015, 12:56

Изменение двух файлов в Form

Сообщение СергейР »

спасибо. буду пробовать
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5239
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Изменение двух файлов в Form

Сообщение finsoftrz »

Если в форме нужно внести изменения в несколько таблиц, то лучше использовать не стандартный шаблон формы, а шаблон окна. На кнопку ОК навесить сохранение всего, что нужно, в рамках транзакции. Иначе потенциально нарываемся на ситуацию с некорректными данными (одну запись изменили, на другой сбойнуло).

Конкретно в этой задаче я бы использовал другой алгоритм с динамическим определением места нахождения.
C6/C12, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Изменение двух файлов в Form

Сообщение kreator »

finsoftrz прав, GdeNahod - лишнее поле, с БД так не работают. Чтобы узнать находится ли инструмент у клиента, достаточно проверить есть ли запись в PT для конкретного инструмента и конкретного договора. Если есть, то - "У клиента". Проверку можно сделать так:
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

Сообщение Ал »

Интересно - заполнение договора - предварительно/в присутствии клиента или клиентом/постфакт? Т.е. инструмент-то действительно когда - "У клиента"?
СергейР
Новичок
Сообщения: 6
Зарегистрирован: 09 Апрель 2015, 12:56

Изменение двух файлов в Form

Сообщение СергейР »

kreator дело в том, что даже после того как инструмент вернули, нужно хранить инфу о том на сколько и за какую сумму его брали, что бы вычислять коэффициент полезного использования инструмента. Если же судить только о данных в таблице PT (есть в таблице, значить у клиента) то после возвращения инструмента его нужно удалять из PT, и как тогда определить коэффициент полезного использования этого инструмента за какой то период времени?
СергейР
Новичок
Сообщения: 6
Зарегистрирован: 09 Апрель 2015, 12:56

Изменение двух файлов в Form

Сообщение СергейР »

Ал договор заполняется только в присутствии клиента
Ответить