Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите найти ошибку / 5 сообщений из 5, страница 1 из 1
26.04.2010, 20:26
    #36599345
MARGARITA23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите найти ошибку
Есть 2 БД oracle и foxpro. Я переношу данные таблиц из БД foxpro в БД oracle. Чтобы вставить новые данные таблиц БД foxpro в БД oracle, сначала должна быть заполнена таблица sys_j в БД oracle.Т.е мне необходимо сформировать первичный ключ в foxpro, а затем его перекинуть в таблицу sys_j БД oracle

Подключаюсь к БД oracle и запоминаю последний первичный ключ:
lnconn=SQLCONNECT("orabitur","system","ora")
=SQLEXEC(lnConn,'select id_j from sys_j', "id_jur")
scan
pid_j=id_jur.id_j
endscan

первичный ключ наподобии счетчика. Пытаюсь вставить данные новых сотрудников из таблицы sotrud. Для этого сначала нужно добавиить запись в sys_j
SCAN
pid_j=INT(pid_j)+1
d=date()
ks=ALLTRIM(sotrud.k)
fio=ALLTRIM(sotrud.fio)
=SQLEXEC(lnConn,'INSERT INTO sys_j (id_j,dat) VALUES (?pid_j,?d)')
=SQLEXEC(lnConn,'INSERT INTO sotrud (id_j,k,fio) VALUES (?pid_j,?ks,?fio)')
endscan
pid_j увеличивается лишь один раз. Что пишу неправильно
...
Рейтинг: 0 / 0
26.04.2010, 21:59
    #36599464
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите найти ошибку
MARGARITA23,

Записи в БД вставляются?
...
Рейтинг: 0 / 0
27.04.2010, 10:39
    #36600056
MARGARITA23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите найти ошибку
вставляется только одна запись
...
Рейтинг: 0 / 0
27.04.2010, 10:48
    #36600077
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите найти ошибку
> Автор: MARGARITA23
> Подключаюсь к БД oracle и запоминаю последний первичный ключ:
> scan
> pid_j=id_jur.id_j
> endscan

А для чего этот скан? Ведь если нужен последний(максимальный) элемент, то можно было написать по другому сам запрос на
получение, что-то типа так:
Код: plaintext
1.
2.
3.
4.
=SQLEXEC(lnConn,'select top 1 id_j from sys_j order by id_j desc', "id_jur")
* И после выполнить простое присвоение, проверив наличие результата
If Used("id_jur") then
    pid_j=id_jur.id_j
EndIf


Сам скан вроде правильный, только не понятно скан какой таблицы выполняется?
Перед сканом не мешало-бы поставить
Код: plaintext
1.
2.
3.
Select sotrud
Go Top
Scan
....

> pid_j=INT(pid_j)+1

И непонятно, зачем приводить к целому и так целое значение?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.04.2010, 12:03
    #36604869
MARGARITA23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите найти ошибку
спасибо за помощь, все заработало
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите найти ошибку / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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