Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Функции для обработки курсора - новичек, вопросы в теме / 25 сообщений из 25, страница 1 из 1
26.11.2009, 12:43
    #36333256
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
Из базы вытянул курсор. Теперь курсор нужно обработать.
Механика Select -- SCAN--ENDSCAN: селект курсор -- скан из курсора берет первую запись. Далее функцией происходит обработка этой строки.
Вопросы:
1. Как передается строка курсора в функцию?
2. Передача аргументов чисел - без кавычек?
Псевдокод:
Код: plaintext
1.
2.
3.
4.
&&Сделали селект INTO CURSOR MyCursor
MyCont= 0 
SCAN
MyCont=myFunc(Cursor_String,  12 ,  22 )
ENDSCAN
...
Рейтинг: 0 / 0
26.11.2009, 12:50
    #36333277
Функции для обработки курсора - новичек, вопросы в теме
донМахито,
Мы же не знаем описания твоей функции, поэтому сказать ничего определенного не можем.
А по теме:
1.
- курсор = та же таблица (только не на диске, а в памяти).
Поэтому в функцию может быть передано:
- номер строки курсора,
- либо строка, которая сформирована из присоединенных друг к другу значений полей данной строки, приведенных к текстовому виду.
Но первое, ИМХО, удобнее... :-)))

2. Аргументы-числа передаются без кавычек.
...
Рейтинг: 0 / 0
26.11.2009, 13:04
    #36333348
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
Станислав С...кий,
Из базы вывел в курсор всех сотрудников с доп. информацией о них. Теперь есть ряд условий, по которым их нужно подсчитать (по возрастному диапазону, должностям и т.п.). Если тупо в ручную - куча IIF, если в условие подставлять соотв. переменную - небольшая функция. Что знаю о скане: выдает одну строку из курсора за проход (типа for). Теперь нужно узнать, как передать эту строку в функцию.
...
Рейтинг: 0 / 0
26.11.2009, 13:07
    #36333359
Функции для обработки курсора - новичек, вопросы в теме
донМахитоЧто знаю о скане: выдает одну строку из курсора за проход Ничего никуда он не выдает. Он пермещает указатель на следующую запись. Записи в функции не передают. Туда передают значения полей записи, переменные, или выражения из их комбинаций.
...
Рейтинг: 0 / 0
26.11.2009, 13:10
    #36333376
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
о_О? Как же тогда можно реализовать такую схему?
...
Рейтинг: 0 / 0
26.11.2009, 13:14
    #36333391
Функции для обработки курсора - новичек, вопросы в теме
донМахитоо_О? Как же тогда можно реализовать такую схему?Какую ТАКУЮ? Вы не умеете в качестве параметров функции использовать поля текущей записи?
...
Рейтинг: 0 / 0
26.11.2009, 13:19
    #36333413
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
проходящий. Вы не умеете в качестве параметров функции использовать поля текущей записи?
Вы имеете ввиду
Код: plaintext
1.
2.
SCAN
MyFunc(Table1.Name, Table2.Dolzhn)
ENDSCAN
?
...
Рейтинг: 0 / 0
26.11.2009, 13:20
    #36333416
Функции для обработки курсора - новичек, вопросы в теме
донМахитопроходящий. Вы не умеете в качестве параметров функции использовать поля текущей записи?
Вы имеете ввиду
Код: plaintext
1.
2.
SCAN
MyFunc(Table1.Name, Table2.Dolzhn)
ENDSCAN
?В том числе и так.
...
Рейтинг: 0 / 0
26.11.2009, 13:24
    #36333434
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
проходящий.В том числе и так.
Громоздко. Через указатель можно?
...
Рейтинг: 0 / 0
26.11.2009, 13:29
    #36333470
Функции для обработки курсора - новичек, вопросы в теме
донМахитопроходящий.В том числе и так.
Громоздко. Через указатель можно?Какой еще к чертовой матери указатель? Где Вы их вообще в фоксе обнаружили? Указатель на то, что и так без каких либо ухищрений видно. В том числе и внутри функции, если уж так не хочется писать параметры? Что Вы за сложности сами себе придумываете?
Код: plaintext
1.
2.
3.
4.
&&Сделали селект INTO CURSOR MyCursor
MyCont= 0 
SCAN
MyCont=myFunc( 12 ,  22 ) && запись и так видна в функции без танцев с бубнами
ENDSCAN
...
Рейтинг: 0 / 0
26.11.2009, 13:32
    #36333481
