Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / проблемы с головой!!!!!!!! / 18 сообщений из 18, страница 1 из 1
02.06.2011, 13:51
    #37291297
Zloi_87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Народ, хелп!!! у меня возникла такая проблемма: имеется таблица, в поле которой находиться индивидуальный номер пациента (id) он примерно такой:АБАА199907093106080863097,578. Первые 4 буквы мне не нужны, это инициалы, а вот 5,6,7,и 8 - год рождения. Можно ли как то проигнорировать первые 4 символа, и выташить данные только для 1999 года, например???? Помогите пожалуйста кто чем может.
...
Рейтинг: 0 / 0
02.06.2011, 13:54
    #37291302
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Код: plaintext
substr()
...
Рейтинг: 0 / 0
02.06.2011, 13:58
    #37291312
Zloi_87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
неееееее, пробовал примерно так:
store '2001' to id;
substr (id, 5)

не идет. мож, где то туплю????
...
Рейтинг: 0 / 0
02.06.2011, 14:19
    #37291383
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
tanglir,

a = АБАА199907093106080863097,578
b = substr(a, 5, 4)
?b
...
Рейтинг: 0 / 0
02.06.2011, 14:20
    #37291389
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87неееееее, пробовал примерно так:
store '2001' to id;
substr (id, 5)

не идет. мож, где то туплю????
Тупишь, у тебя строка из 4-х символов, как думаешь что получится если ты говоришь оставить все начиная с пятого?
...
Рейтинг: 0 / 0
02.06.2011, 14:22
    #37291393
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87,

Прошу прощения, не туда ответил, да еще и с ошибкой

a = "АБАА199907093106080863097,578"
b = substr(a, 5, 4)
?b
...
Рейтинг: 0 / 0
02.06.2011, 14:32
    #37291427
Zloi_87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
IgorNG,

не, тут проблема гораздо глубже... мне надо по этому номеру наити людей определенного года рождения, т. есть примерно так:

id
АЙАБ200708253110043034207,062
АЛАД201003313110052042791,781
САН 200908033110042836826,843
и т. д.


и вот из этих всех мне надо найти только тех, у кого 5,6,7, и 8 символы равны, например 2010.
...
Рейтинг: 0 / 0
02.06.2011, 14:34
    #37291433
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87,

SELECT SUBSTR(...) as cyear ...
Какие проблемы то?
...
Рейтинг: 0 / 0
02.06.2011, 14:36
    #37291439
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87и вот из этих всех мне надо найти только тех, у кого 5,6,7, и 8 символы равны, например 2010.
Код: plaintext
select ... where substr(id,  5 ,  4 ) = '2010'
...
Рейтинг: 0 / 0
03.06.2011, 10:13
    #37292878
Zloi_87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Dima T,

Спасибо огромное!!!! наконец допер... тока чуть по другому:

USE d:\svod_st\dbf\skrin_prof.dbf EXCLUSIVE
COPY TO d:\rab\skrin_prof1.dbf WHILE substr ( Skrin_prof.id, 5, 4) = "2010"
COPY TO d:\rab\skrin_prof2.dbf WHILE substr ( Skrin_prof.id, 5, 4) = "2009"
COPY TO d:\rab\skrin_prof3.dbf WHILE substr ( Skrin_prof.id, 5, 4) = "2008"
COPY TO d:\rab\skrin_prof4.dbf WHILE substr ( Skrin_prof.id, 5, 4) = "2007"
и тд.......
и все мазя!!!!!!!!

спасибо за помощь!!!!!!!
...
Рейтинг: 0 / 0
03.06.2011, 10:20
    #37292893
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87COPY TO d:\rab\skrin_prof1.dbf WHILE substr ( Skrin_prof.id, 5, 4) = "2010"А если записи не в порядке убывания пойдут?
...
Рейтинг: 0 / 0
03.06.2011, 11:59
    #37293145
Zloi_87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
tanglir,

Чувак, а это мысль!!!! А я то думаю, какого [ez у меня по 4 - 5 записей по каждому году, а в отчете их 30-50???? Спасибо за подсказку, будем думать дальше....
...
Рейтинг: 0 / 0
03.06.2011, 12:15
    #37293192
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87, да чего тут думать - трясти использовать FOR вместо WHILE надо.
...
Рейтинг: 0 / 0
03.06.2011, 13:06
    #37293319
Zloi_87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
tanglir, все так, как надо!!!!!!! рахмет тебе!!!! Тупо:
USE d:\svod_st\dbf\skrin_prof.dbf EXCLUSIVE
COPY TO d:\rab\skrin_prof1.dbf FOR substr ( Skrin_prof.id, 5, 4) = "2010"
COPY TO d:\rab\skrin_prof2.dbf FOR substr ( Skrin_prof.id, 5, 4) = "2009"
COPY TO d:\rab\skrin_prof3.dbf FOR substr ( Skrin_prof.id, 5, 4) = "2008"
и т. д.

и все как по маслу!!!!
...
Рейтинг: 0 / 0
06.06.2011, 14:07
    #37296776
BestiA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
USE d:\svod_st\dbf\skrin_prof.dbf EXCLUSIVE
COPY TO d:\rab\skrin_prof1.dbf FOR VAL(substr( Skrin_prof.id, 5, 4)) <= 2010 .AND. VAL(substr( Skrin_prof.id, 5, 4)) >= 2008

А так ?
...
Рейтинг: 0 / 0
06.06.2011, 16:54
    #37297217
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
BestiA,

лишние операции по вычислению VAL (как бы ещё не 2 раза - врубится фоксовый оптимизатор это оптимизировать или нет?), +к тому решение вообще неверное.
...
Рейтинг: 0 / 0
07.06.2011, 01:11
    #37297895
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
Zloi_87USE d:\svod_st\dbf\skrin_prof.dbf EXCLUSIVEА зачем делать монопольный доступ, если вы из skrin_prof потом только читаете?
То есть у вас далее по тексту есть delete и pack ?, - это вообще...

А вообще, "правильно" было бы сделать как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
n= 0 
for i= 2010  to  2007  step - 1 
	n=n+ 1 
	select * from d:\svod_st\dbf\skrin_prof.dbf ;
		where substr(id,  5 ,  4 ) == str(i, 4 ) ;
		into dbf (d:\rab\skrin_prof+ltrim(str(n)))
endfor
...
Рейтинг: 0 / 0
08.06.2011, 12:43
    #37300354
fore5ta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с головой!!!!!!!!
в дополнении к tanglir
Код: plaintext
substr()
используй
Код: plaintext
 set filter to 
, например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
close databases

if not file('PROBA.DBF')
  create table PROBA (ID C( 29 ))
  append blank
  replace next  1  PROBA.ID with 'АБАА199907093106080863097,578'
  append blank
  replace next  1  PROBA.ID with 'АЙАБ200708253110043034207,062'
  append blank
  replace next  1  PROBA.ID with 'АЛАД201003313110052042791,781'
  append blank
  replace next  1  PROBA.ID with 'САН 200908033110042836826,843'
  use
endif

select  0 
use proba

set filter to substr(id,  5 ,  4 ) = '2010'
*
* далее обрабатывай как тебе нужно, например
*
scan
  ? PROBA.ID
endscan
set filter to

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


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