|
|
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, как адаптировать данный код из 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 одновременно нескольких баз данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 11:02 |
|
||
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Способов море. 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) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 12:32 |
|
||
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Проверка.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:06 |
|
||
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Уважаемый,Погодин, огромное спасибо, очень помогли! Я воспользовалась Вашим вторым способом, все заработало и базы загружаются моментально. Только не поняла процедуру: PROCEDURE ArrayPasser PARAMETERS lcArrayName RETURN @&lcArrayName Что она возвращает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:10 |
|
||
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Идея про сбор xls - файлов интересная, надо будет попробовать как-нибудь. Вы использовали массивы при переброске в Excel, это где то описывается в литературе или 'опытным путем'? Подскажите литературу? интересно почитать. Еще раз спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:16 |
|
||
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Mar_LazarУважаемый,Погодин, огромное спасибо, очень помогли! Я воспользовалась Вашим вторым способом, все заработало и базы загружаются моментально. Только не поняла процедуру: PROCEDURE ArrayPasser PARAMETERS lcArrayName RETURN @&lcArrayName Что она возвращает? Указатель на массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:39 |
|
||
|
Адаптирование кода Excel в код FoxPro
|
|||
|---|---|---|---|
|
#18+
Да, эта ф-я возвращает указатель на массив. Способ содран из примера в одном из форумов (FIDO, что-ли ...). Из литературы - хорошо описано в М. Базиян "Использование VFP 6". Изд. "Вильямс", 1999. ISBN 5-8275-0042-9 (рус.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 10:22 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34473638&tid=1589503]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 290ms |

| 0 / 0 |