Функции для обработки курсора - новичек, вопросы в теме
донМахитопроходящий.В том числе и так.
Громоздко. Через указатель можно?
Уважаемый сэр имеет большой опыт работы на С/С++? Тогда объясните, указатель на что Вам нужен?
Если на данную запись, то есть ее номер. Все таблицы в рамках Фоксовой программы имеют глобальную область видимости, если не указано другое (типа приватной сессии в формах).
Кроме того, при переходе между функциями, местоположение указателя на запись данной таблицы (номер записи) остается неизменным, то есть в своей функции Вы можете сделать:
Код: plaintext
1.
select Таблица
и попадете именно на ту запись, с которой работали в вызывающей функции
...
Рейтинг: 0 / 0
26.11.2009, 13:53
    #36333556
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
проходящий.[quot донМахито]так без каких либо ухищрений видно. В том числе и внутри функции
Я этого не знал, думал так же, как в С++, например.
проходящий. , Станислав С...кий, спасибо за помощь.
...
Рейтинг: 0 / 0
26.11.2009, 13:57
    #36333574
Функции для обработки курсора - новичек, вопросы в теме
донМахитопроходящий.[quot донМахито]так без каких либо ухищрений видно. В том числе и внутри функции
Я этого не знал, думал так же, как в С++, например. А на каком основании? С++ уже стал СУБД или его принципы распространяются на всё и вся?
...
Рейтинг: 0 / 0
26.11.2009, 14:30
    #36333717
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
проходящий.А на каком основании? С++ уже стал СУБД или его принципы распространяются на всё и вся?
Отталкиваюсь от того опыта, который уже есть. Иначе говоря: "Эта штука отсюда для того же, что и та штука оттуда. Раз назначение одинаково, значит и функционируют похоже [...]". Не учел наличие продолжение таких рассуждений в скобках: [..., но, наверняка, со своими нюансами.], о которых рассказал
Станислав С...кийВсе таблицы в рамках Фоксовой программы имеют глобальную область видимости...
...
Рейтинг: 0 / 0
26.11.2009, 14:46
    #36333785
Функции для обработки курсора - новичек, вопросы в теме
донМахитопроходящий.А на каком основании? С++ уже стал СУБД или его принципы распространяются на всё и вся?
Отталкиваюсь от того опыта, который уже есть. Иначе говоря: "Эта штука отсюда для того же, что и та штука оттуда. Раз назначение одинаково, значит и функционируют похоже [...]".То есть и в Великобритании будете ездить по правой строне дороги? На основании того опыта, который уже есть?
...
Рейтинг: 0 / 0
26.11.2009, 15:33
    #36333925
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
проходящий.То есть и в Великобритании будете ездить по правой строне дороги? На основании того опыта, который уже есть?
:) Я же написал, что не учел автор[..., но, наверняка, со своими нюансами.]. Теперь учту.
Раз уж продолжаем тему. Частично написал функцию:
Код: plaintext
1.
2.
3.
4.
FUNCTION BaseCount
    LPARAMETERS Katry, Sex, LoYrBdr, HiYrBdr
    	IIF ((LoYrBdr= 0  AND HiYrBdr= 0  AND zKatPer.Nick=Katry AND Person.Sex=Sex), return  1 , return  0 )
ENDFUNC 
Но так не работает: фокс подчеркивает и return не подсвечивает. Вопрос: что не так?
...
Рейтинг: 0 / 0
26.11.2009, 15:36
    #36333936
Функции для обработки курсора - новичек, вопросы в теме
донМахитопроходящий.То есть и в Великобритании будете ездить по правой строне дороги? На основании того опыта, который уже есть?
:) Я же написал, что не учел автор[..., но, наверняка, со своими нюансами.]. Теперь учту.
Раз уж продолжаем тему. Частично написал функцию:
Код: plaintext
1.
2.
3.
4.
FUNCTION BaseCount
    LPARAMETERS Katry, Sex, LoYrBdr, HiYrBdr
    	IIF ((LoYrBdr= 0  AND HiYrBdr= 0  AND zKatPer.Nick=Katry AND Person.Sex=Sex), return  1 , return  0 )
