powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / цикл по таблице
10 сообщений из 10, страница 1 из 1
цикл по таблице
    #39068428
t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t
Гость
Добрый день.
Имеется таблица с одним полем и следующими записями:
№1
№2
№3
№4
№5
Необходимо все записи вывести на форму одной строкой
№1,№2,№3,№4,№5

Понимаю, что надо применять цикл SCAN ENDSCAN по таблице и записывать все в одну переменную, но не соображу до конца как
...
Рейтинг: 0 / 0
цикл по таблице
    #39068517
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
select table
i=''
scan
   i=i+','+alltr(field)
endscan


если надо без начальной запятой, то:
Код: sql
1.
SUBSTRC(i,2)


вернет все символы начиная со 2-ого левого.
...
Рейтинг: 0 / 0
цикл по таблице
    #39068991
t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t
Гость
T1gRa_NT,спасибо.
А если немного усложнить и добавить условие по второму столбцу

Имеется таблица с двумя полями и следующими записями:
№1 книга
№2 журнал
№3 журнал
№4 книга
№5 тетрадь
№6 книга
Необходимо все записи вывести на форму одной строкой учитывая одинаковые записи второго столбца
книга №1,№4,№6
журнал №2,№3
тетрадь №5

Я не могу понять как делать сравнения записей второго столбца.
Это пример условный, чтобы понять логику. На практике у меня большая таблица с большим количеством записей.
...
Рейтинг: 0 / 0
цикл по таблице
    #39069021
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tT1gRa_NT,спасибо.
А если немного усложнить и добавить условие по второму столбцу

Имеется таблица с двумя полями и следующими записями:
№1 книга
№2 журнал
№3 журнал
№4 книга
№5 тетрадь
№6 книга
Необходимо все записи вывести на форму одной строкой учитывая одинаковые записи второго столбца
книга №1,№4,№6
журнал №2,№3
тетрадь №5

Я не могу понять как делать сравнения записей второго столбца.
Это пример условный, чтобы понять логику. На практике у меня большая таблица с большим количеством записей.

Код: sql
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.
29.
30.
create cursor tt (tt_id i, pp_id i)
insert into tt values (1, 1)
insert into tt values (1, 2)
insert into tt values (1, 3)
insert into tt values (2, 4)
insert into tt values (2, 5)
create cursor pp (pp_id i, value c(10))
insert into pp values (1, 'раз')
insert into pp values (2, 'два')
insert into pp values (3, 'три')
insert into pp values (4, 'четыре')
insert into pp values (5, 'пять')

select t1.tt_id, ff(t1.tt_id)   ;
	from tt t1 					;
	group by t1.tt_id
	
	
function ff
lparameters tnId
local lcResult, lcValue
select value ;
	from pp t1 ;
		inner join tt t2 on t1.pp_id=t2.pp_id and t2.tt_id = tnId ;
	into array laArr
lcResult = ""
for each lcValue in laArr
	lcResult = lcResult + iif(!empty(lcResult),",","") + alltrim(lcValue)
endfor
return 	lcResult
...
Рейтинг: 0 / 0
цикл по таблице
    #39069060
t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t
Гость
PaulWist,
как все сложно
...
Рейтинг: 0 / 0
цикл по таблице
    #39070035
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как бы сделал я..., могут быть ошибки в синтаксисе(ну и заменить кирилицу на латиницу)... главное алгоритм...:-)
close tables
use моя_табл
index on второй_столб to моя_табл
select второй_столб from моя_табл group by второй_столб into cursor времен_табл
делаем цикл по этой времен_табл
go top && для перестраховки
do while !eof()
per_второй_столб=второй_столб
select моя_табл
SET KEY TO per_второй_столб && можно и set filtert но эта команда быстрее..
* Далее тот цикл, который вам привели
i=''
scan
i=i+','+alltr(первый_столб)
endscan
SUBSTRC(i,2)

*Тут выводим результат
? per_второй_столб," ",i
select времен_табл
skip
enddo
close tables
use
Этот код конечно медленнее, на какие-то наносекунды приведённого селекта... но может так будет понятнее..:-)
...
Рейтинг: 0 / 0
цикл по таблице
    #39070121
t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t
Гость
q1w1e1,
так действительно понятнее, спасибо
...
Рейтинг: 0 / 0
цикл по таблице
    #39070130
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А напомните, работает ли ограничение на 255 символов в переменной?
Ведь переменная являться строковой.
...
Рейтинг: 0 / 0
цикл по таблице
    #39070151
t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t
Гость
T1gRa_NT, в конечной итоговой строке максимум будет символов 50 не более
...
Рейтинг: 0 / 0
цикл по таблице
    #39070174
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T1gRa_NTА напомните, работает ли ограничение на 255 символов в переменной?
Ведь переменная являться строковой.
Размер поля максимум 254 символа. Для переменной - 16 Мб.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / цикл по таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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