Страница 1 из 2

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

Добавлено: 09 Апрель 2015, 22:33
СергейР
имеются две связанные таблицы, в Form меняются записи одной, при нажатии OK хочется что бы менялось значение одного поля записи другой табл. Такое возможно?

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

Добавлено: 10 Апрель 2015, 0:35
Admin
СергейР писал(а): Такое возможно?
Да, если вы спрашиваете только о самом факте.

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

Добавлено: 10 Апрель 2015, 7:39
Ал
Admin писал(а):
СергейР писал(а): Такое возможно?
Да, если вы спрашиваете только о самом факте.
:)
http://forum.clarionlife.net/phpbb/view ... =13&t=1637
может надо поднять и развить - для новичков?

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

Добавлено: 10 Апрель 2015, 10:00
kreator
СергейР писал(а):имеются две связанные таблицы
Таблицы и так связанные, зачем апдейтить вторую? Давайте конкретный пример. Кажется, что структура таблиц неправильная. И что за база? В SQL для этого есть триггеры, а в форме ручками неправильно делать. Есть ещё вариант настроить Referential Integrity для автоматического апдейта, но нужна конкретика.

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

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

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

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

Table2
ID Long
ID_Table1 Long
Name String(255)
.

А то есть поле GdeNahod (правда не понятно в какой таблице). И где его надо повторить?

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

Добавлено: 10 Апрель 2015, 11:18
СергейР
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 = 'У клиента'

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

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

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

   !меняем саму запись в файле
	BRW(?).UpdateViewRecord() !  другая таблица
	InstrID = значение из формы 
	PUT(Instrument)
    
	! меняем запись в другой таблице
	GET(Queue:Browse, Choice(?List))  
	BRW(?).Q.InstrID = значение из формы 
	PUT(Queue:Browse)

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

Добавлено: 10 Апрель 2015, 11:50
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)

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

Добавлено: 10 Апрель 2015, 11:55
СергейР
спасибо. буду пробовать

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

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

Конкретно в этой задаче я бы использовал другой алгоритм с динамическим определением места нахождения.

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

Добавлено: 10 Апрель 2015, 12:42
kreator
finsoftrz прав, GdeNahod - лишнее поле, с БД так не работают. Чтобы узнать находится ли инструмент у клиента, достаточно проверить есть ли запись в PT для конкретного инструмента и конкретного договора. Если есть, то - "У клиента". Проверку можно сделать так:
PT:DogovorID = Value1
PT:InstrID = Value2
if ~Access:PT.Fetch(PrimaryKey)
LOC:String = 'У Клиента'
else
LOC:String = ''
end

Тем более, что таблица инструментов - это справочник. Для одного договора конкретный инструмент "У Клиента", для другого нет.

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

Добавлено: 10 Апрель 2015, 13:09
Ал
Интересно - заполнение договора - предварительно/в присутствии клиента или клиентом/постфакт? Т.е. инструмент-то действительно когда - "У клиента"?

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

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

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

Добавлено: 14 Апрель 2015, 11:16
СергейР
Ал договор заполняется только в присутствии клиента