powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите новичку
10 сообщений из 10, страница 1 из 1
помогите новичку
    #32488944
johnnybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Нужна помощь в решении задачки на foxpro.
Суть в чем. У некоторых наших сотрудников сейчас началась сесия, типа програмирование у них зачет.
Конечно с задачками они прошли в наш отдел. Сам я в факспро не селен, больше работаю с аксесом и скл сервером. Так что прошу вашего хелпа.

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

Если конкретней, то есть две таблицы ostat.dbf и rasxd.dbf, в первой сохранен типа склад предприятия (коды запасных частей п тп.) в другой расход(код, дата колличество) этих деталей. так вот задача заключается в том что нужно выбрать с первой те детали которые не были в обороте за конкретный период времени.
В скл это так

create procedure select_ostat @startdata as datetime,
@enddata as datetime
as
select ware_code from ostat ----(в случае таблицы)
where ware_code not in (select ware_code from rasxd where prod_date>=@startdate and prod_date<=@enddate )
go

)

помогите написать это на фокспро для дос.
...
Рейтинг: 0 / 0
помогите новичку
    #32488971
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В FoxPro это так же

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure select_ostat 
PARAMETERS startdata, enddata 

select ware_code from ostat ;
where ware_code not in (select ware_code from rasxd ;
where prod_date>=m.startdate and prod_date<=m.enddate ) ;
INTO CURSOR result

select result
BROWSE NOWAIT


Префикс "m." можно и не писать. Это просто указание FoxPro, что данное имя это именно имя переменной, а не что-нибудь другое.

Правда такой запрос будет выполняться достаточно медленно, но это уже другой вопрос.

Ну, и вместо больше/меньше можно использовать BETWEEN
...
Рейтинг: 0 / 0
помогите новичку
    #32488990
На Украине хотя-бы досовскому фоксу студентов учат...
...
Рейтинг: 0 / 0
помогите новичку
    #32489024
johnnybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сморти там у них есть такой пример( я немного спростил).

procedure ind32
set date german
clear
use ostat.dbf
calculate sum (cena*ostk) to sum
@115,2 say str(summ,9,2)
return

Говорят что это на фокс про.
Так вот нужно приблизительно тоже самое но что бы оно получало с потока ввода даные про дату (короче что бы программа спрашивала значения даты)
...
Рейтинг: 0 / 0
помогите новичку
    #32489031
johnnybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Учат то учат, но я не пойму для чего это бухгалтеру.
...
Рейтинг: 0 / 0
помогите новичку
    #32489106
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже не очень помню команды FPD, поэтому могу что-то напутать. Примерно это будет выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
* Настройка формата даты
SET CENTURY ON
SET DATE GERMAN

* Задаю значения по умолчанию
PRIVATE FromDate, ToDate
FromDate = GoMonth(Date(), -1 )
ToDate = Date()

* Создаю объекты для ввода значений
CLEAR
 @1  ,1  SAY  "Начальная дата"  GET m.FromDate
 @2  ,1  SAY  "Конечная дата"  GET m.ToDate

* Останов для ожидания ввода
READ

Далее все как и раньше с использованием измененных пользователями значений переменных FromDate и ToDate. Можно еще организовать проверки введенных значений, но это пусть они сами копаются.

Да, в функции CALCULATE есть опция FOR, где и можно задать нужные ограничения

CALCULATE SUM(cena*ostk) TO summ FOR BETWEEN(prod_date,m.FromDate,m.ToDate)

Правда, в команде CALCULATE нельзя писать подзапросы
...
Рейтинг: 0 / 0
помогите новичку
    #32489152
johnnybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом примере мы вычисляли и выводили число,
а как выбрать набор кодов с и вывести его на экран?
Как сюда приткнут скл запрос или можна по другому?
...
Рейтинг: 0 / 0
помогите новичку
    #32489205
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После команды READ выполняешь запрос

SELECT ... FROM ... WHERE ... ;
INTO CURSOR result

PRIVATE i
i=0
select result
SCAN
* Номер строки
i=i+1
@i,1 SAY result.Field1
@i,20 SAY result.Field2
...
ENDSCAN

или так, если позиционррование по столбцам не нужно:

select result
SCAN
?result.Field1,result.Field2,result.Field3, ...
ENDSCAN

А вообще, посоветуй купить книгу Попова А.А. по программированию в Fox2x там все это достаточно хорошо и подробно написано. Книга многократно переиздавалась, так что найти ее не проблема.
...
Рейтинг: 0 / 0
помогите новичку
    #32489271
johnnybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я не собираюсь програмировать на фокс про, сейчас так точно, но чем жизнь не шутит.

Спасибо за помощь.
...
Рейтинг: 0 / 0
помогите новичку
    #32490131
AlexKise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда прямиком на //foxpopuli.narod.ru
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите новичку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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