powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несколько вопросов.
48 сообщений из 48, показаны все 2 страниц
Несколько вопросов.
    #32854629
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал изучать VFP, и у меня по хожу возникают небольшие вопросы, где-то искать их долго, так как точно не знаю где искать, поэтому решил задавать их здесь, знающему человеку легко будет подсказать, как сделать или где прочесть.
1) Я умею программировать на VB, Фокс очень похож на него, но почему-то я не смог через программу поменять Caption у label, выдаёт ошибку, а мне надо изменять.
2) Мне нужно изменять число цифр после запятой, как это сделать? А то типы в Фоксе не похожи на другие языки
3) Как из формы(кода) вызывать функции, которые я оформил, как программу? А то он пишет, что не может найти, когда вызываю
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854648
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. MyForm.MyLabel.Caption="Привет!"
2. см. SET DECIMALS
3. см. SET PROCEDURE
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854708
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одессит1) Я умею программировать на VB, Фокс очень похож на него, но почему-то я не смог через программу поменять Caption у label, выдаёт ошибку, а мне надо изменять.
В FoxPro есть несколько специальных ссылок на объекты:

ThisFormSet - ссылка на текущий FormSet
ThisForm - ссылка на текущую форму
This - ссылка на текущий объект
Parent - ссылка на объект-контейнер, внутри которого непосредственно расположен текущий объект.

Все эти ссылки работают только внутри соответствующих методов и событий. Т.е. невозможно обратится к форме по ссылке ThisForm из-вне самой формы.

Соответсвенно, изменить реквизит объекта можно так:

ThisForm.MyLable.Caption = "Новый текст"

Более подробно об адресации к формам почитай здесь

http://www.foxclub.ru/kb/index.php?sid=75423&aktion=artikel&rubrik=004&id=4&lang=ru

Одессит2) Мне нужно изменять число цифр после запятой, как это сделать? А то типы в Фоксе не похожи на другие языки
FoxPro сам меняет количество знаков после запятой (если речь идет о переменных памяти). А вот отображает в соответствии с настройками

SET DECIMALS
SET FIXED

Одессит3) Как из формы(кода) вызывать функции, которые я оформил, как программу? А то он пишет, что не может найти, когда вызываю
Почитай описание команд

PROCEDURE
FUNCTION

Там дана последовательность, в которой FoxPro производит поиск процедур и функций. Кроме того, обрати внимание на опцию IN в команде DO.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854772
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы, но кое-что хочу уточнить
1) Чуть повозившись я и сам понял, как присваивать, вернее понял, что присваивать можно только строку, а у меня тип Дата, я даже использовал функцию str(), но она не помогла, вернее она стала причиной ошибки. Так что у меня вопрос, как label присваивать значения типа Дата. Для ТексБокса это делается через Value, а с меткой как?
2) Ага разобрался. Значит надо перед каждым изменением количества ставить эту надпись. Мне нужно было, чтоб в ТексБоксы выводились числа в каждом с разным количеством цифр после запятой.
3) В этом языке есть много чего для меня нового.
Значит мне надо написать
SET PROCEDURE TO [адрес папки, в которой я сохраняю программные модули]
Так? Это писать в самом начале главной программы?
Или мне через эту команду вызывать процедуры?
Просто не могу понять, что в хэлпе написанно, а примеров нет
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854820
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдесситСпасибо за ответы, но кое-что хочу уточнить
1) Чуть повозившись я и сам понял, как присваивать, вернее понял, что присваивать можно только строку, а у меня тип Дата, я даже использовал функцию str(), но она не помогла, вернее она стала причиной ошибки. Так что у меня вопрос, как label присваивать значения типа Дата. Для ТексБокса это делается через Value, а с меткой как?
Содержимое любого Caption - это символьная строка. Значит любое значение надо перевести в символьный вид. Универсальная функция конвертации чего угодно к символьному типу (начиная с версии VFP6)

TRANSFORM()

Кроме того, для каждого типа данных есть своя, специфическая, функция конвертации. Для типа Date это

DTOC()
DTOS()

