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

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / УРОК 3 Создание таблиц,индексов.пунктов меню

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
УРОК 3 Создание таблиц,индексов.пунктов меню, БЭСТ-5 поддержка пользовательких решений
 
1.Создание своих таблиц

На примере темы расположенной здесь
рассмотрим создание таблицы.

1)Запускаем client\bin\foxbro
2)Файл - создать таблицу
3)Находим нужную базу данных
4)Открываем папку user
5)Поскольку нам надо для задачи доверенностей создадим папку dover
6)Откроем папку,напишем имя таблицы dover.dbf и жмем сохранить
7)Вводим поля следующего формата:

ID_DOV Сharacter 10 0 – уникальный идентификатор в нашем примере сделаем
его символьным
CODEDOC Character 3 0
NUMDOC Character 6 0
DATE_IN Date 8 0 - дата выписки довереннсти
DATE_OUT Date 8 0 - дата какую довереннсть дествительна
TNUM Character 6 0 - табельный номер из БЭСТ
FIO Character 80 0 – ФИО, должность
PASPORT Character 80 0 – паспортные данные
AGENTNAME Character 60 0
AGENTCODE Character 6 0 Код партнера из БЭСТ
DOC Character 1 0 – ТМЦ получены по (варианты – накладной, счету, договору ) Применим массив и одного символа нам хватит
YEAR Integer 4 0 – год к которому относится доверенность (использовал отдельно для более быстрого отбора записей) Нужно ли
год иметь поле символьным ? Вероятно нет.
STATUS Character 1 0 – статус доверенности (0-выдана, 1 – возвращена, 2- закрыта т.е. ТМЦ получены)
TTN - Character 60 0 – № накладной, дата и т.д. по которой получены ТМЦ
PRIM Character 37 0

8)После ввода всех полей жмем ОК
9) На запрос INPUT DATA RECORDS отвечаем No

Таблица создана
 
Добрый день!
Цитата
nordk пишет:
ID_DOV Сharacter 10 0 – уникальный идентификатор в нашем примере сделаем
его символьным

Не согласен и вот почему, специально посмотрел таблицы в кадрах, там это поле N (нумерик) и считаю, что мы должны придерживаться правил построения в БЭСТ5, заодно можно будет испытать работу нумератора, на сколько я понимаю существеут внутрення функция для формирования уникального номера.
 
Павел вообще уникальность в БЭСТ-5 контролируется гуидами.
Поэтому нумераторы по сути очень-то не нужны.
Не знаю что там в кадрах но делать нумератор числовым это не стиль
БЭСТа. Если речь идет об уникальности то для индексов лучше иметь
поле именно символьным. Вы потом у себя делайте как хотите а пример
мы таки через символьное будем делать.
 
Посмотрел идентификаторы в Имуществе и в Автотранспорте. Там ID C22.

Как с помощью FoxBro изменить структуру таблицы?
 
Добрый день!

Цитата
nordk пишет:
Павел вообще уникальность в БЭСТ-5 контролируется гуидами.
Поэтому нумераторы по сути очень-то не нужны.
Не знаю что там в кадрах но делать нумератор числовым это не стиль
БЭСТа. Если речь идет об уникальности то для индексов лучше иметь
поле именно символьным. Вы потом у себя делайте как хотите а пример
мы таки через символьное будем делать.

Аналогично посмотрел в других модулях, действительно там C:22. Наверное это связано с тем, что кадры писались еще задолго до дизайнера. Догда давайте С:22. Заодно посмотрим что-это заверь такой гуид :rupor:
 
2.Создание своего пункта меню

1.В рабочей базе (в корне самой базы) создаем файл userbdll.txt
2.В соответствии с описанием ко второму пакету и для УРОКа 4 заносим в файл строчку
Код
Торговля\Доверенности;Пример работы с доверенностями;RunFormTest;doverenost;0

3.Заходим в БЭСТ-5 и видим пункт меню

:!:
Внимание !!!
Если раздел торговля при входе в БЭСТ-5 у Вас будет свернут и курсор
по умолчанию будет стоять на этом разделе при первом входе в базу,
то справа наименование пункта меню пользователя по этому разделу
не отразится сразу. Пошевелите курсор или разверните раздел и Вы
увидите созданный Вами пункт меню
 
