powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с Excel
7 сообщений из 7, страница 1 из 1
Работа с Excel
    #38882788
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Имеются 2 таблицы:
1. clients (поля: code, name) - клиенты
2. phones (поля: cl_code, ac_phone) - номера телефонов
Как видно, code = cl_code.
Как получить список клиентов с телефонами в excel.

Выходная форма:

№ п/п | наименование клиентов | телефоны
1. | Иванов И.И. | тел1, тел2, тел3
...
Рейтинг: 0 / 0
Работа с Excel
    #38882841
1. Соединить две таблицы селектом
2. Вывести результат селекта в ексель:
2.1 Если нужно оформление (правильная ширина полей, разный шрифт, границы и заливка) - через ODBC
2.2 Если оформление не важно - COPY TO "отчет.xls" TYPE XL5
...
Рейтинг: 0 / 0
Работа с Excel
    #38882845
ODBC* - OLE
очепятка
...
Рейтинг: 0 / 0
Работа с Excel
    #38885542
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select * from clients c join phones p on c.[code]=p.[cl_code] вот так можно?
...
Рейтинг: 0 / 0
Работа с Excel
    #38885575
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
№ п/п | наименование клиентов | телефоны
1. | Иванов И.И. | тел1, тел2, тел3
как я понял, надо транспоировать таблицу.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
*развернем таблицу телефонов на три столбца

select name, t1.ac_phone, t2.ac_phone, t3.ac_phone ;
from clients c ;
inner join phones t1 on c.code = t1.cl_code ;
inner join phones t2 on c.code = t2.cl_code ;
inner join phones t3 on c.code = t3.cl_code ;
where (t1.cl_code<t2.cl_code or isnull(t2.cl_code)) and (t2.cl_code<t3.cl_code) or isnull(t3.cl_code)) ;
order by 1,2 into cursor cTmp 

*добавим поле № по порядку
select recno(), * from cTmp into cursor cTmp
*выгрузим в эксель
COPY TO "отчет.xls" TYPE XL5 


Это примерное решение, на деле надо потестировать, вполне возможно надо будет что нибудь подправить.
...
Рейтинг: 0 / 0
Работа с Excel
    #38887101
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GoshaS№ п/п | наименование клиентов | телефоны
1. | Иванов И.И. | тел1, тел2, тел3
как я понял, надо транспоировать таблицу.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
*развернем таблицу телефонов на три столбца

select name, t1.ac_phone, t2.ac_phone, t3.ac_phone ;
from clients c ;
inner join phones t1 on c.code = t1.cl_code ;
inner join phones t2 on c.code = t2.cl_code ;
inner join phones t3 on c.code = t3.cl_code ;
where (t1.cl_code<t2.cl_code or isnull(t2.cl_code)) and (t2.cl_code<t3.cl_code) or isnull(t3.cl_code)) ;
order by 1,2 into cursor cTmp 

*добавим поле № по порядку
select recno(), * from cTmp into cursor cTmp
*выгрузим в эксель
COPY TO "отчет.xls" TYPE XL5 


Это примерное решение, на деле надо потестировать, вполне возможно надо будет что нибудь подправить.

А если не 3 номера, а их много, тогда как?
...
Рейтинг: 0 / 0
Работа с Excel
    #38887787
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опишите задачу более конкретней. Для школы, для работы, что хотите на выходе. К примеру, можно все телефоны поместить в одно поле? Скажем домашний:222222; сотовый: 222222222; рабочий: 22222222; факс: 22222222
Будет ли расширятся список видов телефонов? Будет ли какой либо справочник видов и пр. пр.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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