:: Visual Foxpro, Foxpro for DOS
Вопросы по FoxPRO DOS
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Всем привет Месяц назад просил помощи с практикой для завода, теперь пошел на этот же завод трудоустраиваться для доп.заработка Что бы не переписывать задание еще раз - вот ссылка на тему forum.foxclub.ru
В общем хочу опять обратится к вам за помощью) На это раз мне надо сделать тестовое задание что бы меня взяли на работу. В этот раз мне дали небольшой пример как выводить список из БД на экран. Я не совсем смог разобраться в коде, но кое как с горем пополам смог все таки сделать что то похожее на вывод данных из БД на экран.
Но есть несколько проблем, которые я не понимаю как решить. Вот сам проект: [attachment 28939 Desktop.zip]
Проблема №1: При листании БД в строчках возникают непонятные символы и цифры, не понимаю откуда они беруться (Прошу помощи с этим, тыкните в место где ошибка и скажите как это исправить)
Проблема №2: По нажатию клавиши Enter нужно что бы открылся редактор в котором я бы мог отредактировать абсолютно все поля БД связанные с этим человеком. Покажите как такое сделать пожалуйста
Проблема №3: При выводе данных на экран, нужно что бы данные выводились под нужными колонками. Покажите как правильно формировать массив что бы все выводилось в нужных колонках)
В этот раз времени у меня чуть побольше (До след. понедельника), поэтому прошу что бы вы показали рассказали как правильно это делать.
Ну и в самом коде я оставлял комментарии, и в некоторых комментариях я не смог разобраться что оно делает и почему, так что если еще и там сможете пояснить что к чему, буду очень рад
P.S. Brow использовать запрещено)



Исправлено 2 раз(а). Последнее : TheGodMode, 08.02.18 11:26
Ratings: 2 negative/1 positive
Re: Вопросы по FoxPRO DOS V1.10
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
честнее или точнее TheGodModeOff


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
TheGodModeOn
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Вы опять с нами? Мы же вас забыли как страшный сон
TheGodMode
Проблема №2: По нажатию клавиши Enter нужно что бы открылся редактор в котором я бы мог отредактировать абсолютно все поля БД связанные с этим человеком.
Такого редактора нет. В Brow можно редактировать данные, но вам он запрещен, поэтому придется писать самому интерфейс и использовать команду replace (правда не знаю была ли она в FPD1).

Цитата:
Обновляет записи в таблице новыми значениями.

REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
[, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope]
[FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
[NOOPTIMIZE]



------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Божья_коровка
Вы опять с нами? Мы же вас забыли как страшный сон
Да, опять с вами Я не могу найти вообще никакой документации по FPD 1.1 и вот приходится мудрить)

Пока что понимаю что нужно как то определить id выбранной записи из БД и по этому id вывести данные в формочку в которой их можно будет изменить и нажать кнопку сохранить.
1) Как именно выбрать данные я не знаю и не могу найти нигде
2) Как сделать формочку в которой можно будет редактировать эти данные тоже не знаю
3) Ну клавиша "Сохранить" должна уже выполнять команду REPLACE.

Так что до 3-го пункта мне пока что очень далеко

Расскажите, покажите пожалуйста, что бы я научился со всем этим справляться сам в будущем

P.S. На сегодня я наверное уже off, завтра буду готов учиться)



Исправлено 2 раз(а). Последнее : TheGodMode, 06.02.18 19:52
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
TheGodMode
Я не могу найти вообще никакой документации по FPD 1.1 и вот приходится мудрить)
Давай мыло хелп вышлю, тут не крепится объём 214 КБ. Разбивать на части не охота.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 06.02.18 20:16
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
TheGodMode
Пока что понимаю что нужно как то определить id выбранной записи из БД и по этому id вывести данные в формочку в которой их можно будет изменить и нажать кнопку сохранить.
1) Как именно выбрать данные я не знаю и не могу найти нигде
2) Как сделать формочку в которой можно будет редактировать эти данные тоже не знаю
3) Ну клавиша "Сохранить" должна уже выполнять команду REPLACE.