Одессит2) Ага разобрался. Значит надо перед каждым изменением количества ставить эту надпись. Мне нужно было, чтоб в ТексБоксы выводились числа в каждом с разным количеством цифр после запятой.
Нет. Не нужно. Почитай описание свойств

TextBox.Format - способ отображения ранее введенных значений
TextBox.InputMask - способ отображения в процессе ввода (изменения) значений

Например:
TextBox.InputMask = "999,999,999.9999"

Здесь символы маски - это не есть реальные цифры, точки и запятая. Это спец.символы. Каждый из которых имеет вполне определенное назначение. Подробности в описании.

Одессит3) В этом языке есть много чего для меня нового.
Значит мне надо написать
SET PROCEDURE TO [адрес папки, в которой я сохраняю программные модули] Так?
Это один из вариантов. Другие варианты почитай в описании к ранее приведенным командам по этому же вопросу.

Одессит Это писать в самом начале главной программы?
Или мне через эту команду вызывать процедуры?
Назначение настройки SET PROCEDURE - это указать FoxPro, где еще следует поискать нужную процедуру или функцию, помимо SET PATH и других способов указания.

Только ни в коем случае не используй абсолютных путей доступа (начиная с диска C:\MyDir\...) Всегда используй относительные пути. Относительно текущей (по умолчанию) директории.

По поводу путей и расположения файлов почитай здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=artikel&rubrik=004&id=5&lang=ru

ОдесситПросто не могу понять, что в хэлпе написанно, а примеров нет
Ну, так сам экспериментируй! 5 минут экспериментов и все ясно. И не надо по пол-дня ждать ответов в конфе.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854835
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Только ни в коем случае не используй абсолютных путей доступа (начиная с диска C:\MyDir\...) Всегда используй относительные пути. Относительно текущей (по умолчанию) директории.

А где задаётся директория по умолчанию? И как её узнать?

В остальном понятно. Пишу на конфу, так как на поиски уже тратил больше 5 минут времени, пока отвечаете я изучаю что-то другое.

Ещё раз спасибо.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854836
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help Set Default

Проверить текущую установку можно так:

? sys(5) + sys(2003)
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854846
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одессит
А где задаётся директория по умолчанию? И как её узнать?

У тебя ссылки на http://www.foxclub.ru не работают? Или просто лень сходить почитать?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854849
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Одессит2) Ага разобрался. Значит надо перед каждым изменением количества ставить эту надпись. Мне нужно было, чтоб в ТексБоксы выводились числа в каждом с разным количеством цифр после запятой.
Нет. Не нужно. Почитай описание свойств

TextBox.Format - способ отображения ранее введенных значений
TextBox.InputMask - способ отображения в процессе ввода (изменения) значений

Например:
TextBox.InputMask = "999,999,999.9999"

Здесь символы маски - это не есть реальные цифры, точки и запятая. Это спец.символы. Каждый из которых имеет вполне определенное назначение. Подробности в описании.

Почитал Хэлп по этим свойствам, поэкспериментировал, но так и не понял, что я должен и куда писать, чтоб изменять только количество цифр после запятой. Никто не подскажет? На 9 у меня пишет какие-то *, и они не меняются.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32854850
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Одессит
А где задаётся директория по умолчанию? И как её узнать?

