BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Связать две таблицы, разъясните пожалуйста каким образом связываются таблицы?
 
Добрый день.
Есть две таблицы: "cardspri" и "accounts", с общем ключевым полем "tnum", пытался их связать по этому полю так:

Код
DBPUSH("accounts","cardspri",,{accounts->tnum,cardspri->tnum})      
accounts->(ORDSetFocus("TNUM"))
cardspri->(ORDSetFocus("TNUM"))
F_SetRelation("cardspri","TNUM")
dbgotop()

Do While !Eof()
   cStr := PadR(cardspri->fam,20) + PadR(str(accounts->sum,12,2),12)
...


Но естественно неверно, вместо фамилии - пустая строка.
Можно пример кода, как осуществить связь двух таблиц?
 
В документации справка по программированию, поищите по ключу RELATION.
Для просмотра системных тэгов индекса можно воспользоваться штатным просмотрщиком таблиц.
Код
Синтаксис      
      F_SETRELATION( <cAliasD> , <cRelat>)
Параметры 
<cAliasD> - Дочерняя рабочая область
<cRelat> - выражение отношения связи
Описание 
F_SETRELATION устанавливает связь между текущей рабочей областью и дочерней рабочей областью cAliasD. 
ПРИМЕР:
DBPUSH("MDOCM","MDOCM","",{"upper(SCLAD+VID+TYPE+CODEDOC+NUMDOC)",MDOC->(UPPER(SCLAD+VID+TYPE+CODEDOC+NUMDOC))})
  F_SETRELATION("MLABEL","UPPER(GRUP+NNUM)")
  DO WHILE (MDOCM->(!EOF()))
    cGrup:=MLABEL->GRUP
    cNnum:=MLABEL->NNUM
    cAnal:=MDOCM->MDIM
    cPartia:=MDOCM->PARTIA
    nKol:=MDOCM->KOL
//добавляем строки накладной {группа,ном.номер,аналитика,партия,кол-во})
    oDoc:ADDROW(cGrup, cNnum, cAnal, cPartia, nKol)
    MDOCM->(DBSKIP())
  ENDDO
DBPOP()
С уважением,
Ильин Евгений
 
Описание функции "F_SetRelation" я уже видел, но всё равно не понял как ей пользоваться.
Можно мою задачу в тот пример подставить?
 
DBPUSH("accounts","????",,{???})
cardspri->(ORDSetFocus("17")) // или, возможно, _17 для БЭСТ-5
F_SetRelation("cardspri","upper(TNUM)")

Такая конструкция обеспечит связь между родительской базой (acciunts) и дочерней базой (cardspri) по ключевому выражению upper(TNUM).
То, что обозначено знаком Вопроса (???) это индекс и скоп родительской базы. Эти параметры зависят от выполняемой задачи и не имеют отношения к устанавливаемой связи.
Изменено: Алексей Новиков - 25.05.2011 10:28:21
С уважением, Новиков Алексей.
 
Большое спасибо! Теперь работает :happiness:
 
Описание того, как работает связь по relation можно почитать в справке по SET RELATION.
С уважением,
Ильин Евгений
Страницы: 1
Читают тему (гостей: 1)