|
Несоответствие возвращаемого типа
|
|||
---|---|---|---|
#18+
Ситуация: Создана таблица с такими полями -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 *================= И еще: как передать в параметры этой функции имена таблицы из которой будет выбираться значение и поле по которому оно будет выбираться, для того чтобы эту функцию сделать универсальной для всех таблиц проекта. Заранее благодарен. == Михаил. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2003, 15:32 |
|
Несоответствие возвращаемого типа
|
|||
---|---|---|---|
#18+
> но при сохранении возвращенного значения в таблицу Фокс ругается "Несовпадение типов данных" Глюки, вот такое у меня заработало: Код: plaintext 1. 2. 3. 4. 5.
А так, на having ругалась и v принимала за функцию. > как передать в параметры этой функции имена таблицы из которой будет выбираться значение и поле по которому оно будет выбираться Код: plaintext 1. 2. 3. 4.
Имя таблицы можно не передавать, а определять изнутри. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2003, 19:19 |
|
Несоответствие возвращаемого типа
|
|||
---|---|---|---|
#18+
У меня и так и так не работает ... > 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 ) названия поля - опять : при сохранении возвращенного значения в таблицу Фокс ругается "Несовпадение типов данных" ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2003, 20:14 |
|
Несоответствие возвращаемого типа
|
|||
---|---|---|---|
#18+
> Выдаёт ошибки : select MAX( cFieldName )+1 from (ALIAS()) INTO ARRAY v error ..... select MAX( &cFieldName )+1 from (ALIAS()) INTO ARRAY v Попробуйте поменять имя массива, мне кажется фокс пытается схватить функцию с именем v (есть такая?). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2003, 22:01 |
|
Несоответствие возвращаемого типа
|
|||
---|---|---|---|
#18+
> 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 такая глючная штука, трудно блин его приручить :) Надеюсь на вашу помощь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2003, 00:52 |
|
Несоответствие возвращаемого типа
|
|||
---|---|---|---|
#18+
2_BMP > Что-то мне кажется что Фокс по сравнению с Delphi или Builder такая глючная штука, трудно блин его приручить :) Надеюсь на вашу помощь :) Просто при кажущейся простоте фокса, он не прощает определенных вещей :) Что касается самой проблемы, то поскольку у меня все работает без проблем, я могу лишь дать несколько советов: 1. Внимательно прогоните код через дебаггер, чтобы определить в каком месте возникает ошибка, что откуда вылазит и почему конфликтует. 2. Проверьте, что у Вас установлен последний servpack для 5-6-7-q версии. http://msdn.microsoft.com/vfoxpro/downloads/updates/default.asp 3. Перейдите на 8-ю версию, там autoinc реализован. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2003, 10:46 |
|
|
start [/forum/topic.php?fid=41&msg=32162364&tid=1598311]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 398ms |
0 / 0 |