Так что до 3-го пункта мне пока что очень далеко



Вот пример, обновления данных из твоего FPD 1. Учись. Заюзай свою таблицу и свои поля. Только имей ввиду что APPEND BLANK добавляет новую строку и туда записываются данные. В случае если тебе не нужна вставка новых данных, а просто редактирование уже существующей записи, то APPEND BLANK не используй.
Т.е. это пример на ввод новой записи в таблицу. Тебе нужно редактирование. Переработай немного пример.
+---------------------------------+
¦ Example ¦
+---------------------------------+
USE Customer
COPY TO Backup
USE Backup
SET TALK OFF
STORE SPACE(40) TO mcustomer, maddress
STORE SPACE(24) to mcity
STORE SPACE(2) to mstate
STORE SPACE(10) to mzip
DEFINE WINDOW menter FROM 7,10 to 17,70 PANEL
ACTIVATE WINDOW menter
@ 1,3 SAY 'Customer: ' GET mcustomer
@ 3,3 SAY 'Address: ' GET maddress
@ 5,3 SAY 'City: ' GET mcity
@ 7,3 SAY 'State: ' GET mstate
@ 7,18 SAY 'Zip: ' GET mzip
READ
DEACTIVATE WINDOW menter
IF UPDATED()
APPEND BLANK
REPLACE company WITH mcustomer
REPLACE address1 WITH maddress
REPLACE city WITH mcity
REPLACE Backup->state WITH mstate
REPLACE Backup.zip WITH mzip
ENDIF

ЗЫ: Никаких формочек в том виде что есть в версиях старше у этой - НЕТ. Ручками, всё только ручками если brow нельзя.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 5 раз(а). Последнее : Божья_коровка, 06.02.18 21:19
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Божья_коровка
команду replace (правда не знаю была ли она в FPD1).
Она была еще в DBase II. Лично использовал.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
ssa
Божья_коровка
команду replace (правда не знаю была ли она в FPD1).
Она была еще в DBase II. Лично использовал.
Да качнула уже Хелп от FPD 1, чтобы в потёмках не блуждать ;)


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Божья_коровка
TheGodMode
Я не могу найти вообще никакой документации по FPD 1.1 и вот приходится мудрить)
Давай мыло хелп вышлю, тут не крепится объём 214 КБ. Разбивать на части не охота.
Есть у него хелп, и даже на русском. Встроенный.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
ssa
Божья_коровка
TheGodMode
Я не могу найти вообще никакой документации по FPD 1.1 и вот приходится мудрить)
Давай мыло хелп вышлю, тут не крепится объём 214 КБ. Разбивать на части не охота.
Есть у него хелп, и даже на русском. Встроенный.
А чего ТС тогда говорит, что никакой документации нет?
Лукавит наш студент? Какая ему документация еще нужна?


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
1. Код
go bottom
RecBottom = recno()
goto top
RecTop = recno()
бессмысленный и не даст нужный результат. Быстро читать хелп по функции RecNo() и RecCount().
Использование упомянутых тут переменных в дальнейшем тоже бессмысленное.
Записи ВСЕГДА нумеруются начиная с 1. Потому первая запись всегда имеет номер 1. И заводить для этого номера отдельную переменную...
Количество записей показывает функция Recno(). АКТУАЛЬНОЕ, действительное на текущий момент. В отличие от однажды установленного RecBottom.
2. Код:
mArraySecond = alltrim(Famil) + ' ' + alltrim(Name) + ' ' + alltrim(Otchestvo) + ' ' + dtoc(Rozhdenie) + ' ' + alltrim(str(Ceh)) + ' | ' && mArraySecond = ФИО + Дата рождения + Цех
mArray(rs) = substr(mArraySecond, 1, LengthString) + str(recno(),5) && mArray(rs) = (mArraySecond, 1, 78) + ?
Зачем все переводить в строки? Да еще и переменной длины?
Кстати, ты, наверное, хотел таки нечто такое:
mArraySecond = Padr(Rtrim(Famil) + ' ' + Rtrim(Name) + ' ' + Rtrim(Otchestvo), 53) + ' ' + dtoc(Rozhdenie) + ' ' + ltrim(str(Ceh,3)) + ' | ' && mArraySecond = ФИО + Дата рождения + Цех
Зачем вообще тут массив?