В коде закралась ошибка. Он должен выглядеть так:
Торговля\Доверенности;Пример работы с доверенностями;RunFormTest;doverenost;0

Почему то при вставку в виде кода теряеться слешь
 
Да это при маркировке строки через [code] пропадает действительно.
Спасибо
 
Цитата
Денис пишет:
Посмотрел идентификаторы в Имуществе и в Автотранспорте. Там ID C22.

Как с помощью FoxBro изменить структуру таблицы?


Думаю что следует поправиться.
Лучше сначала открывать dbc контейнер базы БЭСТа а в нем создавать таблицу. И тогда открывая контейнер можно открывать и редактировать таблицу.
 
У меня пункт меню не появляется :-(
 
Вы про ошибку со слешем прочитали ?
 
Создавал файл в Фар-е и создал его в ДОС кодировке ... Сейчас пересоздал его в ВИН кодировку и пункт появился :-)
 
Спасибо - я честно говоря тоже в Far делал и даже не обратил Внимание.
Вероятно раньше переключил кодировку и потому не натолкнулся
 
Цитата
nordk пишет:
1.Создание своих таблиц

На примере темы расположенной здесь
рассмотрим создание таблицы.

1)Запускаем client\bin\foxbro
2)Файл - создать таблицу
3)Находим нужную базу данных
4)Открываем папку user
5)Поскольку нам надо для задачи доверенностей создадим папку dover
6)Откроем папку,напишем имя таблицы dover.dbf и жмем сохранить
7)Вводим поля следующего формата:

ID_DOV Сharacter 10 0 – уникальный идентификатор в нашем примере сделаем
его символьным
CODEDOC Character 3 0
NUMDOC Character 6 0
DATE_IN Date 8 0 - дата выписки довереннсти
DATE_OUT Date 8 0 - дата какую довереннсть дествительна
TNUM Character 6 0 - табельный номер из БЭСТ
FIO Character 80 0 – ФИО, должность
PASPORT Character 80 0 – паспортные данные
AGENTNAME Character 60 0
AGENTCODE Character 6 0 Код партнера из БЭСТ
DOC Character 1 0 – ТМЦ получены по (варианты – накладной, счету, договору ) Применим массив и одного символа нам хватит
YEAR Integer 4 0 – год к которому относится доверенность (использовал отдельно для более быстрого отбора записей) Нужно ли
год иметь поле символьным ? Вероятно нет.
STATUS Character 1 0 – статус доверенности (0-выдана, 1 – возвращена, 2- закрыта т.е. ТМЦ получены)
TTN - Character 60 0 – № накладной, дата и т.д. по которой получены ТМЦ
PRIM Character 37 0

8)После ввода всех полей жмем ОК
9) На запрос INPUT DATA RECORDS отвечаем No

Таблица создана

У меня 2 Вопроса. А индексов у таблицы не будет?
И чем Вам не нравиться такой код:

Код
CreateBasesForSpecificationConstruct()

#define cDov LoadPath()+"dover\dover.dbf"
#define cIDov LoadPath()+"dover\dover.CDX"


Procedure CreateBasesForSpecificationConstruct()
Local nExist:=3
Local aDOV:= {       {"ID_DOV", "C", 22, 0}, ;
                     {"CODEDOC", "C", 3, 0}, ;
                     {"NUMDOC", "C", 6,0},;
                     {"DATE_IN", "D", 8,0},;
                     {"DATE_OUT", "D", 8,0},;
                     {"TNUM", "C", 6,0},;
                     {"FIO", "C", 80,0},;
                     {"PASPORT", "C", 80,0},;
                     {"AGENTNAME", "C", 60,0},;
                     {"AGENTCODE", "C", 6,0},;
                     {"DOC", "C", 1,0},;
                     {"YEAR", "N", 4,0},;
                     {"STATUS", "C", 1,0},;
                     {"TTN", "C", 60,0},;
                     {"STATUS", "C", 1,0},;
                     {"PRIM", "C", 37,0}}


