Страница 1 из 1
Прошу разъяснить
Добавлено: 26 Июнь 2006, 12:06
And234
1. Для чего предназначены
Select record
constraint record
additional record
я обхожусь только селектом (можно ли так)
2. В базе организовано соединение таблиц через primary по коду
таблица код, название.
Как сделать чтоб по просмотру в вроуз другой таблицы вместо кода отображал название с первой а не его код.
Re: Прошу разъяснить
Добавлено: 26 Июнь 2006, 13:14
Andrew™
And234 писал(а):1. Для чего предназначены
Select record
constraint record
additional record
я обхожусь только селектом (можно ли так)
selected record - правило поиска в справочнике, например контрагента ищем по ИНН, и присваиваем Ref (primary key field), ИНН в документе не держим а держим Ref контрагента, вот по Ref -
constraint record запись из справочника и подывается при повторном входе в форму
Additional record - ну это если в одной таблице лежит несколько справочников - доп WHERE поставщики клиенты, дружественые фирмы
And234 писал(а):
2. В базе организовано соединениprimary key fieldе таблиц через primary по коду
таблица код, название.
Как сделать чтоб по просмотру в вроуз другой таблицы вместо кода отображал название с первой а не его код.
не понял вопроса, если в DCT описана связь одной таблицы с другой, то как и штатно можно в File Schematic заюзать обе таблицы и отображать в LIST любые поля из этих таблиц.
Добавлено: 26 Июнь 2006, 15:44
And234
А красиво бы выглядело. (а то непонятные юзеру коды какие-то.)
Позже подумаю.
Может через виртуальную таблицу у которой одно поле сформировано по условию, подсовываемую в оконную таблицу с невидимой колонкой заменяемого кода.
Добавлено: 26 Июнь 2006, 16:31
Andrew™
And234 писал(а):А красиво бы выглядело. (а то непонятные юзеру коды какие-то.)
Позже подумаю.
Может через виртуальную таблицу у которой одно поле сформировано по условию, подсовываемую в оконную таблицу с невидимой колонкой заменяемого кода.
всё равно не понял о чём речь
правило хорошего тона Primary key field не показывать конечному пользователю, он работает с названиями, условными кодами и т д
в БД же все связки FOREIGN KEY идут именно по Primary Key field
Добавлено: 27 Июнь 2006, 8:03
And234
всё равно не понял о чём речь
правило хорошего тона Primary key field не показывать конечному пользователю, он работает с названиями, условными кодами и т д
в БД же все связки FOREIGN KEY идут именно по Primary Key field
Это наверное не разработчику MAV, но может есть идеи.
В таблице платежи есть по крайней мере 4 колонки
1. IDP (primary key) - код платежа
2. IDD (FOREIGN KEY) - связь с таблицей плательщиков
3. IDType (FOREIGN KEY) - связь с таблицей типов платежа
4. Summa - цель хранения
Запись в Brouse такая
2653 | 69 | 11 | 5000.00
Это дело выглядит красиво в двухтабличном броувзе (как у вас в примере для просмотра плательщиков) где вторая таблица отображает результат фильтра по выбранному плательщику с первой.
Но не устранен просмотр типа платежа (вместо 11 хотелось бы видеть без нал)
Я вот это хотел.
Добавлено: 27 Июнь 2006, 8:43
Andrew™
And234 писал(а):всё равно не понял о чём речь
правило хорошего тона Primary key field не показывать конечному пользователю, он работает с названиями, условными кодами и т д
в БД же все связки FOREIGN KEY идут именно по Primary Key field
Это наверное не разработчику MAV, но может есть идеи.
В таблице платежи есть по крайней мере 4 колонки
1. IDP (primary key) - код платежа
2. IDD (FOREIGN KEY) - связь с таблицей плательщиков
3. IDType (FOREIGN KEY) - связь с таблицей типов платежа
4. Summa - цель хранения
Запись в Brouse такая
2653 | 69 | 11 | 5000.00
Это дело выглядит красиво в двухтабличном броувзе (как у вас в примере для просмотра плательщиков) где вторая таблица отображает результат фильтра по выбранному плательщику с первой.
Но не устранен просмотр типа платежа (вместо 11 хотелось бы видеть без нал)
Я вот это хотел.
всё же штатно, в DCT опиши связь файла платежи с файлом типы платежей
в Browse в File Schematic появится возможность подцепить к файлу Платежи файл типы Платежей, и отображай в Browse вместо IDType поле из файла тип платежей.
Добавлено: 29 Июнь 2006, 12:33
And234
2 вопроса.
1. Сущестуют 2 связанные по коду таблицы
Как мне сделать в форме редактирования записи одной таблицы просмотр элементов другой таблицы отличной от кода.
(может это настраивается штатно) без запроса с известным кодом(связи).
2. Где найти пример с выполнением SQL запроса и возвратом таблицы результата.
Что нить по проще чем в Импорте таблиц в примере ABCMAV
Добавлено: 29 Июнь 2006, 12:44
Andrew™
And234 писал(а):2 вопроса.
1. Сущестуют 2 связанные по коду таблицы
Как мне сделать в форме редактирования записи одной таблицы просмотр элементов другой таблицы отличной от кода.
(может это настраивается штатно) без запроса с известным кодом(связи).
ставишь в форме Browse по другой таблице, на закладке Condition behaviour - default - выставляешь фильтр по коду not equate коду первой таблицы
And234 писал(а):
2. Где найти пример с выполнением SQL запроса и возвратом таблицы результата.
Что нить по проще чем в Импорте таблиц в примере ABCMAV
самое простое:
Код: Выделить всё
myQueue Queue
Field1 LONG
END
CODE
IF MAVLOAD('select Field from myTable1',myQueue)
MAVSHOWERROR
ELSE
! Ok, залили в Queue результат запроса
END
Добавлено: 09 Август 2006, 10:31
Admin
самое простое:
Код: Выделить всё
myQueue Queue
Field1 LONG
END
CODE
IF MAVLOAD('select Field from myTable1',myQueue)
MAVSHOWERROR
ELSE
! Ok, залили в Queue результат запроса
END
простое то простое.... но!
вот смотри после MAVLOAD у меня результат ошибки Запись не найдена[35]
А как мне код ошибки получить? Не текст ошибки а именно код.
Мне нужно найти запись в таблице. Если она есть - Ok
А если ее нет мне нужно ее добавить. А у тебя в данном случае при отсутствии записи выскочит ошибка...
Добавлено: 09 Август 2006, 13:09
Andrew™
Admin писал(а):
самое простое:
Код: Выделить всё
myQueue Queue
Field1 LONG
END
CODE
IF MAVLOAD('select Field from myTable1',myQueue)
MAVSHOWERROR
ELSE
! Ok, залили в Queue результат запроса
END
простое то простое.... но!
вот смотри после MAVLOAD у меня результат ошибки Запись не найдена[35]
А как мне код ошибки получить? Не текст ошибки а именно код.
Мне нужно найти запись в таблице. Если она есть - Ok
А если ее нет мне нужно ее добавить. А у тебя в данном случае при отсутствии записи выскочит ошибка...
во первых проверил, в случае если записей по условию нет, MAVLOAD возвращает НОЛЬ и условие отсутвия записи
Код: Выделить всё
IF NOT MAVLOAD() AND NOT RECORDS(LoadQueue)
END
но это как то кузяво, если нужна проверка наличия записи в таблице описанной в словаре, то воспользуйся следующими функциями:
если подымаешь запись по Primary Key:
Код: Выделить всё
File.Field1 = value
CASE MAVGET(File)
OF NoError
! запись есть
OF NoRecErr
! записи нет
ELSE
! ошибка чтения
END
если по произвольным полям
Код: Выделить всё
MAVCLEAR(File)
File.Field2 = val2
File.field3 = val3
CASE MAVGETFROMRECORD(File)
OF NoError
! запись есть
OF NoRecErr
! записи нет
ELSE
! ошибка чтения
END
почему не MAVLoad, а MAVGET
1. КУРСОР ПРЕПАРИРУЕТСЯ НА ПОЛУЧЕНИЕ ИЗ бд 1 ЗАПИСИ, ДЛЯ mavload КОЛ-ВО ЗАПИСЕЙ - ВСЕ СКОКА ЕСТЬ В бд
2. НА MAVLOAD ВСЕГДА ИДЁТ SQLDESCRIBE ЗАПРОСА, ДЛЯ mavget И ВСЕХ КУРСОРНЫХ ОБЪЕКТОВ SQLDESCRIBE ДКЛАЕТСЯ ТОЛЬКО ОДИН РАЗ ПРИ ПЕРВОМ ОБРАЩЕНИИ К ФАЙЛУ ИЗ dct
MAVLOAD в своих трёх вариациях необходимо использовать для получения произвольных запросов по структурам, которые не описаны в словаре
ЗЫ
а уведомления об ответах в ветках мне так и не приходят вааще ;(
Вот еще трабла!
Добавлено: 11 Август 2006, 10:51
Admin
Смотри:
Код: Выделить всё
xAccessDMClass.GetName PROCEDURE(*GROUP File,STRING Name)!,STRING,VIRTUAL
CODE
CASE INSTANCE(File,THREAD())
OF ADDRESS(xaccLinks)
RETURN 'xa_links'
OF ADDRESS(xaccLogs)
почему мне пришлось использовать INSTANCE а не ADDRESS как у тебя?
C ADDRESS не работает. Адрес группы не верно возвращает...
Re: Вот еще трабла!
Добавлено: 11 Август 2006, 11:38
Andrew™
Admin писал(а):Смотри:
Код: Выделить всё
xAccessDMClass.GetName PROCEDURE(*GROUP File,STRING Name)!,STRING,VIRTUAL
CODE
CASE INSTANCE(File,THREAD())
OF ADDRESS(xaccLinks)
RETURN 'xa_links'
OF ADDRESS(xaccLogs)
почему мне пришлось использовать INSTANCE а не ADDRESS как у тебя?
C ADDRESS не работает. Адрес группы не верно возвращает...
кто сказал, что я юзаю ADDRESS, погляди что шаблоны генерят, у меня для совместимости со всеми версиями Clarion существует своя функция MAVADDRESS, которая и юзается в .GetName()
Re: Вот еще трабла!
Добавлено: 11 Август 2006, 12:50
Admin
у меня для совместимости со всеми версиями Clarion существует своя функция MAVADDRESS, которая и юзается в .GetName()
Да. Каюсь. Сам прогнал. Спасибо!