------------------
Лень - это неосознанная мудрость.




Исправлено 5 раз(а). Последнее : ssa, 06.02.18 22:01
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Ещё в хелпе обнаружила команду -
Цитата:
+---------------------------------+
¦ EDIT ¦
+---------------------------------+
Change database records in an editing window

+---------------------------------+
¦ Format ¦
+---------------------------------+
EDIT
[FIELDS <field list>]
[<scope>]
[FOR <expL1>]
[WHILE <expL2>]
[FORMAT]
[FREEZE <field>]
[KEY <expr1> [, <expr2>]]
[LAST]
[NOAPPEND]
[NOCLEAR]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOMENU]
[NORMAL]
[NOWAIT]
[PREFERENCE <expC1>]
[SAVE]
[TIMEOUT <expN1>]
[TITLE <expC2>]
[WIDTH <expN2>]
[[WINDOW <window name1>]
[IN [WINDOW]
<window name2> | SCREEN]]
[COLOR <ColorPairList>
| COLOR SCHEME <expN3>]

Она очень похожа на команды Brow и Change. Я ею если честно никогда не пользовалась.Тут она описана как отдельная команда.
+---------------------------------+
¦ Example ¦
+---------------------------------+
USE CUSTOMER
EDIT FIELDS taxrate :P = "9.99"

Попробуй, проэксперементируй.
Вот так симпатично рисует эта EDIT в VPF8 редактирование твой таблички, что ты прикрепил в архиве На Change очень похожа. Странно, почему она отдельной командой выделена, никогда такую не использовала, по сути этот же Change.

[attachment 28942 Screenshot_17.jpg]


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 7 раз(а). Последнее : Божья_коровка, 06.02.18 21:41
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Божья_коровка
ssa
Божья_коровка
TheGodMode
Я не могу найти вообще никакой документации по FPD 1.1 и вот приходится мудрить)
Давай мыло хелп вышлю, тут не крепится объём 214 КБ. Разбивать на части не охота.
Есть у него хелп, и даже на русском. Встроенный.
А чего ТС тогда говорит, что никакой документации нет?
Лукавит наш студент? Какая ему документация еще нужна?
Да кто ж его знает, может и темни слегонца...
Еще у него есть FDP2.0
А в папочке с ним библиотеки от FPD 2.6
Зачем в таком случае упираться в FPD1.1? Только потому, что кто-то несет чушь о неработоспособности чего-то в более поздних версиях?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
TheGodMode
Проблема №1: При листании БД в строчках возникают непонятные символы и цифры, не понимаю откуда они беруться (Прошу помощи с этим, тыкните в место где ошибка и скажите как это исправить)
Set talk off
в началае программы вставь.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
CHANGE/EDIT - это тот же BROWSE, только "в профиль", то есть 100% запрещен.

Что касается массива, то он здесь удобен.
В той версии не было команд FILL и SCROLL, все приходилось делать с помощью SAY с разными цветами.
Так вот - пока бегаешь стрелками по текущему фрейму, то есть без необходимости отображать новые записи, требуется выводить уже раз сформированный текст другим цветом - имитировать движение курсора. Для этого и пригодятся уже сформированные в массиве готовые строки вывода.

RecTop и RecBottom тоже нужны.
Он не написал, но на деле у него работают и клавиши Home/End.
Первая запись не всегда будет иметь номер 1, а Reccount() - не всегда последняя, так как часть записей может быть удалена, может быть установлен фильтр, а также подключен индекс.

