powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Создание таблицы
17 сообщений из 17, страница 1 из 1
Создание таблицы
    #32498187
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создать программно таблицу, в которую данные будут дабавляться из двумерного массива, причем структура таблицы должна совпадать с размерностью таблицы. Размерность вводится пользователем с клавиатуры.

Заранее спасибо.
...
Рейтинг: 0 / 0
Создание таблицы
    #32498263
На основе данных пользователей нужно создать дополнительный массив, описывающий структуру таблицы.

Массив описания структуры - это двумерный массив, содержащий 4 столбца:
1 - наименование поля (строка)
2 - тип поля (символ)
3 - размер поля (число)
4 - размер десятичной части (для полей типа Numeric - число)
Число строк в массиве соответствует числу полей создаваемой таблицы

После заполнения этого массива дайте команду:

CREATE TABLE MyTable FROM ARRAY aStruct
...
Рейтинг: 0 / 0
Создание таблицы
    #32499823
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Вячеслав Клепинин :

С массивом все получилось, таблица размерностью M на N создается. Проблема как ее распечатать, ведь размерность всегда разная, отчеты в VFP думаю не помогут, т.к. там надо заполнять поле DETAIL. Может лучше данные выдать в EXCEL, но я в этом совсем не силен, направте меня немного, плиз.
...
Рейтинг: 0 / 0
Создание таблицы
    #32499852
Конечно, отчёты пока хреновые. Говорят, что в VFP9 будет лучше. А об экспорте в Excel уже так много написано... Вот пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
LOCAL i, n_Row, n_FCount, o_Excel, a_Buff[ 1 ]

o_Excel = CREATEOBJECT('Excel.Application')
IF TYPE('o_Excel') != 'O'
    = MESSAGEBOX('Невозможно запустить Excel!', 16 ,'Отмена')
    RETURN
ENDIF
WITH o_Excel
    .WorkBooks.add()
    .Sheets[ 1 ].Select
    .Visible = .t.
    SELECT MyTable
    n_FCount = FCOUNT()
    n_Row =  1 
    GO TOP 
    SCAN
         SCATTER TO a_Buff
         FOR i =  1  TO n_FCount
              .CELLS(n_Row, i).VALUE = a_Buff[i]
         ENDFOR
         n_Row = n_Row +  1 
    ENDSCAN
ENDWITH

Ваша табличка один-к-одному будет перенесена в Excel.
Как отформатировать колонки Excel и вывести заголовки - см. FAQ
...
Рейтинг: 0 / 0
Создание таблицы
    #32500861
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все хорошо, только не смог найти изменение программно ориентации страницы.
Вот так не работает:

Код: plaintext
1.
2.
3.
With .Sheets( 1 )        
        .Name = "Матрицы"         
        .Orientation = xlLandscape
Endwith   

Так тоже:
Код: plaintext
1.
2.
With .Sheets( 1 ).PageSetup
      .Orientation = xlLandscape
EndWith         

Что не так делаю ?
...
Рейтинг: 0 / 0
Создание таблицы
    #32501013
xlLandscape - это константа экселя, и фокс про неё, конечно, ничего не знает. Посмотреть значения констант экселя можно в его Object Browser, для чего опять-же нужно перейти в VBA.
А вообще xlLandscape = 2.

Успехов!
...
Рейтинг: 0 / 0
Создание таблицы
    #32502608
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в EXCELе я эту константу знаю, а мне-то надо в фоксе, плиз подскажите её родимую. Очень надо !!!
...
Рейтинг: 0 / 0
Создание таблицы
    #32502757
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тебе же говорят = 2, подставляй значение.
...
Рейтинг: 0 / 0
Создание таблицы
    #32502821
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не реагирует ни на какой вариант:

xlLandscape = 2
xlLandscape = 1
xlLandscape = 0

Как был книжный, так и остался.
...
Рейтинг: 0 / 0
Создание таблицы
    #32502840
Код: plaintext
1.
2.
With .Sheets( 1 )        
    .Orientation =  2      && xlLandscape
Endwith 
...
Рейтинг: 0 / 0
Создание таблицы
    #32502858
Попробуйте вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
WITH o_Excel
    .WorkBooks.add()
    WITH .ActiveSheet.PageSetup
        .Orientation =  2  && xlLandscape
        .PaperSize =  9    && xlPaperA4
        .Zoom =  100 
    ENDWITH
    .Sheets("Лист1").Name = "Новый лист"
    .Visible = .t.
    SELECT MyTable
    n_FCount = FCOUNT()
    n_Row =  1 
    GO TOP 
    SCAN
         SCATTER TO a_Buff
         FOR i =  1  TO n_FCount
              .CELLS(n_Row, i).VALUE = a_Buff[i]
         ENDFOR
         n_Row = n_Row +  1 
    ENDSCAN
ENDWITH
...
Рейтинг: 0 / 0
Создание таблицы
    #32502862
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так уже пробовал давно, не находит :(( (кусок кода)

Код: plaintext
1.
2.
3.
4.
5.
.WorkBooks.add()    
    .Sheets[ 1 ].Select
    With .Sheets( 1 )        
        .Name ="Матрицы"       
        .Orientation =  2 
    Endwith   

пишет:

Код: plaintext
OLE error code 0x80020006: Неизвестное имя
...
Рейтинг: 0 / 0
Создание таблицы
    #32502882
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, c .ActiveSheet.PageSetup пробовал раньше, но сейчас все заработало !!!
Спасибо всем и в частности Вячеславу Клепинину {-0
...
Рейтинг: 0 / 0
Создание таблицы
    #32502918
Ну вот только что попробовал. Создал форму, на ней кнопку, в методе Click кнопки написал следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
LOCAL o_Excel

o_Excel = CREATEOBJECT('Excel.Application')
IF TYPE('o_Excel') != 'O'
    = MESSAGEBOX('Невозможно запустить Excel!', 16 ,'Отмена')
    RETURN
ENDIF

WITH o_Excel
    .WorkBooks.add()
    WITH .ActiveSheet.PageSetup
        .Orientation =  2  && xlLandscape
        .PaperSize =  9    && xlPaperA4
        .Zoom =  100 
    ENDWITH
    .Sheets( 1 ).Name = "Новый лист"
    .Visible = .t.          && Разрешаем экселю показать себя
ENDWITH 

Запускаю форму, нажимаю кнопку, через несколько секунд появляется эксель (ему много времени надо на установку формата листа).
На листе экселя вижу ограничительную вертикальную полосу листа. Вхожу в меню "Параметры страницы" и смотрю, что действительно стоит альбом.
Скопируйте этот код. Если не заработает - тогда можно вешаться
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Создание таблицы
    #38465013
rustam009
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Клепинин,

m.lobook.activesheet.pagesetup.orientation=2
так по моему лучше выглядит
...
Рейтинг: 0 / 0
Создание таблицы
    #38465054
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rustam009Вячеслав Клепинин,

m.lobook.activesheet.pagesetup.orientation=2
так по моему лучше выглядит

1. Чем лучше?

2. Надо сказать Славе, обсуждают его пост 10-летней давности
...
Рейтинг: 0 / 0
Создание таблицы
    #38465116
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist2. Надо сказать Славе, обсуждают его пост 10-летней давности

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


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