ENDFUNC 
Но так не работает: фокс подчеркивает и return не подсвечивает. Вопрос: что не так?Неправильный синтаксис, о чем наверняка сам фокс и сообщал. IIF(), как можно даже по виду определить, есть функция, а не команда ветвления кода. Это аналог сишного ?x:y:z или как там это правильно пишется.
...
Рейтинг: 0 / 0
26.11.2009, 15:44
    #36333954
Функции для обработки курсора - новичек, вопросы в теме
донМахито Частично написал функцию:
Код: plaintext
1.
2.
3.
4.
FUNCTION BaseCount
    LPARAMETERS Katry, Sex, LoYrBdr, HiYrBdr
    	IIF ((LoYrBdr= 0  AND HiYrBdr= 0  AND zKatPer.Nick=Katry AND Person.Sex=Sex), return  1 , return  0 )
ENDFUNC 
Но так не работает: фокс подчеркивает и return не подсвечивает. Вопрос: что не так?

Ну, вообще-то правильнее писать так:
Код: plaintext
1.
2.
3.
4.
FUNCTION BaseCount
    LPARAMETERS Katry, Sex, LoYrBdr, HiYrBdr
    return IIF((LoYrBdr= 0  AND HiYrBdr= 0  AND zKatPer.Nick=Katry AND Person.Sex=Sex),  1 ,  0 )
ENDFUNC 
...
Рейтинг: 0 / 0
26.11.2009, 15:50
    #36333964
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
Хм, Вроде этому и удовлетворяет: первый аргумент в скобках - условие, остальные - then-else. Тогда буду IFом.
...
Рейтинг: 0 / 0
26.11.2009, 15:58
    #36333988
Функции для обработки курсора - новичек, вопросы в теме
донМахитоХм, Вроде этому и удовлетворяет: первый аргумент в скобках - условие, остальные - then-else. Тогда буду IFом.Чему "этому"? Это функция, возвращающая значение. Возвращаемое значение берется из второго или третьего параметра в зависимости от первого параметра. При чем тут return?
...
Рейтинг: 0 / 0
26.11.2009, 17:03
    #36334151
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
проходящий.При чем тут return?
о_О? На firststeps по фоксу есть пример функции, там есть return. Я решил, что он и возвращает.
...
Рейтинг: 0 / 0
26.11.2009, 17:15
    #36334184
quxix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
донМахитоЧастично написал функцию:
Код: plaintext
1.
2.
3.
4.
FUNCTION BaseCount
    LPARAMETERS Katry, Sex, LoYrBdr, HiYrBdr
    	IIF ((LoYrBdr= 0  AND HiYrBdr= 0  AND zKatPer.Nick=Katry AND Person.Sex=Sex), return  1 , return  0 )
ENDFUNC 
Но так не работает: фокс подчеркивает и return не подсвечивает. Вопрос: что не так?

В любом стандарте программирования и в Си в том числе рекомендованно делать одну точку выхода, дабы потом не обрести гемороя на свою голову.
Если функция будет огромна и в ней будет понатыканно куча return-ов замучаешься разбирать потом,что там и куда.
Как делать Вам показали выше
...
Рейтинг: 0 / 0
26.11.2009, 17:26
    #36334211
донМахито
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
quxix
Как делать Вам показали выше
Ага, только сейчас заметил. Станислав С...кий, спасибо.
...
Рейтинг: 0 / 0
26.11.2009, 17:40
    #36334233
Функции для обработки курсора - новичек, вопросы в теме
донМахито IIF ((LoYrBdr=0 AND HiYrBdr=0 AND zKatPer.Nick=Katry AND Person.Sex=Sex), return 1, return 0)
Кстати, о птичках. В фоксе не может быть на одной строке несколько коман. Одна длинная может размещаться на нескольких строках, а вот нескоьлко на одной - ни в жисть. Так что даже исходя из этого два return на однрой строке - нонсенс (то бишь бессмыслица).
...
Рейтинг: 0 / 0
27.11.2009, 09:14
    #36334843
alextashk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функции для обработки курсора - новичек, вопросы в теме
return IIF ((LoYrBdr=0 AND HiYrBdr=0 AND zKatPer.Nick=Katry AND Person.Sex=Sex), 1, 0)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Функции для обработки курсора - новичек, вопросы в теме / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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