У тебя ссылки на http://www.foxclub.ru не работают? Или просто лень сходить почитать?
Уже скачал статьи, просто руки пока не доходят почитать, а там не так уж и просто найти по нужной проблеме, надо всё перечитывать.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32855012
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПочитал Хэлп по этим свойствам, поэкспериментировал, но так и не понял, что я должен и куда писать, чтоб изменять только количество цифр после запятой
Вот значение InputMask и надо менять.
Строка ThisForm.TextBox.InputMask = "999,999,999.9999" означает что вы выдодишь числовое значение длиной 16 позиций из которых 9 цифр под целую часть и 4 под дробную, одна позиция под десятичный разделитель и две под разделители разрядов. Если выводимое число имеет большую целую часть то будут звездочки
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32855466
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, что-то никак не могу разобраться со 2-м вопросом, уже прочёл ссылку, сделал несколько способов, а ошибка всё та же.
Вот что я указывал в файле CONFIG.FPW
Код: plaintext
1.
DEFAULT="C:\Documents and Settings\Алексей\My Documents\Visual FoxPro Projects\birsday"
PATH=birsday
У меня функция находится в папке birsday, где и сам файл проекта.
Проверяю при заходе текущую директорию - ? sys(5) + sys(2003), получаю C:\Documents and Settings\Алексей\My Documents\Visual FoxPro Projects
Т.е то, что и без этого файла конфигурации, default не сработал
Но, ведь я и path указал. Т.е. кажется, что сам файл не запускается. Пробовал в разных местах его располагать, не помогает, ну и написано, что там где проект, а проект у меня в той папке.
В чём у меня проблема?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32855675
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Default в файле конфигурации писать не надо. И вообще, явное задание текущей (по умолчанию) директории лучше избегать.

Какой именно файл конфигурации был захвачен при загрузке среды FoxPro можно узнать через функцию

?SYS(2019)

Также, текущую директорию можно определить следующим образом:

?FullPath("")

Пустые кавычки, в данном случае, обязательны

Проверить, будет ли тот или иной файл "виден" в среде FoxPro можно так:

?File('MyFile.prg')

Проверить текущую SET-настройку можно так:

?SET("Path")
?SET("Procedure")
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32855695
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМDefault в файле конфигурации писать не надо. И вообще, явное задание текущей (по умолчанию) директории лучше избегать.
Какой именно файл конфигурации был захвачен при загрузке среды FoxPro можно узнать через функцию
?SYS(2019)

Если ничего не выдаёт, значит ничего не захватил? А где устанавливать надо, какой файл должен быть захвачен?
Решил проблему, через Set Default в коде программы, но мне нужен файл конфигурации, так как туда надо написать CODEPAGE=1251, кстати, а для exe-шника ему тоже будет нужен файл конфигурации с этой строкой?
И как задать в коде программы то, что в файле конфигурации я пишу как screen=off?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856070
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз. Почитай здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=artikel&rubrik=004&id=5&lang=ru

Там подробно расписано как надо запускать FoxPro и куда девать config.fpw
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856324
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЕще раз. Почитай здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=artikel&rubrik=004&id=5&lang=ru

Там подробно расписано как надо запускать FoxPro и куда девать config.fpw
Читал
При запуске среды FoxPro в качестве директории по умолчанию устанавливается директория, где расположен сам файл проекта, а все прочие файлы проекта располагаются в поддиректориях.

Единственное, что я не делал, так это ярлыки. А что это единственный способ? А где же многовариантность? Тем более написанно:
Однако есть способ лучше
Т.е. значит есть другие, хуже.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856327
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть ещё вопрос:
4) Как узнать, какие файлы мне нужны для моей программы, чтоя я мог запустить её на другом компьютере.
В VB для этого есть программа "Package and Deployment Wizard". Что-то естьтакое в FoxPro, или надо самому искать все файлы?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856343
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдесситУ меня есть ещё вопрос:
4) Как узнать, какие файлы мне нужны для моей программы, чтоя я мог запустить её на другом компьютере.
В VB для этого есть программа "Package and Deployment Wizard". Что-то естьтакое в FoxPro, или надо самому искать все файлы?
До версии VFP6 включительно - это пункт меню Tools->Wizrads->Setup
Начиная с версии VFP7 - это внешняя программа InstallShield

Большая просьба. Читай то, что действительно написано, а не то, что ты хотел бы прочитать. Сначала попытайся сделать так как написано и только потом экспериментируй с новыми способами.

Не надо пытаться подходить к новому языку программирования со стериотипами, выработанными в другом языке. Это не относится только к FoxPro. Это вообще общий принцип изучения новых языков программирования.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856360
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одессит При запуске среды FoxPro в качестве директории по умолчанию устанавливается директория, где расположен сам файл проекта, а все прочие файлы проекта располагаются в поддиректориях.

Единственное, что я не делал, так это ярлыки. А что это единственный способ? А где же многовариантность?
Встречный вопрос:

Что Вы подразумеваете под термином "многовариантность" применительно к модификации одного проекта

ОдесситТем более написанно:
Однако есть способ лучше
Т.е. значит есть другие, хуже.
Я привел наиболее простые способы запуска проекта для его правки и подключения файла конфигурации. FoxPro - это язык, который требует повышенной самодициплины от программиста. Если программист что-то не сделал, то FoxPro сам, в меру своего понимания, попробует выполнить действия не сделанные программистом. А вот насколько эти автоматические действия будут правомерны - это уже другой вопрос.

Насчет других способов. Откройте Help по FoxPro перейдите на закладку "Поиск" и выполните поиск по ключевому слову "config".
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856454
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМFoxPro - это язык, который требует повышенной самодициплины от программиста. Если программист что-то не сделал, то FoxPro сам, в меру своего понимания, попробует выполнить действия не сделанные программистом. А вот насколько эти автоматические действия будут правомерны - это уже другой вопрос.

Так в том то и дело, что меня удивляет некоторые вещи, которые при написании языка сделать легко, но они не реализованы. Почему ФоксПро автоматически не устанавливает для каждого проекта свой начальный путь по месту нахождения проекта, в котором он и будет искать различные файлы. Да и вообще можно было все внешние настройки встроить в свойства проекта.
Я не вижу, почему те способы, что сделаны, лучше. Зачем тратить время на настройку, когда это может делать компьютер, а ты только следишь, чтоб всё было верно. Но, это скорее претензии к создателям VFP
Большая просьба. Читай то, что действительно написано, а не то, что ты хотел бы прочитать. Сначала попытайся сделать так как написано и только потом экспериментируй с новыми способами.

Не надо пытаться подходить к новому языку программирования со стериотипами, выработанными в другом языке. Это не относится только к FoxPro. Это вообще общий принцип изучения новых языков программирования.
Стереотипы - это опыт. Находя подобии я быстрее его изучаю, а так пришлось бы с нуля начинать. Да, возникают проблемы, когда подобий нет, но это один из недостатков метода. В любом случае мой метод позволяет сразу писать программы на незнакомом языке, а потом уже его отлаживать.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856521
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдесситТак в том то и дело, что меня удивляет некоторые вещи, которые при написании языка сделать легко, но они не реализованы...

Стереотипы - это опыт. Находя подобии я быстрее его изучаю, а так пришлось бы с нуля начинать. Да, возникают проблемы, когда подобий нет, но это один из недостатков метода. В любом случае мой метод позволяет сразу писать программы на незнакомом языке, а потом уже его отлаживать.
Чуствуешь противоречие? Твой опыт говорит одно, а конкретная реализация в данном языке программирования принципиально другая. Причем заметь, я говорю не о том, что что-то можно сделать, а что-то нельзя. Я говорю о том, как сделать то или другое.

Стереотипы (опыт) - это очень коварная штука. Просто нельзя на основании опыта программирования в одном языке делать какие-то предположения в другом. Не получается. Языки программирования отличаются прежде всего способом решения тех или иных задач. Т.е. именно стереотипами программирования!

Например, в FoxPro есть такая замечательная штука. Называется макроподстановка. Это когда ты в переменную записываешь команду или фрагмент команды, а потом этот записанный фрагмент исполняется как собственно команда.

Когда я пытаюсь применить стереотип программирования основанный на макроподстановках в другом языке программирования я сталкиваюсь с большими проблемами. И совершенно справедливо. Нечего лезть со своим уставом (стереотипом) в чужой монастырь (язык программирования)!

Между прочим, когда в объявлениях о приеме на работу пишут, что нужен стаж работы на конкретном языке не менее 3 лет, то я их вполне понимаю. Это именно тот срок, конда ты наконец вырабатываешь стереотипы программирования на конкретном языке. Это действительно требует времени. Причем значительно большего чем просто освоить какие-то команды и функции языка. Кодить-то можно научиться за пару недель (а то и быстрее).
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856809
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал программу. Теперь мне надо было её запустить в другое ОС, где нет Фокса. В папку Виндоус я скопировал такие файлы: msvcr71.dll, vfp9r.dll, vfp9rrus.dll, gdiplus.dll. Попробывал запустить программу выдаётся ошибка, что файл vfp9r.dll неправельный или повреждён. Что мне делать?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856817
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Одессит!

