Страница 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
СергейР
Ал договор заполняется только в присутствии клиента