dBpUSH()
nExist:=CheckIfBasesAlreadyExist()
DO CASE 
  CASE (nExist==1)
      SayAndWait("Какая-либо из таблиц (или все) уже существует. Создание невозможно!!!")
  CASE (nExist==0)
    //Ветка создания баз данных
    DbCreate (cDov,aDOV)

    Use (cDov) NEW
    INDEX ON UPPER(NUMDOC) TAG NUMDOC TO (cIDov)
    REINDEX
    DbCloseArea()

    //Проверка ошибок
  CASE (nExist==3)
        SayAndWait("Неопознанная ошибка")
  ENDCASE
DbPop()
return

Function CheckIfBasesAlreadyExist()
Local nAlreadyExist:=3
If (File(cDov))
  nAlreadyExist:=1
else
  nAlreadyExist:=0
endif
return nAlreadyExist
 
В нашем примере индексы и таблица должны быть постоянными а не временными и мы их предполагаем делать
средствами БЭСТа. Временные таблицы и индексы годятся для построения отчетов и прочих временных интерфейсов.
 
Цитата
nordk пишет:
В нашем примере индексы и таблица должны быть постоянными а не временными и мы их предполагаем делать
средствами БЭСТа. Временные таблицы и индексы годятся для построения отчетов и прочих временных интерфейсов.

А я что предлагаю Вам постоянно их менять??? Код, приведенный выше, как раз и есть средствами БЕСТ!!!
И у Вас я создания индексов не видел. А в коде создается один индекс.
 
Вы делайте как хотите а мне оставьте изложение так как я вижу более правильным. Оно далеко еще не звершено и по этому пути пока спешить делать решения не рекомендую
 
Мой путь решения будет строиться исключительно на бизнес-объектах БЭСТа и средствах поддержки решения БЭСТом в дальнейшем при апгрейдах и установках пакетов.
 
Цитата
nordk пишет:
Вы делайте как хотите а мне оставьте изложение так как я вижу более правильным. Оно далеко еще не звершено и по этому пути пока спешить делать решения не рекомендую

Вот поэтому я и спросил, в чем же причина создания таблиц именно таким образом? Было интересно в чем разница.
Цитата
nordk пишет:
Мой путь решения будет строиться исключительно на бизнес-объектах БЭСТа и средствах поддержки решения БЭСТом в дальнейшем при апгрейдах и установках пакетов.

Кроме того действительно Вы опустили описание создание индексов для таблицы средством БЕСТ'а - "Утилита работы с базами данных БЭСТ-5". Там есть отдельная вкладка для них.
 
Еще раз прошу не бежать вперели паровоза. Вы не знаете
задумок и не надо навязывать свое.
Что касается создания статических таблиц - создавайте их чем хотите. Хотите пишите программы для их создания я лично предпочитаю пользоваться инструментом и объясняю другим как это делается. Как ее включить в контейнер БЭСТа, где ее хранить и т.д. и т.п.
Это действие разовое.

ДЕМАГОГИЮ продолжать не буду
 
Цитата
nordk пишет:
Еще раз прошу не бежать вперели паровоза. Вы не знаете
задумок и не надо навязывать свое.
Что касается создания статических таблиц - создавайте их чем хотите. Хотите пишите программы для их создания я лично предпочитаю пользоваться инструментом и объясняю другим как это делается. Как ее включить в контейнер БЭСТа, где ее хранить и т.д. и т.п.
Это действие разовое.

ДЕМАГОГИЮ продолжать не буду

Хорошо, давайте, ворос по существу.
Что значит включить таблицу в контейнер БЕСТа?
Изменено: Саак Шахламджян - 27.08.2008 16:52:20
 
БЭСТ построен на ядре Visual FoxPro и особенностями этого является наличие контейнера в который собраны
все таблицы. Пройдите урок от начала до конца и Вы увидите что и куда мы добавляем.
 
Цитата
nordk пишет:
БЭСТ построен на ядре Visual FoxPro и особенностями этого является наличие контейнера в который собраны
все таблицы. Пройдите урок от начала до конца и Вы увидите что и куда мы добавляем.

Это файл BEST5.DBC - контенер? По-моему это файл базы данных. Хотя, какая разница.
Ну, что же с интересом буду ждать описания создания индексов. Мне очень интересно. В этой утилите есть много-много интересного, о чем очень хотелось бы знать.
Страницы: 1
Читают тему (гостей: 1)