powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несоответствие возвращаемого типа
7 сообщений из 7, страница 1 из 1
Несоответствие возвращаемого типа
    #32162316
BMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMP
Гость
Ситуация:
Создана таблица с такими полями
-int id
-char name
В TableDesigner'e в графе default value стоит вызов хранимой процедуры
autoinc(), которая определена как :
*=================
PROCEDURE autoinc
select i_id from partitions HAVING i_id =MAX(i_id) INTO ARRAY v
*RETURN v +1
RETURN v[1,1] +1
*=================
и предназначена для возвращения мах+1 значения из partitions.

Проблема:

Процедура возвращает вроде бы все верно, но при сохранении возвращенного значения в таблицу Фокс ругается "Несовпадение типов данных" даже при такой ситуации:
*=================
PROCEDURE autoinc
v=5
RETURN v
*=================

И еще:
как передать в параметры этой функции имена таблицы из которой будет выбираться значение и поле по которому оно будет выбираться, для того чтобы эту функцию сделать универсальной для всех таблиц проекта.

Заранее благодарен.

==
Михаил.
...
Рейтинг: 0 / 0
Несоответствие возвращаемого типа
    #32162355
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> но при сохранении возвращенного значения в таблицу Фокс ругается "Несовпадение типов данных"

Глюки, вот такое у меня заработало:
Код: plaintext
1.
2.
3.
4.
5.
PROCEDURE autoinc
LOCAL ARRAY v[ 1 , 1 ]
select MAX(id)+ 1  from (ALIAS()) INTO ARRAY v
RETURN v[ 1 , 1 ] 
ENDPROC 

А так, на having ругалась и v принимала за функцию.

> как передать в параметры этой функции имена таблицы из которой будет выбираться значение и поле по которому оно будет выбираться

Код: plaintext
1.
2.
3.
4.
=autoinc(TableName,FieldName)
..
PROCEDURE autoinc
LPARAMETERS cTableName, cFieldName
..

Имя таблицы можно не передавать, а определять изнутри.
...
Рейтинг: 0 / 0
Несоответствие возвращаемого типа
    #32162364
_BMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня и так и так не работает ...
> LOCAL ARRAY v[1,1]
Это можно не писать. Массив должен сам создаваться, так пишут в доках...
Параметры функции :( увы но никак не могу одолеть ...

Пишу так:
=autoinc("FieldName")
..
PROCEDURE autoinc
LPARAMETERS cFieldName
LOCAL ARRAY v[1,1]
select MAX( cFieldName )+1 from (ALIAS()) INTO ARRAY v
RETURN v[1,1]
ENDPROC

Выдаёт ошибки :

select MAX( cFieldName )+1 from (ALIAS()) INTO ARRAY v
error .....

А при задании явно ( select MAX( id)+1 from (ALIAS()) INTO ARRAY v
) названия поля - опять : при сохранении возвращенного значения в таблицу Фокс ругается "Несовпадение типов данных"
...
Рейтинг: 0 / 0
Несоответствие возвращаемого типа
    #32162386
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Выдаёт ошибки :
select MAX( cFieldName )+1 from (ALIAS()) INTO ARRAY v
error .....


select MAX( &cFieldName )+1 from (ALIAS()) INTO ARRAY v
Попробуйте поменять имя массива, мне кажется фокс пытается схватить функцию с именем v (есть такая?).
...
Рейтинг: 0 / 0
Несоответствие возвращаемого типа
    #32162410
_BMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> select MAX( &cFieldName )+1 from (ALIAS()) INTO ARRAY v
- Это помогло теперь я получаю выборку из таблицы по полю передаваемому в переменной cFieldName
>Попробуйте поменять имя массива, мне кажется фокс пытается схватить >функцию с именем v (есть такая?).
Нет такой функции нет, но имя на всякий случай изменил ...
Теперь такая ошибка:
(При вызове откомпилированного файла)
Error 152
Отсутствует выражение
...

или:
(при запуске формы из Fox PRO)
select MAX( &cFieldName )+1 from (ALIAS()) INTO ARRAY v
Error 152
...
Что-то мне кажется что Фокс по сравнению с Delphi или Builder такая глючная штука, трудно блин его приручить :) Надеюсь на вашу помощь :)
...
Рейтинг: 0 / 0
Несоответствие возвращаемого типа
    #32162432
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2_BMP

> Что-то мне кажется что Фокс по сравнению с Delphi или Builder такая глючная штука, трудно блин его приручить :) Надеюсь на вашу помощь :)

Просто при кажущейся простоте фокса, он не прощает определенных вещей :)

Что касается самой проблемы, то поскольку у меня все работает без проблем, я могу лишь дать несколько советов:
1. Внимательно прогоните код через дебаггер, чтобы определить в каком месте возникает ошибка, что откуда вылазит и почему конфликтует.
2. Проверьте, что у Вас установлен последний servpack для 5-6-7-q версии.
http://msdn.microsoft.com/vfoxpro/downloads/updates/default.asp
3. Перейдите на 8-ю версию, там autoinc реализован.
...
Рейтинг: 0 / 0
Несоответствие возвращаемого типа
    #32162465
BMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMP
Гость
Спасибо NNN. Разобрался. Сам напарил в самом начале и совсем забыл...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несоответствие возвращаемого типа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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