powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Найди ошибку или помоги другу :)
2 сообщений из 2, страница 1 из 1
Найди ошибку или помоги другу :)
    #35158260
GavRYshA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Штука заключается в следуюдем:
Нужно установить в таблице KLIENT_I.DBF признак поля по умолчанию. Он заключается в установке в этой таблице в поле nomer единицы (1). Т.е. на определенного клиента (к_к) есть пару расчетных счетов вот который под номером 1 и есть по умолчанию и тянется дальше во всякие накладные, а остальные р/с для этого клиента нумеруются по мере добавления к этому клиенут т.е. 1,2,3,4...
Я делаю так .. выбираю р/с под номером 3 и надо его сделать по умолчанию т.е. присвоить ему номер 1, а бывший номер 1 присвоить 3 т.к. меняем с третим.
Вот код который получился у меня ... но что то он не меняет (

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  case v1=- 8 
	new_def = klient_i.nomer       &&номер с каким меняем	
    	old_def =  1                          &&номер на какой меняем

	seek v_plat
	do while v_plat=k_k .and. .not.eof()  
     
		if old_def = new_def  &&если одинаковый то выход
			EXIT         
		endif

		if klient_i.nomer = old_def   &&замена старого дефолта на обычную запись
			repl klient_i.nomer with new_def
		endif
	
		if klient_i.nomer = new_def   &&замена записи на дефолт
			repl klient_i.nomer with old_def
		endif
		skip
	enddo
   exit

в архиве полный код программы и кусочек таблицы klient_i
...
Рейтинг: 0 / 0
Найди ошибку или помоги другу :)
    #35158394
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: GavRYshA

> case v1=-8
> new_def = klient_i.nomer &&номер с каким меняем
> old_def = 1 &&номер на какой меняем
>
> seek v_plat
> do while v_plat=k_k .and. .not.eof()
Зачем здесь eof() ???

>
> if old_def = new_def &&если одинаковый то выход
> EXIT
> endif
А эту проверку надо делать вообще до начала каких бы то ни было
манипуляций!!!!

> if klient_i.nomer = old_def &&замена старого дефолта на обычную запись
> repl klient_i.nomer with new_def
> endif

> if klient_i.nomer = new_def &&замена записи на дефолт
> repl klient_i.nomer with old_def
> endif

Ну допустим. Теперь что происходит: Находим сначала запись с klient_i.nomer
= old_def, меняем на new_def.
Потом ЭТУ ЖЕ запись (мы еще стоим на ней и следующий if выполнится, т.к. мы
только что сами поменяли klient_i.nomer на new_def) - > меняем его обратно.


Короче логика совсем не продумана!!!


Подозреваю, что индекс стоит по полю k_k и может еще по nomer (составной
индекс). Если это так - получишь очередные грабли!!!



> skip
> enddo
> exit

> в архиве полный код программы и кусочек таблицы klient_i


И толку от вашего кода программы, если там есть вызовы других программ???? А
где к базе индексы??? По каким критериям сейчас стоит сортировка???


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


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