Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Адаптирование кода Excel в код FoxPro / 7 сообщений из 7, страница 1 из 1
19.04.2007, 11:02
    #34471950
Mar_Lazar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Подскажите, пожалуйста, как адаптировать данный код из Excel в код FoxPro?

With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password='""";User ID=Admin;Data
Source=F:\Baza\;Mode=Share Deny Write;E" _
, _
"xtended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path=""""
Jet OLEDB:Database Password=""";Jet OLEDB:Engine Ty" _
, _
"pe=18;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New D" _
, _
"atabase Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compa" _
, "ct=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False") _
, Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("baza1")
.Name = "BAZA"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "F:\Baza\baza1.DBF"
.Refresh BackgroundQuery=False
End With


Мне нужно вставить в Excel 2 базы FoxPro, первую базу я вставляю с помощью оператора

SELECT BAZA1
COPY TO REZULT\Itog_1.xls TYPE XL5 && преобразуем формат dbf в exls формат
затем хочу открыть второй лист в Excel и импортировать в него вторую базу с помощью оператора, который получила при создании макроса для данной операции (см.выше) в Excel,
но не могу переделать его под Fox, подскажите кто знает как это сделать, спасибо.

Может есть еще какие способы экспорта в Excel одновременно нескольких баз данных?
...
Рейтинг: 0 / 0
19.04.2007, 12:32
    #34472361
Погодин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Способов море.
1) Из Excel - создать книгу, страницы, и на каждой странице сделать запрос к внешним данным.
2) Из FoxPro - пример: (VFP7 и выше)

CLOSE ALL
SELECT * FROM 'F:\Baza\baza1.DBF' INTO ARRAY arr1
SELECT * FROM 'F:\Baza\baza2.DBF' INTO ARRAY arr2
oexcel=CREATEOBJECT('excel.application')
WITH oexcel
.visible=.t.
WITH .workbooks.open('f:\baza\myxls.xls')
WITH .sheets('mysheeet1')
.activate
nrows=.usedrange.rows.count
* здесь и далее вместо Z - количество полей в выборке (2 -> B, 3 -> C и т.д.)
.range('A1:Z'+ALLTRIM(STR(nrows))).delete(-4162)
.range('A1:Z'+ALLTRIM(STR(ALEN(arr1,1)+1))).value=ArrayPasser('arr1')
ENDWITH
WITH .sheets('mysheeet2')
.activate
.range('A1:Z'+ALLTRIM(STR(nrows))).delete(-4162)
.range('A1:Z'+ALLTRIM(STR(ALEN(arr2,1)+1))).value=ArrayPasser('arr2')
ENDWITH

* и т.д.

ENDWITH
ENDWITH
RELEASE oexcel,arr1,arr2
CLOSE ALL
******************
PROCEDURE ArrayPasser
PARAMETERS lcArrayName
RETURN @&lcArrayName

3) копировать таблицы в разные файлы xls и затем собирать их (управляя из FoxPro или Excel)
4) ...
...
Рейтинг: 0 / 0
19.04.2007, 17:06
    #34473638
Mar_Lazar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Проверка..
...
Рейтинг: 0 / 0
19.04.2007, 17:10
    #34473655
Mar_Lazar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Уважаемый,Погодин, огромное спасибо, очень помогли! Я воспользовалась Вашим вторым способом, все заработало и базы загружаются моментально.

Только не поняла процедуру:
PROCEDURE ArrayPasser
PARAMETERS lcArrayName
RETURN @&lcArrayName

Что она возвращает?
...
Рейтинг: 0 / 0
19.04.2007, 17:16
    #34473672
Mar_Lazar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Идея про сбор xls - файлов интересная, надо будет попробовать как-нибудь.

Вы использовали массивы при переброске в Excel, это где то описывается в литературе или 'опытным путем'? Подскажите литературу? интересно почитать.

Еще раз спасибо за помощь.
...
Рейтинг: 0 / 0
19.04.2007, 17:39
    #34473762
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Mar_LazarУважаемый,Погодин, огромное спасибо, очень помогли! Я воспользовалась Вашим вторым способом, все заработало и базы загружаются моментально.

Только не поняла процедуру:
PROCEDURE ArrayPasser
PARAMETERS lcArrayName
RETURN @&lcArrayName

Что она возвращает?
Указатель на массив.
...
Рейтинг: 0 / 0
20.04.2007, 10:22
    #34475047
Погодин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адаптирование кода Excel в код FoxPro
Да, эта ф-я возвращает указатель на массив. Способ содран из примера в одном из форумов (FIDO, что-ли ...). Из литературы - хорошо описано в М. Базиян "Использование VFP 6". Изд. "Вильямс", 1999. ISBN 5-8275-0042-9 (рус.).
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Адаптирование кода Excel в код FoxPro / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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