|
|
|
Вызов хранимой процедуры FoxPro через ADO (Delphi)
|
|||
|---|---|---|---|
|
#18+
Здраствуйте. Есть небольшая база данных на VPF 7.0. Мне необходимо написать несколько программок в Delphi 7, работающих с этой базой через ADO. И возникла такая проблемка. Все таблицы в этой базе данных содержат суррогатный ключ, который вычисляется по формуле макс_значение_ключа + 1. Ключ вычисляет хранимая процедура, которая в качестве параметров принимает имя таблицы и имя поля, для которого должен быть вычислен ключ, и возвращает новое значение ключа. Для всех полей, содержащих суррогатный ключ, в default value прописан вызов этой процедуры. Проблема заключается в добавлении новых записей. Когда я работал в Фоксе, все было просто - я писал команду INSERT, опуская значение ключа, и Фокс автоматически подставлял туда выражение из default value, где был прописан вызов хранимой процедуры. В Delphi + ADO такой приём не проходит - очевидно, драйвер пытается вставить NULL value, не вызывая процедуру. Прямо вызвать хранимую процедуру у меня тоже не получилось - ни прямым обращением к ней в INSERT, ни через компонент ADOStoredProc. Собственно, я вижу только один выход - рассчитывать значение ключа прямо в программе. Но это долго, муторно и как-то неправильно. Может, есть какой-то более простой выход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 11:47 |
|
||
|
Вызов хранимой процедуры FoxPro через ADO (Delphi)
|
|||
|---|---|---|---|
|
#18+
Kaiden Ключ вычисляет хранимая процедура...Вообще-то в ADO это все должно работать. Скачайте последний VFP OLE DB provider 9.1 и установите его машину, где работает Ваша программа и посмортие, что получается... Еще проблема может быть в том, что в хранимой процедуре использованы функции FoxPro, не поддерживаемые VFP OLE DB provider 9.1 - в это случае их просто надо будет заменить на другие... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 12:18 |
|
||
|
Вызов хранимой процедуры FoxPro через ADO (Delphi)
|
|||
|---|---|---|---|
|
#18+
Возможно поможет Посмотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 12:25 |
|
||
|
Вызов хранимой процедуры FoxPro через ADO (Delphi)
|
|||
|---|---|---|---|
|
#18+
Добрый день. У меня возникала зеркальная задача - вызвать в VFP процедуру FIREBIRD и получить от нее значение. Я вызывал процедуру через ADO с помощью command.execute проедварительно запихав имя процедуры в select и считывал выходной параметер. Возможно Вам надо поступить также c процедурой VFP и уже значение этого параметра (оно же значение ключа) использовать в INSERT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 15:19 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34561526&tid=1589242]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 401ms |

| 0 / 0 |
