Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Записи в таблицу не проходят / 12 сообщений из 12, страница 1 из 1
25.05.2006, 10:53
    #33750562
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
Леди и джентльмены!
Не пойму, почему не работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
**  В Init формы **
= CURSORSETPROP('Buffering',  5 , 'table1') 

** В Click кнопки **
INSERT INTO table1(nIdCod,cGost,nNomer...) VALUES (pnIdCod, thisform.txtGost.Value, lnNomer...)
GO TOP IN table1
TABLEUPDATE(.t.)

Результат - записей в table1 нет ((((((((((((((((((((((((((
Вроде бы все сделала так, как уже много раз обсуждалось на форуме.

Благодарю.
...
Рейтинг: 0 / 0
25.05.2006, 11:01
    #33750601
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
А что говорит

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if !TABLEUPDATE(.t.)

aerror(arr)
for i =  1  to alen(arr)
?arr(i)
endfor

endif 
...
Рейтинг: 0 / 0
25.05.2006, 11:04
    #33750614
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
Так проверь как отработала команда TableUpdate()

Код: plaintext
1.
2.
3.
4.
5.
6.
INSERT ...
IF TableUpdate(.T.,.T.) = .F.
	LOCAL laError( 1 )
	=AERROR(laError)
	* анализ массива laError для уточнения причины ошибки
ENDIF

Кстати, то, что ты не указала второй параметр в команде TableUpdate() - это специально? Хотя, для операций создания новой записи - это не принципиально.
...
Рейтинг: 0 / 0
25.05.2006, 12:01
    #33750862
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
To PaulWist & ВладимирМ

Нет, ничего не произошло. И в Debugger'е новая переменная не появилась - я так понимаю, что условие не сработало.
...
Рейтинг: 0 / 0
25.05.2006, 12:12
    #33750923
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
1. Проверить, что возвращает TableUpdate
2. При получании .F. (возникла ошибка), команда AERROR() создаст массив, который надо посмотреть, что бы узнать, чего не сраслось при модификации.
...
Рейтинг: 0 / 0
25.05.2006, 13:49
    #33751328
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
А сброс буфера происходит в нужной рабочей области? Если написать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
INSERT ...
IF TableUpdate(.T.,.T.,"table1") = .F.
	LOCAL laError( 1 )
	=AERROR(laError)
	* анализ массива laError для уточнения причины ошибки
ENDIF

Т.е. в качестве 3 параметра TableUpdate() явно укажи алиас рабочей области, где необходимо сохранить буфер.
...
Рейтинг: 0 / 0
25.05.2006, 14:11
    #33751462
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
Я здесь пока эксперементировала, ваши последние советы не разбирала.

= CURSORSETPROP('Buffering', 5, 'table1') - 5 советовал ставить уважаемый ВладимирМ. А у меня проект был как раз написан с ('Buffering', 2, 'table1'). Вот я сегодня и попыталась в новом проекте 2 поменять на 5. Результат, как вы знаете, плачевный.
Только что переписала код по-старому:
= CURSORSETPROP('Buffering', 2, 'table1')
И теперь стало все нормально - записи в новом проекте уходят в таблицу.
Вернула 5 - опять записи сбрасываются в никуда.
...
Рейтинг: 0 / 0
25.05.2006, 14:18
    #33751498
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
Фу елки палки, тебе задали 3 вопроса ответь пожалуйста на них

авторА сброс буфера происходит в нужной рабочей области?

Т.е. в качестве 3 параметра TableUpdate() явно укажи алиас рабочей области, где необходимо сохранить буфер.

авторТак проверь как отработала команда TableUpdate()

авторПри получании .F. (возникла ошибка), команда AERROR() создаст массив, который надо посмотреть, что бы узнать, чего не сраслось при модификации.
...
Рейтинг: 0 / 0
25.05.2006, 14:22
    #33751521
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
Строковая буферизация (2 или 3) отличается от табличной (4 или 5) тем, что при определенных условиях происходит автоматический сброс буфера. Т.е. вне зависимости от факта подачи команды TableUpdate().

Это происходит, например, при перемещении указателя записи или при закрытии таблицы.

В данном случае, это означает, что процесс сброса буфера происходит бесконтрольно. Команда TableUpdate() НЕ выполняет сброс буфера. Почему? Возможно, потому, что не указан алиас.

Это значит, что рано или поздно, возникнут глюки. Процесс сброса буфера всега надо контролировать. Я бы советовал оставить 5 буферизацию и все-таки найти причину ошибки.
...
Рейтинг: 0 / 0
25.05.2006, 14:59
    #33751698
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
А вот так:
TableUpdate(.T.,.T.,"table1")
все заработало.
М-да-а...
TABLEUPDATE( [nRows [, lForce]] [, cTableAlias | nWorkArea] [, cErrorArray] )
По Help'у параметры необязательные...

Благодарю всех-всех-всех!

Елизавета Скрунскайте

P.S.
PaulWistФу елки палки, тебе задали 3 вопроса ответь пожалуйста на них
Не ругайтесь, пожалуйста. На первый-то из перечисленных вопрсов я ответила сейчас.
Впредь постараюсь быть порасторопней ;-)
...
Рейтинг: 0 / 0
25.05.2006, 18:01
    #33752392
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
>По Help'у параметры необязательные...

Только в этом случае надо жество отслеживать нужную текущую область и не забывать ставить SELECT <нужный алиас>, а то в фоксе хватает контролов самостоятельно перекидывающих рабочии области. Особено этим знаменит GRID.
Ваще, я предпочитаю везде, где синтаксис позволяе указывать рабочие обласит обязательно их указывать - и на душе спокойней и понимать потом проще ;)
...
Рейтинг: 0 / 0
25.05.2006, 22:43
    #33752837
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записи в таблицу не проходят
Параметр не обязателный, но если он не указан, это предполагает, что попытка сохранения буфера происходит в текущей рабочей области.

Ты же сама написала

Код: plaintext
GO TOP IN table1

Разве опция IN в команде GO - обязательна? Зачем же ты ее использовала?

Альтернативным вариантом использования опций с указанием рабочих областей является явный переход в нужную рабочую область

Код: plaintext
1.
2.
SELECT Table1
GO TOP
TableUpdate(.T.)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Записи в таблицу не проходят / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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