В целом этот пример более-менее работает на листание - лишь странное поведение при попытке нажать стрелку вверх, стоя на первой записи, и - стрелки вниз, стоя на последней.
Логичнее ничего не делать в таких случаях.

Ну, и конечно доделать выравнивание колонок.
Поскольку команд типа PADR() в этой версии еще не было, то лучше написать свою функцию, дополняющую/обрезающую переданную строку до требуемой длины.

Корректировку текущей записи можете делать аналогично - определяете новое окно и рисуете в нем с помощью команд SAY и GET, а затем выдаете команду READ, которая передаст управление пользователю.
Сначала освойте в командном окне работу нескольких GET с одним READ, посмотрите, что происходит со значениями переменных (или полей), используемых в GET после выхода из READ...
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Я бы посоветовал ТС для начала, найти и прочитать Попов "Что то про FPD 2.0"
Пусть это и не первый (никогда его не видел)
Но многое прояснится.
Просто вопросы... задавая такие, устраиваться на работу?
Там же наверное посложнее будет, испытательный срок не пройдете.


------------------
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Аспид, меня знаете что смущает во всей этой истории, почему для реальной задачи ТС запретили использовать BROW\CHANGE\EDIT. Можно ещё как то понять когда просто учебная задача, но когда реальная задача к примеру, это ведь удобнейшая вещь для досовских приложений. Любопытно, в чём идея начальства отдела разработки и сопровождения этого завода в таком запрете?
Я не могу вспомнить на своём опыте, чтобы что то запрещали разработчикам, вроде как ТС, вот это можно использовать это нельзя. Были конечно корпоративные стандарты разработки в крупных компаниях, но так чтобы запрещали использовать какие то родные команды среды разработки, такого не припомню. Немного странный поход начальства к реализации. ИМХО


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
akvvohinc
RecTop и RecBottom тоже нужны.
Он не написал, но на деле у него работают и клавиши Home/End.
Первая запись не всегда будет иметь номер 1, а Reccount() - не всегда последняя, так как часть записей может быть удалена, может быть установлен фильтр, а также подключен индекс.
В рабочей таблице у него нет индексов и помеченных на удаление записей. И не предвидятся.
Цитата:
Ну, и конечно доделать выравнивание колонок.
Поскольку команд типа PADR() в этой версии еще не было, то лучше написать свою функцию, дополняющую/обрезающую переданную строку до требуемой длины.
Ну здрасте, приехали. Привденный мной код именно в нужной версии проверен и работает, хотя и с Padr().

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Вопросы по FoxPRO DOS V1.10
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Божья_коровка
Аспид, меня знаете что смущает во всей этой истории, почему для реальной задачи ТС запретили использовать BROW\CHANGE\EDIT. Можно ещё как то понять когда просто учебная задача, но когда реальная задача к примеру, это ведь удобнейшая вещь для досовских приложений. Любопытно, в чём идея начальства отдела разработки и сопровождения этого завода в таком запрете?
Я не могу вспомнить на своём опыте, чтобы что то запрещали разработчикам, вроде как ТС, вот это можно использовать это нельзя. Были конечно корпоративные стандарты разработки в крупных компаниях, но так чтобы запрещали использовать какие то родные команды среды разработки, такого не припомню. Немного странный поход начальства к реализации. ИМХО
Ну как всегда вариантов больше одного)))
1. Проверка сообразительности (Броушь-банально)
2. А вдруг что новое придумает)))
3. У них где то броушь глючит, и все падает, именно из-за него. Приняли решение вообще его не использовать.
... еще кучу придумать можно))))
В общем не ясно что ТС изучает. И конечно... думаю пользы от такой работы, кроме денег, будет около 0. Т.е. опыт минимален(
Ну где еще сейчас найдешь применение сплошным @Say @Get
Вообще, помнится вывод на экран в досе, это была такая песня... грустная... )))


------------------
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 alexzima  (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика