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 контролируется гуидами.
Поэтому нумераторы по сути очень-то не нужны.
Не знаю что там в кадрах но делать нумератор числовым это не стиль
БЭСТа. Если речь идет об уникальности то для индексов лучше иметь
поле именно символьным. Вы потом у себя делайте как хотите а пример
мы таки через символьное будем делать.
nordk пишет:
Павел вообще уникальность в БЭСТ-5 контролируется гуидами.
Поэтому нумераторы по сути очень-то не нужны.
Не знаю что там в кадрах но делать нумератор числовым это не стиль
БЭСТа. Если речь идет об уникальности то для индексов лучше иметь
поле именно символьным. Вы потом у себя делайте как хотите а пример
мы таки через символьное будем делать.
Аналогично посмотрел в других модулях, действительно там C:22. Наверное это связано с тем, что кадры писались еще задолго до дизайнера. Догда давайте С:22. Заодно посмотрим что-это заверь такой гуид
1.В рабочей базе (в корне самой базы) создаем файл userbdll.txt
2.В соответствии с описанием ко второму пакету и для УРОКа 4 заносим в файл строчку
Код
Торговля\Доверенности;Пример работы с доверенностями;RunFormTest;doverenost;0
3.Заходим в БЭСТ-5 и видим пункт меню
!!!
Если раздел торговля при входе в БЭСТ-5 у Вас будет свернут и курсор
по умолчанию будет стоять на этом разделе при первом входе в базу,
то справа наименование пункта меню пользователя по этому разделу
не отразится сразу. Пошевелите курсор или разверните раздел и Вы
увидите созданный Вами пункт меню
Денис пишет:
Посмотрел идентификаторы в Имуществе и в Автотранспорте. Там ID C22.
Как с помощью FoxBro изменить структуру таблицы?
Думаю что следует поправиться.
Лучше сначала открывать dbc контейнер базы БЭСТа а в нем создавать таблицу. И тогда открывая контейнер можно открывать и редактировать таблицу.
На примере темы расположенной здесь
рассмотрим создание таблицы.
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 пишет:
Еще раз прошу не бежать вперели паровоза. Вы не знаете
задумок и не надо навязывать свое.
Что касается создания статических таблиц - создавайте их чем хотите. Хотите пишите программы для их создания я лично предпочитаю пользоваться инструментом и объясняю другим как это делается. Как ее включить в контейнер БЭСТа, где ее хранить и т.д. и т.п.
Это действие разовое.
ДЕМАГОГИЮ продолжать не буду
Хорошо, давайте, ворос по существу.
Что значит включить таблицу в контейнер БЕСТа?
БЭСТ построен на ядре Visual FoxPro и особенностями этого является наличие контейнера в который собраны
все таблицы. Пройдите урок от начала до конца и Вы увидите что и куда мы добавляем.
nordk пишет:
БЭСТ построен на ядре Visual FoxPro и особенностями этого является наличие контейнера в который собраны
все таблицы. Пройдите урок от начала до конца и Вы увидите что и куда мы добавляем.
Это файл BEST5.DBC - контенер? По-моему это файл базы данных. Хотя, какая разница.
Ну, что же с интересом буду ждать описания создания индексов. Мне очень интересно. В этой утилите есть много-много интересного, о чем очень хотелось бы знать.