1) При запуске фокса с ярлыка, берётся конфиг из той папки что указана как
"стартовая", или из папки с vfpN.exe - если он там есть конечно. При запуске
"открытием pjx/pjt файла из проводника/FAR/TotalCommander/etc" берётся тот
конфиг что находится в папке с этим самым файлом. Наконец всегда можно
воспользоваться ключом -C FileName для явного указания какой конфиг
использовать.
2) При запуске готового exe используется тот конфиг который в этот exe
"вкомпилирован", или тот что лежит рядом с exe. AFAIK ключик -C тоже
работает (елси нету вкомпилированного конфига, или есть там включено
ALLOWEXTERNAL - это для VFP8 и старше).
3) PATH и DEFAULT лучше не писать в конфиге. В принципе там совсем
немного установок, которые НЕ ИМЕЮТ АНАЛОГОВ в программном коде.
CODEPAGE=1251, SCREEN=OFF одни из таких. В принципе все остальные
"недублируемые" настройки практически используются крайне редко.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856834
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, теперь понял в чём была моя ошибка, я открывал проект из самого Фокса, поэтому он и не находил файл конфигурации.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32856843
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так кто-то мне поможет с настройкой прогы, чтоб она работала на другом компе?
Эту прогу я написал на день рождения своей девушки(у неё фокса нет), который, кстати, сегодня. Хоть прога личная, но я могу дать исходники, чтоб кто-то скомпелировал у себя и прислал мне архив с библиотеками.
Ну, или объясните, почему прога может ругаться на то, что библиотека повреждена. У меня ФоксПро 9.
Буду благодарен за помощь.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32857007
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В папку Виндоус я скопировал такие файлы
А надо в WINDOUS\SYSTEM для Win9X, WINNT\SYSTEM32 или WINDOWS\SYSTEM32 для Win2K и XP. Кроме того их можно просто оставить в том каталоге, в котором лежит и сам фоксовский exe-шник
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32857060
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Одессит!

Теперь мне надо было её запустить в другое ОС, где нет Фокса
Видимо та ОС это древняя Win98 - тогда поставь там dcom98.exe который
обновит систему до более-менее приемлемого состояния :)
А вообще надо пользоваться InstallShield или иным инструментом создания
дистрибутивов, а не "копированием файлов" :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32857193
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Burn>В папку Виндоус я скопировал такие файлы
А надо в WINDOUS\SYSTEM для Win9X, WINNT\SYSTEM32 или WINDOWS\SYSTEM32 для Win2K и XP. Кроме того их можно просто оставить в том каталоге, в котором лежит и сам фоксовский exe-шник
Если бы я копировал не туда куда надо, то выдавалась бы ошибка, что не может найти библиотеки, а выдавалась другая. А копировал я действительно в Систем.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32857197
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi Одессит!

Теперь мне надо было её запустить в другое ОС, где нет Фокса
Видимо та ОС это древняя Win98 - тогда поставь там dcom98.exe который
обновит систему до более-менее приемлемого состояния :)
А вообще надо пользоваться InstallShield или иным инструментом создания
дистрибутивов, а не "копированием файлов" :)

