Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / что то seek() неработает.... / 7 сообщений из 7, страница 1 из 1
24.01.2007, 13:55
    #34278696
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
Может дело было не в бабине...Но дело вот в чем и я немогу найти объяснений:

SET DEFAULT TO JUSTPATH(SYS(16))

SELECT fz57ñ
SCAN
F_err = .F.
I_err = .F.

IF !SEEK(ALLTRIM(regs),'region','region')
w_errfile("f",202)
ENDIF
ENDSCAN



PROCEDURE w_errfile
PARAMETERS typ_err,cod_err
IF typ_err="i"
I_err = .T.
INSERT INTO fiz_i FROM MEMVAR
REPLACE fiz_i.err WITH cod_err
ENDIF
IF typ_err="f"
F_err = .T.
INSERT INTO fiz_f FROM MEMVAR
REPLACE fiz_f.err WITH cod_err
ENDIF

вот если так, то таблица fiz_f-содержит одно число записей, если вот так--
...
Рейтинг: 0 / 0
24.01.2007, 14:14
    #34278768
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
Блин недописал и ентер нажал...
Так вот если вот так:
select * from reg;
where alltrim(regs) not in(select code from rgion) into dbf fiz_f, то другое, в чем тут дело?
Подскажите пожалуйста--вот еще и файлы прилагаются
...
Рейтинг: 0 / 0
24.01.2007, 14:15
    #34278774
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
иот еще одна табличка
...
Рейтинг: 0 / 0
24.01.2007, 14:16
    #34278781
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
и последняя
...
Рейтинг: 0 / 0
24.01.2007, 14:29
    #34278835
хожу мимо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
Навскид могу предположить, что проблема может скрываться в длине кодов. Например, Seek("08") найдёт запись, хотя там есть только строки "080", "080120" и т.д., а приведенный SQL-запрос не найдёт.
...
Рейтинг: 0 / 0
24.01.2007, 14:36
    #34278870
хожу мимо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
Как-то не так объяснил...
Подзапрос select code from region выбирает поле code фиксированной длины, поэтому alltrim() более коротких кодов будет всегда "not in".
Надо делать where padr(ltrim(regs), len(region.code)) not in (select ...
...
Рейтинг: 0 / 0
24.01.2007, 14:46
    #34278911
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что то seek() неработает....
Сравнение символьных строк в "обычных" командах (в том числе и в SEEK) регулируется настройкой

SET EXACT

Сравнение символьных строк в командах Select-SQL регулируется настройкой

SET ANSI

Это правила сравнения символьных строк разной длины. Следует ли сравнивать строки до тех пор, пока не кончатся символы в самой короткой строке или же дополнить короткую строку до длины более длинной и только потом сравнивать?

Чтобы не зависеть от этих настроек, надо самостоятельно дополнить все сравниваемые строки до фиксированного количества символов. Например, при помощи функции PADR().

Для справки:

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


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