powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите плиз с след. проблемой
10 сообщений из 10, страница 1 из 1
Помогите плиз с след. проблемой
    #34798297
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день!

Помогите плиз. со след. У меня есть массив чисел. Я хочу сделать след. придавая в цикле
постпенное значение из одной таблицы выбрать данные которые удовлетворяют след. условию:

for i = 1 to kol_vo do
select test_o2.*;
from test_o2;
where test_o2.pornam = vibork(i);
into table vremen.dbf
endfor

т.е. как видите - я делаю из таблицы test записи в таблицу vremen. Вот постепенно перебирая
массив. У меня не получается. Добавляется последняя запись.
Как сделать правильно? Спасибо
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798332
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне кажется цикл for здесь вовсе не нужен, достаточно select
Insert Into - это не оператор а команда...
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798356
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
недописал.
я непонял твоего условия выборки, если просто выбрать все записи из test_o2 в vremen.dbf
еогда так:
select test_o2.* from test_o2 into table vremen.dbf

если какое-то условие - его надо допистаь
select test_o2.* from test_o2 where <условие> into table vremen.dbf
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798362
Select into table не добавляет записи в таблицу, а создает новую. Потому и последя только и остается.
Insert into Table select ... может спасти отца русской демократии.
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798447
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если одним селектом
SELECT * from test_o2 WHERE BETWEEN(pornam,1,kol_vo) AND vibork(pornam)

BETWEEN(pornam,1,kol_vo) - оставит только записи от 1 до kol_vo
Функция должна возвращать .T. для нужных записей

Procedure vibork
LParameters toPar1
local loRet
if условие тогда m.loRet=.T.
return loRet

Можно или создать курсор into имя таблицы readwrite
или вставить в нужную таблицу insert into

Работаю под Лис-9
При вопросе лучше указывать версию фокса...
Что б получить правильный ответ...

С Ув. Игорь ;)
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798508
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри не доглядел что массив
Так будет правильно ;)
SELECT * from test_o2 WHERE ASCAN(vibork,pornam)#0

С Ув. Игорь....
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798526
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и забыл указать что...
Лучше что б массив был отсортирован по нужному полю...
И задать диапазон поиска...
SELECT * from test_o2 WHERE ASCAN(vibork,pornam,1,kol_vo,1,8)#0
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34798577
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18Всем добрый день!

Помогите плиз. со след. У меня есть массив чисел. Я хочу сделать след. придавая в цикле
постпенное значение из одной таблицы выбрать данные которые удовлетворяют след. условию:

for i = 1 to kol_vo do
select test_o2.*;
from test_o2;
where test_o2.pornam = vibork(i);
into table vremen.dbf
endfor

т.е. как видите - я делаю из таблицы test записи в таблицу vremen. Вот постепенно перебирая
массив. У меня не получается. Добавляется последняя запись.
Как сделать правильно? Спасибо Если порядок записей не важен:
Код: plaintext
1.
2.
3.
4.
5.
select test_o2.*;
    from test_o2;
    where ASCAN(vibork, test_o2.pornam) !=  0 ;
    order by test_o2.pornam; && или что-то еще
    into table vremen.dbf


В таких целях лучше курсоры использовать, заметно быстрее работать будет. Массив откуда-то ведь взялся? Лучше заполнить курсор. Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
create cursor curvib(nNom i, pornam i)
i =  0 
...
   i = i +  1  && для собдюдения порядка сортировки
   append blank in curvib
   repl in curvib nNom with i, pornam with ...


А потом по человечески выборку делать:
Код: plaintext
1.
2.
3.
select curvib.nNom, test_o2.*;
    from test_o2 inner join curvib on test_o2.pornam = curvib.pornam;
    order by test_o2.nNom;
    into table vremen.dbf
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34800731
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за помощь!

У меня вопросик возник. Вот к примеру я беру такую выборку:

select test_o2.*;
from test_o2;
where ASCAN(vibork, test_o2.pornam) != 0;
into table vremen.dbf

Мне результат - нравится!!!
Но:
у меня массив так идет: 10 - чисел:
1 - 10
2 - 3
.....
10 - 1.
Вот я и хочу это все видеть в такой последовательности.
А у меня получается что в таблицу пишется:
1 - 1
......
10 - 10
Т.е. мне не надо сортировать по порядку. Подскажите плиз. еще раз я не понял, как этот момент учесть
...
Рейтинг: 0 / 0
Помогите плиз с след. проблемой
    #34800785
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18select test_o2.*;
from test_o2;
where ASCAN(vibork, test_o2.pornam) != 0;
into table vremen.dbf

...
Т.е. мне не надо сортировать по порядку. Подскажите плиз. еще раз я не понял, как этот момент учесть Я ж написал что этот вариант только в случае когда порядок записей не важен. Или добавь order by если есть поле которое отсортированное в твоем порядке.

Чтобы выдержать твой порядок (в общем случае) используй второй вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create cursor curvib(nNom i, pornam i)
for i =  1  to kol_vo
   append blank in curvib
   repl in curvib nNom with i, pornam with vibork(i)
endfor 

select curvib.nNom, test_o2.*;
    from test_o2 inner join curvib on test_o2.pornam = curvib.pornam;
    order by curvib.nNom;
    into table vremen.dbf
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите плиз с след. проблемой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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