А что это за dcom98.exe? Где его взять? А то завтра мне ещё по практики показывать программу нужно, а у них кажись тоже 98.
А с InstallShield я ещё не разбирался
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32857488
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная ошибка, даже не знаю, как это можно исправить, может кто-то подскажет.
У меня на форме два ЛистБокса, в них информация должна поступать из таблиц. Делаю я это примерно так
Код: plaintext
1.
2.
3.
thisform.lstcl.RowSourceType =  3 
cSQL = 'select * from client'
thisform.lstcl.RowSource = cSQL
Пробывал и через свойства ЛистБокса, эффект тот же. Он пишет, что не может получить доступ к какой-то таблице, к той, что была загружена раньше и ЛистБокс исчезает с формы. Когда одна таблица, то такой ошибки не возникает.
Может я как-то таблицы не правильно сделал? Кто что посоветует?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32858018
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавление к предыдущему сообщению
Весь код выглядет так:
Код: plaintext
1.
2.
3.
4.
5.
thisform.lstst.RowSourceType =  3 
stSQL = 'select * from stations'
thisform.lstcl.RowSourceType =  3 
cSQL = 'select * from client'
&&thisform.lstcl.RowSource =csql
thisform.lstst.RowSource =stsql
Если убрать коментарий, то выдаётся ошибка о доступе и пишется код SQL.
Если поменять последнии две строчки местами, то ошибка соответственно будет в другом запросе и таблице
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32865884
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С предыдущем вопросом я сам разобрался, там надо было использовать курсор, а не таблицу.
Но у меня появлась новая проблема, причём ошибки, которые возникают очень смешные.
Мне надо:
1) Открывать таблицу через проводник
2) Использовать её в программе, как обычную таблицу
Но, как это правельно сделать?
Я использую элемент commonDialog. Получаю в переменную строку с адресом.
Код: plaintext
1.
2.
3.
public bd 
thisform.CdFile.filter ="Áàçà äàííûõ Æ/Ä (*.dbf)|*.dbf|"
thisform.CdFile.ShowOpen 
bd = thisform.CdFile.FileName
А что делать дальше? Пробую использовать переменную, как название таблицы, выдаётся ошибка, что bd должна быть создана с помощью SELECT ... INTO TABLE. Пробую сделать по другому
Код: plaintext
1.
2.
3.
4.
5.
public bdF
thisform.CdFile.filter ="Áàçà äàííûõ Æ/Ä (*.dbf)|*.dbf|"
bdF = ""
thisform.CdFile.ShowOpen 
bdF = thisform.CdFile.FileName
SELECT * FROM bdF INTO CURSOR bd
Ошибка таже. Если создам как таблицу, а не курсор, то она сохраняется на диске с именем bd.dbf, но всё равно та же ошибка, да мне и сохранение не подходит. Работать программа начинает, когда имя переменной совпадает с именем файла, но это не выход, и даже в этом случае есть ошибка. Каталог по умолчанию почему-то меняется в папку, где я выбрал файл. Причём меняется в проекте и в следующий запуск я даже форму не могу открыть. Я проверял sys(2003), каталог изменяется. Что это такое и как от этого избавится?

У кого-то есть примеры программ, где используется commonDialog для открытия и подключения таблиц с дальнейшим использованием в запросе? Если можете скиньте на мыло - odessit-ua@ukr.net
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866114
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Одессит!

> SELECT * FROM bdF INTO CURSOR bd

Зачем выбирать все записи я не понимаю - сделай ей USE под определённым
алиасом и работай.

А так - у тебя нету ни макро, ни именованного выражения - это раз, и нету
NOFILTER - что нужно для такого запроса чтобы сделать "правильный" курсор а
не "фильтрованную таблицу"

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866174
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi Одессит!

> SELECT * FROM bdF INTO CURSOR bd

Зачем выбирать все записи я не понимаю - сделай ей USE под определённым
алиасом и работай.

А как это правлиьно сделать? Можно пример кода? А то я делаю, а он ошибку выдаёт, что-то про доступ, точно не помню
А так - у тебя нету ни макро, ни именованного выражения - это раз, и нету NOFILTER - что нужно для такого запроса чтобы сделать "правильный" курсор а не "фильтрованную таблицу"

Честно говоря вообще ничего не понял. Вам не сложно хоть какой-то примерный код вставлять? Просто мне так легче понять.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866247
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу Алиаса. Я написал так
Код: plaintext
1.
2.
3.
4.
5.
public bdF
thisform.CdFile.filter ="Áàçà äàííûõ Æ/Ä (*.dbf)|*.dbf|"
bdF = ""
thisform.CdFile.ShowOpen 
bdF = thisform.CdFile.FileName
USE bdf IN  0  ALIAS bd
В результате ошибка, что bdF.dbf не существует. Т.е. адрес не подходит, а как это сделать? Мне нужно, чтоб bd я дальше использовал как таблицу.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866403
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
USE (bdf) IN  0  ALIAS bd
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866544
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quot Urri]
Код: plaintext
USE (bdf) IN  0  ALIAS bd
[/quot]
Ой, спасибо, работает.
А как закрывать таблицы при завершении работы? А то при следующем запросе выдаётся ошибка, что файл используется.
И ещё одна ошибка, я уже про неё писал, это то, что при использовании commonDialog меняется каталог по умолчанию. Мне что перед его использованием нужно сохранять путь к каталогу, а потом снова устанавливать?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866560
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А как закрывать таблицы при завершении работы?
Если открыл:
USE (bdf) IN 0 ALIAS bd

То закрыть:
USE IN bd
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32866865
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Burn!

Лучше USE IN SELECT("bd") - на случай непреднамеренного досрочного её
закрытия :)
А возникающие проблемы с ошибкой совместного доступа наводят на грустные
мысли про SET EXCLUSIVE ON :(

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32868900
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла одна проблема, не могу из таблицы удалить запись, делаю это так:
Код: plaintext
1.
2.
3.
4.
5.
cCurCl=ALLTRIM(TRANSFORM(oMainForm.lstcl.DisplayValue))
if (len(cCurCl) >  0 )
	DELETE from client WHERE ALLTRIM(TRANSFORM(KODKL))= cCurCl
	?cCurCl
endif
Но ничего не удаляется. Как будто условие не выполняется, но оно не может не выполнятся. У меня такое условие в другом запросе SELECT, там он отлично выполняется, а тут не хочет. И строчка ниже выполняется, выдаётся имено то, что в таблице. В чём может быть проблема? Уже и с помощью Val преобразовывал к числовому виду, результат тот же. Может я что-то не так делаю?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32868904
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое "удаление" в FoxPro смотри во вложенном файле
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32868959
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, понял, у меня доступ открыт только для чтения этой таблицы. Добавляь могу, а вот удалять нет. А как изменить доступ?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32868963
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не видел предыдущее сообщение. Спасибо за подсказку
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32869192
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, всёравно не разобрался. Моя проблема там не описана.
У меня к проекту подключено две таблицы client и station. Я в коде к ним для открытия вообще не обращаюсь, хотя в lstst.RowSource я указываю такой запрос: select * from stations into cursor tmpSt
Далее я пытаюсь добавлять или удалять. Когда создаю проект, т.е. работаю в Визуал ФоксПро, то при операции PACK выдаётся ошибка, что файл используется, поэтому я включил Deleted On и написал PACK в form.Unload, это помогло. Изменение SET EXCLUSIVE ничего не давало
Но при запуске готового еxe выдаётся другая ошибка. Что невозможно обновить курсор, так как он доступен только для чтения. А как поменять доступ к моей таблице? И где это сделать?
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32869236
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не включил ли ты случайно таблицы внутрь exe-шника? Исключи немедленно (опция exclude в проекте).
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32869245
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и кстати, операциями типа PACK так разбрасываться негоже. Обычно в формах делают только DELETE, а физическую чистку - которая, кстати, приводит к пересозданию файла - можно вынести в административную часть программы, которую запускают, когда никто из пользователей не работает. Ночью, например.
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32869417
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдесситНо при запуске готового еxe выдаётся другая ошибка. Что невозможно обновить курсор, так как он доступен только для чтения. А как поменять доступ к моей таблице? И где это сделать?
http://www.sql.ru/faq/faq_topic.aspx?fid=251
...
Рейтинг: 0 / 0
Несколько вопросов.
    #32870447
Одессит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriДа, и кстати, операциями типа PACK так разбрасываться негоже. Обычно в формах делают только DELETE, а физическую чистку - которая, кстати, приводит к пересозданию файла - можно вынести в административную часть программы, которую запускают, когда никто из пользователей не работает. Ночью, например.
В моей таблице не будет больше 10 записей и работает только в одном месте
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несколько вопросов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]